1

Доброго дня форумчане!
Народ помогайте, в голове даже мысли стали работать по правилам iptables.

Итак, есть локальная сеть 192.168.2.0/24 и шлюз debian 192.168.2.1.
Шлюз имеет на своем борту:
eth0 - локальная сеть 192.168.2.0/24
eth1 - городская сеть 10.0.0.0/8
eth2 -ppp0 - Интернет с динамическим ип адресом

В локальной сети есть машина 192.168.2.10 с веб-сервером на порту 88. Также на этой машине настроен dyndns.
Подменяю адрес назначения

 Консоль:
-A PREROUTING -p tcp -m tcp -i ppp0 --dport 88 -j DNAT --to-destination 192.168.2.10:88

Работает, т.е. из Интернета адрес mydomen.dyndns.me открывается и все прекрасно работает.

Понятно что нужно сделать SNAT для внутри локальных пользователей и для самого шлюза.
На просторах Интернета , да и на этом форуме, данная проблема описана миллиард раз. Везде решение проблемы описано с использованием статического внешнего адреса, а в данном случае динамика. Ладно, была не была.

Пишу в nat'e

 Консоль:
-A OUTPUT -p tcp -d x.x.x.x --dport 88 -j DNAT --to-destination 192.168.2.10:88

работает, шлюз при команде
 Консоль:

открывает страницу веб-сервера 192.168.2.10

x.x.x.x - динамический адрес, уже видел пару скриптов в Интернете как следить за состоянием адреса и его подмены в правиле в результате смены оного.

Теперь локальные пользователи

 Консоль:
-A POSTROUTING -p tcp -m tcp -d 192.168.2.10 --dport 88 -j SNAT --to-source 192.168.2.1:88

иии..... НЕ работает, из локальной сети набираю в браузере адрес http://mydomen.dyndns.me, в адресной строке браузера появляется внешний ип адрес и порт x.x.x.x:88 и все, страница не доступна.

filter FORWARD
:FORWARD ACCEPT [0:0]
-A FORWARD -d 192.168.2.0/24 -i ppp0 -o eth0 -j ACCEPT
-A FORWARD -d 192.168.2.0/24 -i eth1 -o eth0 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -i eth0 -o ppp0 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -i eth0 -o eth1 -j ACCEPT
-A FORWARD -j DROP

Народ помогите, с меня меня печенки, пиво и миллиард тонн Магаданского снега(печенки по желанию) ab

Если ты можешь исправить последствия своей ошибки - ты ещё не ошибся!

2 (30.01.2015 12:55:33 отредактировано )

jonnix пишет:

НЕ работает

SNAT и DNAT — взаимоисключающие вещи.  Вам не нужен SNAT, раз вы DNAT сделали.

просто укажите дистанцию в DNAT'е на интерфейс, к которому у вас подключены локальные юзеры.

jonnix пишет:

Везде решение проблемы описано с использованием статического внешнего адреса

потому что для SNAT необходим статический адрес. Если его нет, то нужен DNAT.


jonnix пишет:

Народ помогите, с меня меня печенки, пиво и миллиард тонн Магаданского снега(печенки по желанию)

http://www.opennet.ru/docs/RUS/iptables/

там готовые примеры есть, кстати.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

3

drBatty пишет:

просто укажите дистанцию в DNAT'е на интерфейс, к которому у вас подключены локальные юзеры.

Спасибо огромное, готового решения и не ждал. Посидел, перечитал пару моментов в iptables, построил и сложил схему хождения пакетов в голове. Еще раз спасибо за наводку. С меня пенный напиток и как обещал свежайший снег с Колымы ab Добавил одно правило. Все работает.
Тема закрыта.

Если ты можешь исправить последствия своей ошибки - ты ещё не ошибся!

4

jonnix, тогда "спасибку" поставьте. Хотя лично мне всё равно, у меня их и так,как удурака фантиков  bo

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)