无法到达第 4 跳,PC 作为路由器,静态路由

网络工程 路由 路由器
2022-03-05 19:30:40

我正在尝试将 PC 设置为路由器,但不知何故它无法正常工作。我有以下设置:

CLIENT A
192.168.21.1/28
l
l
192.168.21.5/28
ROUTER X
192.168.21.25/28
l
l
192.168.21.17/28
CLIENT B (with openvpn tunnel to server)
10.29.0.4/22
l
l
10.29.0.1/22
SERVER

从 CLIENT B 到 SERVER 的连接是通过 Internet 连接的,但在这里应该无关紧要。

现在问题如下:

  • 我可以从 ROUTER X SERVER ping
  • 我可以从 CLIENT A ping 地址 (CLIENT B) 10.29.0.4 (我可以通过 traceroute 看到,它运行正常)
  • 我无法从客户端 A ping 服务器

和相反的方向相同:

  • 我可以从 SERVER ping 地址 192.168.21.25 (Router X)
  • 我无法 ping 地址 192.168.21.5

对我来说,它似乎与生存时间(TTL)有关,因为数据包无法到达第 4 跳,但我在互联网上没有找到任何关于它的信息。

route -n on server

192.168.21.16   10.29.0.4       255.255.255.240 UG    17     0        0 tun0
192.168.21.0    10.29.0.4       255.255.255.240 UG    17     0        0 tun0
192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.29.0.0       0.0.0.0         255.255.252.0   U     0      0        0 tun0
XXXXXXXX    0.0.0.0         255.255.0.0     U     1002   0        0 eth1
0.0.0.0         YYYYYYYY  0.0.0.0         UG    0      0        0 eth1

在客户端 BI 上添加了两个 iptables 规则:

-A FORWARD -i eth0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT

你有什么想法,怎么了?感谢您的任何意见。

2个回答

听起来您在两个地方的一个(或两个)地方都错过了 192.168.21.0/28 的路线。

  1. 如果 openvpn 以“服务器”模式运行,则 openpvn 内部的内部路由表
  2. 在客户端 B

问题是,tun 模式下的 OpenVPN 使用 iroute 参数在内部管理远程网络。

要解决此问题,需要更改为 tap 并添加以下 iptables 规则:

iptables -A FORWARD -i eth0 -o tap0 -j ACCEPT
iptables -A FORWARD -i tap0 -o eth0 -j ACCEPT

但随后我们将获得 tcp over tcp,这会导致延迟。我认为没有其他解决方案可以使用 OpenVPN 进行路由。

在https://gitlab.labs.nic.cz/labs/bird/wikis/FAQ#dynamic-routing-issues-with-openvpn上提到了这个问题