Шпилька NAT с динамическим WAN IP

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?

Tek
источник
1
Корпоративное решение основной проблемы состоит в том, чтобы связаться с вашим интернет-провайдером и модернизировать ваше подключение от плана проживания до (небольшого) бизнес-плана с фиксированным IP-адресом (диапазон).
HBruijn
@HBruijn Могу ли я перенести это в супер пользователя? Вопрос, кажется, не приветствуется здесь
Tek

Ответы:

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
Сильвио Массина
источник
Это сработало для меня. В частности, первое правило сработало, но трафик, предназначенный для IP-адреса локальной сети маршрутизатора, перешел на веб-сервер. Второе правило исправило это.
Брайан Минтон
1

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

Стефан Палетта
источник
1
Я удалил рабочее правило и заменил его на iptables -t nat -A PREROUTING -i eth1 -m addrtype --dst-type LOCAL -p tcp --dport 80 -j DNAT --to-destination 192.168.0.9... Однако я больше не могу получить доступ к своему серверу через публичный IP. Пока единственное, что работает, - это набирать IP-адрес специально через-d x.x.x.x
Tek
-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

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

Евгений
источник
Это
кажется
4
Добро пожаловать в Супер пользователя. Ваш ответ может выиграть от более подробной информации. Пожалуйста, отредактируйте его, чтобы объяснить, как он работает и как он отвечает на вопрос ОП.
Twisty Impersonator