Linux 网关不转发数据包

Linux 网关不转发数据包

我将 Smoothwall 盒设置为 192.168.65.1 的主网关。我还在 192.168.65.160 处设置了 Proxmox 虚拟服务器,用于建立出站 VPN 连接。由于 Smoothwall 盒是默认网关,因此我想将其设置为将所有发往 VPN 目标(例如 192.168.1.0/24 子网)的本地 192.168.65.0/24 网络流量路由到 192.168.65.160 地址。

Smoothwall 配置为 /proc/sys/net/ipv4/ip_forward 设置为 1。路由表设置如下(eth0 = RED 接口):

$ ip route
192.168.65.0/24 dev eth1  proto kernel  scope link  src 192.168.65.1 
192.168.1.0/24 via 192.168.65.160 dev eth1 
x.x.x.x/xx dev eth0  proto kernel  scope link  src x.x.x.x 
default via x.x.x.x dev eth0

如果我从 Smoothwall 盒子 ping 一个 VPN 地址,它就可以正常工作。但是,当我尝试从本地 192.168.65.0/24 子网上的任何其他主机 ping 一个 VPN 地址时,我得到“目标端口无法访问”的结果。如果我在本地主机上设置路由以将 VPN 流量直接发送到 192.168.65.160 网关,那就可以正常工作。只有当我尝试通过 Smoothwall 盒子路由 VPN 流量时,它才会无法通过。

这是怎么回事?

答案1

好的,让我们从介绍基础知识开始...看起来 Smoothwall 可能是这里的问题...

在 Smoothwall 的控制台上输入以下内容,看看是否能解决您的问题:

iptables -I FORWARD 1 -s 192.168.65.0/24 -i eth1 -d 192.168.1.0/24 -j ACCEPT

请注意,这是一个临时修复,用于测试问题是否与 smoothwall 有关。如果有效,则只需在 smoothwall 上添加一条规则以允许该流量,或将此行添加到 rc.local 之类的内容中(可能不是最好的主意... :) )

答案2

您需要设置 SNAT 以使该设置正常工作。

iptables -t nat -I POSTROUTING -o eth1 -d 192.168.1.0/24 -j SNAT --to-source 192.168.65.1

现在发生的情况是,来自局域网的流量到达防火墙,并被发送到 promox 服务器,当另一方响应时,promox 服务器将其发送到目的地,当发送初始数据包时,promox 服务器将其发送到实际的局域网主机,但该主机拒绝它,因为它期望从 smoothwall 盒中得到回复

答案3

看来您的配置应该可以工作。我不认为您在这里需要 NAT。

只是有个想法:Smoothwall 是否可能拒绝转发试图通过它们进入的同一网络接口(在本例中为 eth1)退出的数据包?在典型情况下,此类流量可能被视为异常或可疑,Smoothwall 可能会因此设置为阻止它。从 ping 收到“目标端口无法访问”消息表示您收到了 ICMP 错误消息,我怀疑这些消息是由 Smoothwall 在拒绝这些数据包时生成的。

Smoothwall 是否提供日志记录功能?如果是,您应该检查日志以查看我的理论是否站得住脚。

相关内容