iptables POSTROUTING 在本地区域不起作用

iptables POSTROUTING 在本地区域不起作用

我使用命令

iptables -t nat -I POSTROUTING -o $INTERFACE -p tcp  -j SNAT --to-source $IP

使我的服务器数据包可见为 $IP。但问题是,它在本地区域内不起作用,所以当我向地址 10.XXX 发送某些内容时,我不再显示为 $IP,而是显示为较旧的 IP。

编辑:有3个接口:

auto eth0
iface eth0 inet static
    address 46.X.X.152
    netmask 255.255.255.0
    network 46.X.X.0
    broadcast 46.X.X.255
    gateway 46.X.X.254

post-up /sbin/ifconfig eth0:0 178.X.X.28 netmask 255.255.255.255 broadcast 178.X.X.28
post-down /sbin/ifconfig eth0:0 down
post-up /sbin/ifconfig eth0:1 178.X.X.27 netmask 255.255.255.255 broadcast 178.X.X.27
post-down /sbin/ifconfig eth0:1 down

在我的 iptables 规则中 $INTERFACE=eth0 且 $IP 是 178.XX28(来自 eth0:0)

答案1

对本地生成的数据包使用不同的源地址的更简单的方法是使用src路由参数。

如果你添加这样的路线:

ip route add 10.0.0.0/8 via 46.X.X.254 dev eth0 src 178.X.X.28

它应该将此源地址用作 10.0.0.0/8 目的地。

相关内容