我使用命令
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 目的地。