Назад | Перейти на главную страницу

iptables POSTROUTING не работает в локальной области

Я использовал команду

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.