Нестабильная работа НАТ. Как найти ошибку?

Автор: HiDux Дата: 05.06.2007 09:05 ASPLinux 11.2
Новая проблема. То работает НАТ, то не работает. Мозги уже пухнут.
Запускаю Ethereal и смотрю, что происходит с пакетами. Сбрасываю настройки iptables. Затем настраиваю только в таблицу NAT. Остальные правила разрешены по умолчанию. И ничего не работает.
Если же добавляю правила в таблицу Filter, то начинает работать, но стоит перезагрузиться (а иногда и просто ни стого ни сего) и NAT перестаёт работать. В Ethereal это хорошо видно.

Существуют ли инструменты для тестирования и настройки iptables?
Кстати, еще установлен пакет iproute, может он мешает?

Вот файл полученный коммандой iptables-save, может сдесь где ошибка?

# Generated by iptables-save v1.3.5 on Mon Jun 4 16:49:39 2007
*nat
:-PREROUTING ACCEPT [7:954]
:-POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [17:3115]
-A PREROUTING -p tcp -m tcp --dport 3129 -j DNAT --to-destination 192.168.5.2:9120
-A PREROUTING -p tcp -m tcp --dport 8094 -j DNAT --to-destination 194.67.23.8:110
-A PREROUTING -p tcp -m tcp --dport 8095 -j DNAT --to-destination 194.67.23.114:25
-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.183.2:8091
-A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.183.2:8090
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Jun 4 16:49:39 2007
# Generated by iptables-save v1.3.5 on Mon Jun 4 16:49:39 2007
*mangle
:-PREROUTING ACCEPT [316296:15816700]
:INPUT ACCEPT [315683:15781544]
:FORWARD ACCEPT [613:35156]
:OUTPUT ACCEPT [316434:35220097]
:-POSTROUTING ACCEPT [317011:35254369]
COMMIT
# Completed on Mon Jun 4 16:49:39 2007
# Generated by iptables-save v1.3.5 on Mon Jun 4 16:49:39 2007
*filter
:INPUT ACCEPT [5:200]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5:200]
:MyRULES - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -j MyRULES
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state NEW -j MyRULES
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state NEW -j MyRULES
-A MyRULES -j ACCEPT
COMMIT
# Completed on Mon Jun 4 16:49:39 2007
Re: Нестабильная работа НАТ. Как найти ошибку? 05.06.2007 09:52wusup >-A PREROUTING -p tcp -m tcp --dport 3129 -j DNAT --to-destination 192.168.5.2:9120

Здесь вы пробрасываете порт в обход nat в локалку

>-A PREROUTING -p tcp -m tcp --dport 8094 -j DNAT --to-destination 194.67.23.8:110
>-A PREROUTING -p tcp -m tcp --dport 8095 -j DNAT --to-destination 194.67.23.114:25

Весьма интерестные правила, я их не понял, посколько проброс идет ...
на mail.ru причем на отдельные хосты mail.ru ибо весь mail.ru это 194.67.0.0/18,
вообще что вы хотели этим сказать? mail.ru это у вас в локалке?

>-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.183.2:8091
>-A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.183.2:8090

Тут тоже непонятки, 192.168.183.2 — это почтовый сервер в ДМЗ c нестандартыми портами?


>-A POSTROUTING -o eth0 -j MASQUERADE

И после всего этого подымается nat.

>A INPUT -m state --state NEW -j MyRULES
...
>-A MyRULES -j ACCEPT

Тоже к чему это? ACCEPT сразу написать нельзя?


>Кстати, еще установлен пакет iproute, может он мешает?

Ни в коем случае.

>Существуют ли инструменты для тестирования и настройки iptables?

Что вы имеете в виду под тестированием? Настройка лучше всего осуществлятеся
руками при помощи хорошей документации под рукой.
Из GUI могу порекомендовать FireStarter.
Но не одна GUI не заменит изучения/понимания
правил iptables.
Re: Нестабильная работа НАТ. Как найти ошибку? 05.06.2007 10:01wusup Сформулируйте что нужно на словах, правила напишем.
Re: Нестабильная работа НАТ. Как найти ошибку? 05.06.2007 12:16HiDux Огромное спасибо за отклики.
Поскольку появились:
>Сформулируйте что нужно на словах, правила напишем.
То я поясню.
1. Правила уже написены и они работают, но не стабильно.

2. Разбор таблиц:
--- Таблица NAT
>-A PREROUTING -p tcp -m tcp --dport 3129 -j DNAT --to-destination 192.168.5.2:9120
>-A PREROUTING -p tcp -m tcp --dport 8094 -j DNAT --to-destination 194.67.23.8:110
>-A PREROUTING -p tcp -m tcp --dport 8095 -j DNAT --to-destination 194.67.23.114:25
>-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.183.2:8091
>-A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.183.2:8090

Означает, что пользователь из сети локальной сети 192.168.5.0 обращаясь на сервер 192.168.3.3 будет перенатравлен:
-- порт 3129 --> на локальный HTTP сервер 192.168.5.2 на порт 9120
-- порт 8094 --> на почторый сервер pop.bk.ru на порт 110
-- порт 8095 --> на почторый сервер smtp.bk.ru на порт 25
-- порт 25 --> на локальный почторый сервер 192.168.183.2 на порт 8091
-- порт 110 --> на локальный почторый сервер 192.168.183.2 на порт 8090

Чтобы осушествлялась подмена в NAT не только адреса назначения, но и приемника (или проще, чтоб ответы внешних серверов проходили в локальную сеть):
>-A POSTROUTING -o eth0 -j MASQUERADE

--- Таблица MANGLE
Везде ACCEPT

--- Таблица FILTER
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -j MyRULES
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state NEW -j MyRULES
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state NEW -j MyRULES
-A MyRULES -j ACCEPT

Если соединение ESTABLISHED или RELATED, то ACCEPT
Если NEW, то переход по цепочке MyRULES.

Цепочка MyRULES пока ACCEPT, но в последствие в неё будут добавлены другие правила.

Вот что я хотел получить.
Re: Нестабильная работа НАТ. Как найти ошибку? 05.06.2007 12:57wusup >Означает, что пользователь из сети локальной сети 192.168.5.0 обращаясь на сервер 192.168.3.3 будет перенатравлен:

Это не так.

Если у вас на этой машине только межсетевой экран, прикрывающий локальную сеть, т.е. никаких сервисов не предоставляется
То ваши правила должны быть такими:

---
#Сбрасываем правила и цепочки.
sudo /sbin/iptables -F
sudo /sbin/iptables -X

#Устанавливаем политику по умолчанию "все запрещено"
sudo /sbin/iptables -P INPUT DROP
sudo /sbin/iptables -P OUTPUT DROP
sudo /sbin/iptables -P FORWARD DROP

#Разрешаем локальный трафик
sudo /sbin/iptables -A INPUT -i lo -j ACCEPT
sudo /sbin/iptables -A OUTPUT -o lo -j ACCEPT

#Разрешаем кому можно ходить через МЭ (Ваши основные правила должны быть в этой цепочке)
sudo /sbin/iptables -A FORWARD -s 192.168.5.0/24 -j ACCEPT
sudo /sbin/iptables -A FORWARD -d 192.168.5.0/24 -j ACCEPT

#Делаем маскарад
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#Сохраняем правила
sudo /sbin/iptables-save > /etc/sysconfig/iptables
---

Если машина используется еще под что-то то вы напишите.
Re: Нестабильная работа НАТ. Как найти ошибку? 05.06.2007 14:39HiDux
>Если у вас на этой машине только межсетевой экран, прикрывающий локальную >сеть, т.е. никаких сервисов не предоставляется
>То ваши правила должны быть такими:

Если Вы заметили, в преведенном мной листинге, сетевой экран полностью отключен. Моя задача переназначить порты и разабраться в NAT.

>>Означает, что пользователь из сети локальной сети 192.168.5.0 обращаясь >>на сервер 192.168.3.3 будет перенатравлен:

>Это не так.

Почему же это?
Re: Нестабильная работа НАТ. Как найти ошибку? 06.06.2007 09:25wusup >Почему же это?

Вы неверно истолковываете действие DNAT

>Моя задача переназначить порты и разабраться в NAT.

Для этого хватит одного действия
---
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
---
RSS-материал