这是我的 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 为隧道端点添加特定路由,则可行。