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

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

已修复:结果是 BatchyX 所说的问题(远程端缺少 172.16.101.0/24 路由​​)和远程端的 tinc 无法运行 -up 脚本(该脚本不可执行)的组合。

现在一切都很顺利,感谢大家的帮助:)

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

我的问题出奇地难以解释,所以我会把它分解成几个小部分,提前为冗长的文字表示歉意:)

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

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

我想要设置的是,我的 VLAN20 网络可以使用托管提供商的服务器作为其网关(其外部 IP),而不是我家里的外部网关。

为此,我在家里有一个服务器,它有两个网络接口,一个网卡在 VLAN1 上,一个网卡在 VLAN20 上。

假设我有以下 IP:

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,从托管服务提供商的服务器 ping 10.1.0.2。

除此之外,我已经进行了设置,以便家里的服务器使用隧道作为默认网关,这一切都是从家里的实际服务器进行的,我的问题是我无法让 VLAN20 网络上的客户端访问互联网。

所以我遇到的问题是我无法弄清楚如何设置路由,以便 172.16.101.0/24 网络使用隧道上的默认网关。

家里的服务器上的路线如下:

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

从家里的服务器到 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 很不擅长,但这里我尝试展示我正在尝试设置的内容: https://i.stack.imgur.com/ff2R6.png(由于我的声誉不够高,因此还不能内联)。

答案1

这个配置有几个 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 $INTERFACE。这将删除 eth1 上的默认网关并将其替换为您自己的网关。您可能还想通过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 的路由,因此将尝试通过其公共接口进行路由。返回路径基本上已损坏,因此 traceroute 有效,但 ping 无效。

只需在远程站点通过 tun0 添加一条到 172.16.101.0/24 的路由就可以了。

相关内容