OpenVPN 重定向网关破坏其他隧道

OpenVPN 重定向网关破坏其他隧道

这是我的 ifconfig 设置:

eth1      Link encap:Ethernet  HWaddr 54:04:a6:49:99:16  
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::5604:a6ff:fe49:9916/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:33325389 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19876569 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:38511610122 (38.5 GB)  TX bytes:5030880286 (5.0 GB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1532251 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1532251 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:128544929 (128.5 MB)  TX bytes:128544929 (128.5 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:113 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1663663 errors:0 dropped:489668 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:14523 (14.5 KB)  TX bytes:1140762511 (1.1 GB)

tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.9.0.6  P-t-P:10.9.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1623870 errors:0 dropped:570939 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:828 (828.0 B)  TX bytes:1130753499 (1.1 GB)

wlan0     Link encap:Ethernet  HWaddr 00:21:00:e6:c8:aa  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

所以我有这个 IP 路由设置:

default via 192.168.0.1 dev eth1  proto static 
10.8.0.0/24 via 10.8.0.5 dev tun0 
10.8.0.5 dev tun0  proto kernel  scope link  src 10.8.0.6 
10.9.0.0/24 via 10.9.0.5 dev tun1 
10.9.0.5 dev tun1  proto kernel  scope link  src 10.9.0.6 
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.12  metric 1 
192.168.1.0/24 via 10.8.0.5 dev tun0 

它按预期工作。我能够通过两个隧道 (openvpn) ping 机器。

然而,当我添加

sudo ip route add 0.0.0.0/1 via 10.9.0.5 dev tun1 
sudo ip route add 128.0.0.0/1 via 10.9.0.5 dev tun1 

一切都崩溃了。我再也无法通过任何一条隧道 ping 通机器。

我真的不明白为什么。因为我有一个“更高前缀”的路由定义为

10.8.0.0/24 via 10.8.0.5 dev tun0 

为什么新的“较低前缀”路由阻止我 ping 10.8.0.1?


就上下文而言,我正在运行一个 openvpn 服务器,此客户端连接到该服务器并被分配了 10.8.0.6 ip。之后,它连接到另一个 openvpn 服务器 (10.8.0.10),该服务器连接到同一个“原始”服务器 (10.8.0.1)。第一台服务器实际上只是将我放在与第二台服务器相同的子网上(第二台服务器没有静态 ip,无法进行端口转发)。我添加的 2 个低前缀路由是“重定向网关”选项的一部分,因为我试图通过第二台服务器转发所有流量。


编辑:

我正在添加所有配置文件。(我将省略不相关或默认的设置)

  • main > 尝试实现互联网流量路由的主客户端
  • alpha > 将所有人置于同一子网的服务器
  • beta > 主要想要路由其流量的服务器/客户端。(注意,beta 没有静态 IP,无法进行端口转发)

alpha 服务器.conf

port 443
proto udp
dev tun
server 10.8.0.0 255.255.255.0
client-to-client
# broadcast beta's subnet
route 192.168.1.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"

beta client.conf(用于连接 alpha 服务器)

client
dev tun
proto udp
remote [alpha IP] 443

beta server.conf(流量应该通过此服务器路由)

port 444
proto udp
dev tun
server 10.9.0.0 255.255.255.0
client-to-client
push "redirect-gateway local def1"
push "dhcp-option DNS 8.8.8.8"

主 alpha 客户端.conf

client
dev tun
proto udp
remote [alpha IP] 443

主测试版客户端.conf

client
dev tun
proto udp
remote 10.8.0.10 444

编辑2:

我尝试在 alpha 服务器上使用反向 SSH 隧道,而不是使用中间的 openvpn 服务器,但是我遇到了完全相同的问题。

我像这样从 beta 版开始建立隧道

ssh -Nf -R \*:444:localhost:444 root@[alpha IP] 

并将主 client.conf 更改为连接到 [alpha IP]:444,而不是 10.8.0.10。

即使没有重定向网关,配置也能完美运行,但是一旦重定向网关添加了 0.0.0.0/1 和 128.0.0.0/1 路由,我就无法再 ping 通任何地方了。

答案1

您正在将隧道的外部端点路由到隧道地址。这样行不通。如果您通过 eth1 为隧道端点添加特定路由,则可行。

相关内容