我有两台通过 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
另外,我激活了IP转发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
你用的是什么类型的VPN?
听起来你
VPN Client
应该 NAT 流量从Linux A
你的VPN Server
&Linux B
。和/或:您Linux B
没有返回您的VPN Client
.我一直在努力寻找与此类似的问题的简单解决方案,并发现 sshuttle 至少对于我来说是一个临时解决方案是最简单的。
一台 linux 机器可以访问 VPN,并且在另一台机器上运行 sshuttle 我可以访问该 VPN。
此外,可以使用 cidr 块作为最后一个参数轻松过滤路由。这提高了第二台机器的可用性,因为不是每个呼叫都转到启用 VPN 的机器上。
链接:https ://github.com/sshuttle/sshuttle
仅在客户端上需要安装。为此,只需 SSH 访问启用 VPN 的机器即可。
如果添加路由,则下一跃点必须是本地链路。
Linux A
只能直接到达地址 10.37.1.0/24。但说:向链路本地主机 10.74.1.10 发送一个到 10.74.1.1 的数据包。由于 10.74.1.10 不是本地链接(或:未配置为这样),您会收到错误消息
Network is unreachable
。下一跳必须是 的本地地址
VPN Client
: