Я использовал команду
iptables -t nat -I POSTROUTING -o $INTERFACE -p tcp -j SNAT --to-source $IP
чтобы мои серверные пакеты были видны как $ IP. Но проблема в том, что это не работало в локальной области, поэтому, когда я отправляю что-то на адрес 10.X.X.X, я отображается не как $ 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.X.X.28 (форма eth0: 0)
Более простой способ использовать другой адрес источника для локально сгенерированного пакета - использовать 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.