Доброго дня!
В организации собрали свой почтовый сервер, от старого, находится на внешний площадки, не отказываемся и организовали проброс запросов клиентов на внешний почтовик. Проблема в том, что после перезагрузки правила проброса не отрабатываются, помогает только ручная загрузка из файла. /etc/network/interfaces
# Generated by iptables-save v1.3.6 on Thu Aug 23 14:08:24 2007
*nat
:PREROUTING ACCEPT [2726:215711]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [11:678]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 120 -j DNAT --to-destination 195.128.120.27:110
-A PREROUTING -i eth0 -p tcp -m tcp --dport 121 -j DNAT --to-destination 194.85.88.226:110
-A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x
-A OUTPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 120 -j DNAT --to-destination 195.128.120.27:110
-A OUTPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 121 -j DNAT --to-destination 194.85.88.226:110
COMMIT
# Completed on Thu Aug 23 14:08:24 2007
# Generated by iptables-save v1.3.6 on Thu Aug 23 14:08:24 2007
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.0.0.0/255.0.0.0 -j DROP
-A INPUT -d 10.0.0.0/255.0.0.0 -j DROP
-A INPUT -s 172.16.0.0/255.240.0.0 -j DROP
-A INPUT -d 172.16.0.0/255.240.0.0 -j DROP
-A INPUT -s 224.0.0.0/240.0.0.0 -j DROP
-A INPUT -d 224.0.0.0/240.0.0.0 -j DROP
-A INPUT -s 240.0.0.0/248.0.0.0 -j DROP
-A INPUT -d 240.0.0.0/248.0.0.0 -j DROP
-A INPUT -s 127.0.0.1 -j DROP
-A INPUT -d 127.0.0.1 -j DROP
-A INPUT -d 192.168.0.255 -i eth0 -p udp -m udp --dport 137:138 -j DROP
-A INPUT -d 192.168.0.255 -i eth0 -p udp -m udp --dport 8765 -j DROP
-A INPUT -d 192.168.0.255 -i eth0 -p tcp -m tcp --dport 135:139 -j DROP
-A INPUT -s 192.168.0.0/255.255.255.0 -i eth0 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 15000:15050 -j ACCEPT
-A INPUT -d x.x.x.x -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -s 10.0.0.0/255.0.0.0 -j DROP
-A OUTPUT -d 10.0.0.0/255.0.0.0 -j DROP
-A OUTPUT -s 172.16.0.0/255.240.0.0 -j DROP
-A OUTPUT -d 172.16.0.0/255.240.0.0 -j DROP
-A OUTPUT -s 224.0.0.0/240.0.0.0 -j DROP
-A OUTPUT -d 224.0.0.0/240.0.0.0 -j DROP
-A OUTPUT -s 240.0.0.0/248.0.0.0 -j DROP
-A OUTPUT -d 240.0.0.0/248.0.0.0 -j DROP
-A OUTPUT -s 192.168.0.252 -j ACCEPT
-A OUTPUT -s x.x.x.x -j ACCEPT
COMMIT
# Completed on Thu Aug 23 14:08:24 2007
я так понимаю ОС Debian? Где у вас находится файл фаервола? всмысле его местоположение в файловой системе? Нужно что бы он был в /etc/network/if-up.d и были необходимые права!
я так понимаю ОС Debian? Где у вас находится файл фаервола? всмысле его местоположение в файловой системе? Нужно что бы он был в /etc/network/if-up.d и были необходимые права!
Я понял Вашу мысль, но она имеет смысл только если правила оформлены в виде скрипта. Я же пошел более простым путем - создал файл правил, загрузил его и прописал правила для сохранения/восстановления правил через директивы pre-up/post-down в /etc/network/interfaces. И ведь работает, правила сохраняются и восстанавливаются. Проблемы только с DNAT.
опиши подробней где у тебя находится файл и как он себя ведет при старте системы?
Где физически находится файл на мой взгляд абсолютно не принципиально. Итак, как я делал - созданный файл правил я загрузил в память командой sh firewall, где firewall - файл правил. Все нормально загрузилось и правила действуют. Далее я в /etc/network/interfaces прописал команду на сохранение правил в файл при выключении - post-down /sbin/iptables-save > /etc/network/firewall и команду на восстановление правил при загрузке - pre-up /sbin/iptables-restore < etc/network/firewall. Все отрабатывает как надо за исключением DNAT. Замечу что такой же принцип сохранения/восстановления я применяю и на проки-сервере, все работает как положено.
Я не понимаю почему возникают проблемы с DNAT. После перезагрузки я специально просматривал правила, они были корректно загружены и полностью соответствовали тем которые я составлял.
на прокси сервере вы так же используете DNAT? он отрабатывает там? если есть!
Нет, там DNAT-а нет. Там используется тот же принцип загрузки/восстановления правил, а именно через директивы pre-up и post-down файла /etc/network/interfaces.
на прокси сервере вы так же используете DNAT? он отрабатывает там? если есть!
Нет, там DNAT-а нет. Там используется тот же принцип загрузки/восстановления правил, а именно через директивы pre-up и post-down файла /etc/network/interfaces.
может стоит почитать об этом? Как ведет себя DNAT при таком подходе применения правил!
может стоит почитать об этом? Как ведет себя DNAT при таком подходе применения правил!
С удовольствием, а где? Я это к тому что как то неожидал что при использовании DNAT есть такие тонкости. И тогда еще вопрос - чем мой подход применения правил неверен/некорректен? Ведь насколько я понимаю данные директивы, pre-up и иже с ней, именно для того и предназначены - выполнять некие команды до/вовремя/после активации сети.
Где у вас находится файл фаервола? всмысле его местоположение в файловой системе? Нужно что бы он был в /etc/network/if-up.d и были необходимые права!
Спасибо за данный совет. Уже опробовал и все работает. Но на мой взгляд это только один из способов.
прочитать естесвенно можно в сети интернет. Ну если работает тот вариант который описал я, почему бы его не использовать?
Да вариант работает и на данный момент я его использую. Но хочется разобраться почему подругому нет.
А по поводу почитать - дайте хоть ссылку какую. По поводу iptables и DNAT я читал, иначе как все настраивал. Меня очень смущает это -
может стоит почитать об этом? Как ведет себя DNAT при таком подходе применения правил!
Я что то не могу сообразить чем мой подход неверен/уникален мой подход применения правил. Пожалуйста, прошу не из лени или вредности. Просто не могу сообразить что мне искать.
У меня такая проблема была в Мандрива, долго капал.... выяснил, что загрузка правил ни как не влияет на опцию ядра ip_forward (т.е. не ставит в "1"), т.е. её надо туда занести!
Возможно у вас тоже с этим связана проблема?
Чем больше я узнаю людей, тем больше я люблю компьютеры
У меня такая проблема была в Мандрива, долго капал.... выяснил, что загрузка правил ни как не влияет на опцию ядра ip_forward (т.е. не ставит в "1"), т.е. её надо туда занести!
Возможно у вас тоже с этим связана проблема?
Интересное предположение, но сомнительное. Почему сомнительное? Потому что ip_forward я выставлял в любом случае, а проблемы возникли только когда понадобился DNAT. Сейчас подгружаю файл с правилами перед понятием интерфейсов, работает.
Но интересно найти причину антагонизма iptables-restore и DNAT-а. Может попозже "покопаю" еще на эту тему.