我有两台通过 VPN 隧道连接的 Linux 机器:
VPN Client <-------> VPN Server
10.74.1.10/24 10.74.1.1/24
每个节点都有 NIC 来访问自己的网络:
---------> VPN Client <-------------------> VPN Server <------
10.37.0.205/24 10.74.1.10/24 10.74.1.1/24 10.74.0.1/24
当然,我在每个网络上都有不同的 Linux 计算机(Linux A、Linux B 等):
Linux A <----> VPN Client <-----> VPN Server <----> Linux B
从VPN Client
,我可以 ping 到VPN Server
和 类似的计算机Linux B
。
尽管从Linux A
,我可以 ping 到两台VPN Client
机器的接口(10.32.0.205
和10.74.1.10
),但结果我无法 ping 通VPN Server
地址10.74.1.1
或网络 B 上的任何计算机。
我尝试在上添加一条新路线Linux A
,但收到以下信息:
$ sudo ip route add 10.74.1.1 via 10.74.1.10 dev eth0
RTNETLINK answers: Network is unreachable
$ sudo ip route add 10.74.1.1 via 10.37.0.205 dev eth0
RTNETLINK answers: Network is unreachable
我该如何让它工作?也许配置一下VPN Client
?
编辑:
路由表如下VPN Client
:
default via 10.37.0.1 dev eth0
10.37.0.0/24 dev eth0 proto kernel scope link src 10.37.0.205
10.74.0.0/16 via 10.74.1.9 dev tun0
10.74.1.0/24 via 10.74.1.9 dev tun0
10.74.1.9 dev tun0 proto kernel scope link src 10.74.1.10
128.0.0.0/1 via 10.74.1.9 dev tun0
上的路由表Linux A
:
default via 10.37.1.1 dev eth0
10.37.1.0/24 dev eth0 proto kernel scope link src 10.37.1.217
此外,我已在VPN Client
$ sudo sysctl -w net.ipv4.conf.all.forwarding=1
编辑2:
过滤数据包VPN Client
:
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
答案1
您使用哪种 VPN?
听起来你VPN Client
应该对来自 的流量进行 NATLinux A
到你的VPN Server
& Linux B
。并且/或者:你的Linux B
没有返回你的 的路由VPN Client
。
答案2
我一直在努力寻找类似问题的简单解决方案,并发现 sshuttle 至少对于我而言是最简单的临时解决方案。
一台 Linux 机器可以访问 VPN,而通过在另一台机器上运行 sshuttle,我也可以访问该 VPN。
此外,可以使用 cidr 块作为最后一个参数轻松过滤路由。这提高了第二台机器的可用性,因为并非每个呼叫都会转到启用 VPN 的机器。
sshuttle --dns -r [email protected] 10.208.0.0/16
关联:https://github.com/sshuttle/sshuttle
仅需在客户端上安装。客户端只需通过 SSH 访问启用 VPN 的机器即可。
答案3
如果添加路由,则下一跳必须是本地链路。Linux A
只能直接到达地址 10.37.1.0/24。但
ip route add 10.74.1.1 via 10.74.1.10 dev eth0
说:将数据包发送到 10.74.1.1 到链路本地主机 10.74.1.10。由于 10.74.1.10 不是链路本地(或:未配置为链路本地),因此您会收到错误消息Network is unreachable
。
下一跳必须是的本地地址VPN Client
:
ip route add 10.74.1.1 via 10.37.0.205 dev eth0