在ubuntu中,不能通过VPN路由特定的子网

我有问题通过VPN路由stream量。

这是我的设置

我有3个主机,我们称它们为A,B和Z.

B和Z在10.10.10.x子网中有VPN连接子网A和B在10.10.12.x子网中有直接连接

我希望能够将stream量从A路由到Z,例如:

A <= 10.10.12.254 [LAN] 10.10.12.111 => B <= 10.10.10.152 [VPN] 10.10.10.10 => Z 

在主机B上,我设置了ip_forwarding:net.ipv4.ip_forward = 1

并在主机B上进行路由:

 [root@hostB: ~]# ip route 10.10.10.10 dev ppp0 proto kernel scope link src 10.10.10.152 10.10.12.0/24 dev eth1 proto kernel scope link src 10.10.12.111 10.10.10.0/24 dev ppp0 scope link 169.254.0.0/16 dev eth1 scope link 

主机A上的路由:

 [root@hostA: ~]# ip route 10.10.10.0 via 10.10.12.111 dev eth1 10.10.12.0/24 dev eth1 proto kernel scope link src 10.10.12.254 169.254.0.0/16 dev eth1 scope link default via 192.168.1.1 dev eth0 

但是仍然无法从主机A ping 10.10.10.10。

任何想法 ? 我正在拉我的头发。

在Z上,假设10.10.10.10在ppp0上:

 route add -net 10.10.12.0 netmask 255.255.255.0 gw 10.10.10.152 dev ppp0 

这会给你一个回到A的路线

就像迈克说的…你需要两条路线……在A —> Z和反之亦然……在Z —> A ……如果你错过了其中的一个,他们将无法相互通信,因为数据包不知道返回源的路由…所以你需要在A和Z上做这样的事情…

在Z路由上add -net 10.10.12.0 netmask 255.255.255.0 gw 1​​0.10.10.152 dev ppp0

在路由上添加-net 10.10.10.0 netmask 255.255.255.0 gw 1​​0.10.12.111 dev ppp0

让我们知道!