3

У меня динамический IP WAN, поэтому, если он изменится, мои iptables больше не будут применяться.

Вот моя рабочая шпилька nat, где xxxx - мой WAN IP

br0 - LAN

eth1 - WAN

-A PREROUTING -d x.x.x.x -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9
-A POSTROUTING -s 192.168.0.0/27 -d 192.168.0.0/27 -o br0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/27 -o eth1 -j MASQUERADE

Есть ли другой способ, где мне не нужно использовать -d x.x.x.x специально в случае изменения моего WAN IP?

3 ответа3

2

Перепишите первое правило следующим образом:

iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9

Обратите внимание, что это также перенаправит подключения к порту 80 по IP-адресу локальной сети.

Если вы хотите избежать этого, с помощью LAN IP a.b.c.d измените правило следующим образом:

iptables -t nat -A PREROUTING \! -d a.b.c.d -m addrtype --dst-type LOCAL -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9
1

В правиле DNAT вместо -d x.x.x.x используйте -i eth1 -m addrtype --dst-type LOCAL .

-1
-A PREROUTING -d $(ifconfig eth1 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}') -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9

или что-то типа того...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .