通过隧道路由第二个vlan的默认网关(linux / tinc)

修正:原来是BatchyX所说的组合(在远程端缺less172.16.101.0/24路由),而远程端的tinc无法运行一个脚本(该脚本不可执行)。

所以现在一切正常,谢谢大家的帮助:)

================================================== ===========================

我的问题出人意料地难以解释,所以我会把它分解成更小的部分,提前对不起长文本:)

我有一个服务器在托pipe服务提供商,有一个公共IP,这台服务器正在运行tinc(vpn软件)。

在家里,我有两个vlan,VLAN1(我的普通子网,用于pc等,坐在NAT后面)和VLAN20,用于我的vmware实验室。 环境。

我想设置的是,使我的VLAN20networking,可以使用主机提供商的服务器作为其网关(其外部IP),而不是我在家里的外部网关。

为此,我在家里有一台服务器,它有两个networking接口,一个在VLAN1上,另一个在VLAN20上。

可以说我有以下ips:

Server at hosting provider: Public IP: 123.123.123.123 (eth0) Private IP: 10.1.0.1/24 (tun0) Network at home: VLAN1 - 192.168.1.0/24 (.1 is the gateway) VLAN20 - 172.16.101.0/24 Network on server at home: NIC1 (VLAN1) - 192.168.1.50/24 (eth0) NIC2 (VLAN20) - 172.16.101.1/24 (eth1) Tunnel - 10.1.0.2/24 (tun0) 

我已经设置了tinc,以便我家里的服务器在隧道上工作,我可以从家里的服务器ping 10.1.0.1,从托pipe服务提供商的服务器ping 10.1.0.1。

除此之外,我已经build立了这样的服务器在家里使用隧道的默认网关,这一切都从家里的实际服务器,我的问题是,我不能让VLAN20networking上的客户端访问互联网。

所以我的问题是,我不知道如何设置路由,以便172.16.101.0/24networking使用隧道上的默认网关。

在家里的服务器上的路线是这样的:

 root@home:/etc/tinc/vpn/hosts# ip route 0.0.0.0/1 dev tun0 scope link default via 192.168.1.1 dev eth0 10.1.0.0/24 dev tun0 proto kernel scope link src 10.1.0.2 123.123.132.123 via 192.168.1.1 dev eth0 128.0.0.0/1 dev tun0 scope link 172.16.101.0/24 dev eth1 proto kernel scope link src 172.16.101.1 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50 

当隧道到达时,/ 1会被添加:

 ip route add 0.0.0.0/1 dev $INTERFACE ip route add 128.0.0.0/1 dev $INTERFACE 

从家里的服务器做一个traceroute到8.8.8.8:

 root@home:/etc/tinc/vpn/hosts# traceroute -s 10.1.0.2 8.8.8.8 -n traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 10.1.0.1 33.681 ms 33.698 ms 33.658 ms 2 Router_At_Hosting_Provider 34.930 ms 34.907 ms 34.875 ms 

所以“隧道”子网(10.1.0.0)可以正常工作在隧道上的默认网关上。

这也工作正常:

 root@home:/etc/tinc/vpn/hosts# traceroute -s 172.16.101.1 10.1.0.2 -n traceroute to 10.1.0.2 (10.1.0.2), 30 hops max, 60 byte packets 1 10.1.0.2 0.032 ms 0.003 ms 0.005 ms 

但是我的问题是这样的:

 root@home:/etc/tinc/vpn/hosts# traceroute -s 172.16.101.1 8.8.8.8 -n traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 * * * 2 * * * 3 * * * 

如果任何人有任何指示,我应该看,这将是非常感激。

(debian安装完成后,两台服务器所做的更改的完整列表,请访问http://pastebin.com/r3Vsvycq )

编辑我很糟糕的Visio,但这里是我试图展示我想要设置: http : //i.stack.imgur.com/ff2R6.png (不能内联,因为我的代表不够高)。

在这个configuration中有几个WTF:

 ip route add 0.0.0.0/1 dev $INTERFACE ip route add 128.0.0.0/1 dev $INTERFACE 

帮助自己,并通过ip route change default dev $INTERFACEreplace。 这将删除eth1上的默认网关,并将其replace为您自己的。 您可能还需要在该路由上设置首选源地址,在末尾添加src 10.1.0.2

如果您想要保留默认路由,但添加自己的路由,则只需将原始默认路由的度量值更改为1或更多。 当你添加你的默认路由时,它将覆盖(但不会破坏)原来的默认路由。

另外,VPN启动时到10.1.0.0/24的路由有点重复,因为它已经被默认路由覆盖了。

你想作为一个路由表看起来更像这样:

 default dev tun0 scope link src 10.1.0.2 default via 192.168.1.1 dev eth0 metric 1 123.123.132.123 via 192.168.1.1 dev eth0 172.16.101.0/24 dev eth1 proto kernel scope link src 172.16.101.1 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50 

现在这个路由表是正确的。 现在唯一的问题在于你的服务器没有到172.16.101.0/24的路由,所以会试图通过它的公共接口进行路由。 返回path基本上是断开的,所以traceroute工作,但ping不行。

只要通过tun0在远程站点添加一条路由到172.16.101.0/24就行了。