Linux 上的路由表不受尊重

Linux 上的路由表不受尊重


我有一个非常具体的问题,即构建一个 Linux VPN 端点(带有外部 VPN 网关),该端点应通过隧道路由某些网络,通过默认网关路由其他网络。Linux
VPN 应该对 VPN 对等体的传出连接进行 NAT。

设置如下:
互联网网关 LAN 192.168.25.1/24
VPN 网关 LAN 10.45.99.2/24
(VPN隧道10.45.99.1到网络87.115.17.40/29,单独连接到互联网)

Linux VPN 路由器
   eth0 192.168.25.71/24
   eth0:503 10.45.99.1/24
     默认 192.168.25.1
     通过 10.45.99.2 路由到 87.115.17.40/29
     (send_redirects 已禁用,ip_forward 已启用)
Linux 客户端(多个):
   eth0 192.168.25.x/24
   默认 192.168.25.1
   通过 192.168.25.71 路由到 87.115.17.40/29

从 VPN 路由器通过隧道 ping 机器正常。

现在我想通过 VPN 网关从我的客户端建立路由,并且客户端数据包被路由到 192.168.25.1!traceroute 输出显示数据包被路由到 192.168.25.71,然后路由到 192.168.25.1。

因此该路线在前进中不受尊重!

IPTables 和路由:

ip 路由显示
87.115.17.40/29 通过 10.45.99.2 dev eth0
10.45.99.0/24 dev eth0 proto 内核范围链接 src 10.45.99.1
192.168.25.0/24 dev eth0 proto 内核范围链接 src 192.168.25.71
默认通过 192.168.25.1 dev eth0

iptables -A 输入 -i eth0:503 -j 拒绝
iptables -t nat -A POSTROUTING -o eth0:503 -j MASQUERADE
iptables -A FORWARD -i eth0:503 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A 转发 -s 192.168.25.0/24 -o eth0:503 -j 接受


那么我的设置有什么问题?从本地主机正确选择了路由,但所有客户端都被转发到 Internet 网关。

谢谢你的帮助,马库斯

20121025:至少发现了一个问题:MASQUERADE 总是会掩饰为接口的主 IP。使用 SNAT 时,我能够为 NAT 分配地址(可以是别名地址)。数据包无法路由的问题仍然存在。我正在使用 Debian 6。

在虚拟 Ubuntu 12.04 中尝试使用 SNAT 进行相同设置,最终将其路由。所以 Debian 似乎存在问题,或者是我遗漏了一些设置!

工作设置是(在 Ubuntu 12.04 服务器中):

iptables -t nat -A POSTROUTING -d 87.115.17.40/29 -j SNAT --to-source=10.45.99.1

因此我们必须重新安装服务器,没想到这可能是 Debian 的问题!
可能在内核(2.6.32 -> 3.2.0)和 iptables(1.4.8 -> 1.4.12)之间。

相关内容