Срочно нужна помощь!
Один канал в инет, прокидываю 20,110,3000 порты на внутренний адрес 192.168.0.1, внутренний интерфейс шлюза 192.168.0.3, внешний xxx.xxx.xxx.xxx, заметил такой глюк: когда мой сервер получает почту иногда (довольно часто) в логах почтовика я вижу не нормальный IP, а IP 192.168.0.3 и какой-то левый порт (выше 1024), и дальше конект с ним обрываеться, я для примера проверил, с mail.ru - всё ок, c newmail.ru - вот такая штука.
В чём глюк - понять не могу, подскажите пожалуйста!# Generated by iptables-save v1.2.7a on Tue Jul 1 13:55:27 2003
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp -d xxx.xxx.xxx.xxx --dport 3000 -j DNAT --to-destination 192.168.0.1:3000
-A PREROUTING -p tcp -m tcp -d xxx.xxx.xxx.xxx --dport 110 -j DNAT --to-destination 192.168.0.1:110
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j SNAT --to-source xxx.xxx.xxx.xxx
-A POSTROUTING -p tcp -m tcp -s 192.168.0.0/24 -d 192.168.0.1 --dport 25 -j SNAT --to-source 192.168.0.3
-A OUTPUT -p tcp -m tcp -d xxx.xxx.xxx.xxx --dport 25 -j DNAT --to-destination 192.168.0.1
-A OUTPUT -p tcp -m tcp -d xxx.xxx.xxx.xxx --dport 110 -j DNAT --to-destination 192.168.0.1
-A POSTROUTING -p tcp -m tcp -s 192.168.0.0/24 -d 192.168.0.1 --dport 110 -j SNAT --to-source 192.168.0.3
-A PREROUTING -p tcp -m tcp -s 192.168.0.0/24 ! -d xxx.xxx.xxx.xxx --dport 80 -j REDIRECT --to-ports 3128
-A OUTPUT -p tcp -m tcp -d xxx.xxx.xxx.xxx --dport 3000 -j DNAT --to-destination 192.168.0.1
-A POSTROUTING -p tcp -m tcp -s 192.168.0.0/24 -d 192.168.0.1 --dport 3000 -j SNAT --to-source 192.168.0.3
-A PREROUTING -p tcp -m tcp -d xxx.xxx.xxx.xxx --dport 25 -j DNAT --to-destination 192.168.0.1:25
-A OUTPUT -p tcp -m tcp -d xxx.xxx.xxx.xxx --dport 110 -j DNAT --to-destination 192.168.0.1
COMMIT
# Completed on Tue Jul 1 13:55:27 2003
# Generated by iptables-save v1.2.7a on Tue Jul 1 13:55:27 2003
*mangle
:PREROUTING ACCEPT [499754:37206763]
:INPUT ACCEPT [486470:34363196]
:FORWARD ACCEPT [10643:2739633]
:OUTPUT ACCEPT [483521:34450535]
:POSTROUTING ACCEPT [494163:37190128]
COMMIT
# Completed on Tue Jul 1 13:55:27 2003
# Generated by iptables-save v1.2.7a on Tue Jul 1 13:55:27 2003
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -p tcp -m tcp -d 192.168.0.1 -i eth0 --dport 25 -j ACCEPT
-A FORWARD -p tcp -m tcp -d 192.168.0.1 -i eth0 --dport 110 -j ACCEPT
-A FORWARD -p tcp -m tcp -d 192.168.0.1 -i eth0 --dport 3000 -j ACCEPT
COMMIT
# Completed on Tue Jul 1 13:55:27 2003
-A POSTROUTING -p tcp -m tcp -s 192.168.0.0/24 -d 192.168.0.1 --dport 25 -j SNAT --to-source 192.168.0.3
- это не оно? И зачем?
Это чтобы сам сервер 192.168.0.1 мог обращаясь к внещнему адресу корректно себя видеть. Я эту строчку времмено убрал, вроде почты юольше посыпалось, но и описанный глюк проскакивает.....
Да не глюк это. Что сказано, то и делает... Ведь внутренний интерфейс тоже подпадает под 192.168.0.0/24.
Дык, значит в том правиле надо не 192.168.0.0/24, а указать диапазон 192.168.0.2-254 ?
Смотря зачем это делается...
Может, достаточно snat наружу и dnat внутрь? при нормально настроенном dns обычно хватает... Тогда стОит аккуратно выделить этот канал
('-p tcp -s 192.168.0.1 -o $external_interface --dport 25' наружу, например),
а следующими правилами остальные хосты...
Хе! Как написано, как я понимаю, весь траф от 192.168.0.1 будет заворачиваться на 25 порт... А надо это, как я писал выше, чтобы 192.168.0.1 по dnat'ченым портам видел себя нормально. Или я чего-то не понимаю?
>Или я чего-то не понимаю?
Виноват. У меня такое:
# для определенных хостов
-A POSTROUTING -p tcp -s 192.168.0.1 -o $external_interface --dport 25 \
-j SNAT --to-source $ext_ip
#для остальных
... --to-source $ext_ip_1
#или другие правилаТут, скорее, я не понимаю - что есть 'видел себя нормально'? Зачем dnat из локальной сети в нее же?
Без той строчки с DNAT'ом, когда я конекчусь с сервера 192.168.0.1 на проброшеный порт он не может соединиться (вернее, соединяется и соединение сразу разрываеться.)
Еще раз. Со шлюзом понятно.
Где почтовик установлен? Какой? Какие соединения не работают - снаружи, изнутри... Для внутреннего домена есть mx-запись в dns? Для внешнего домена - есть? Что в логах почтовика? Трафик смотрел, что за соединения устанавливаются/пытаются установиться перед отказом соединения?
Так, наблюдения показали: после того, как убрал ту строчку - всё снаружи заработало нормально, НО сам сервер(почтовый, 192.168.0.1) к себе через внешний интерфейс не может приконектиться. На это можно забить, главное что всё снаружи работает. :)
>НО сам сервер(почтовый, 192.168.0.1) к себе через внешний интерфейс
>не может приконектиться.В чем у него это заключается? В логах ошибки? Какие? Может, ДНС внутренний настроить стОит?
Беру конекчусь к telnet'ом к xxx.xxx.xxx.xxx:25 c этого почтового сервера - ничего не вижу, в логах почтовика вижу:
Fri 2003-07-11 12:57:51: [760:7421:1] Accepting SMTP connection from [192.168.0.1 : 3146]
Fri 2003-07-11 12:57:51: [760:7421:1] Socket connection closed by the other side (how rude!)
Fri 2003-07-11 12:57:51: [760:7421:1] Winsock Error 10053 Software caused a connection abort.
Fri 2003-07-11 12:57:51: [760:7421:1] Unexpected socket closure
Проверь порядок правил, посмотри сниффером, как пакеты ходят и где рубятся.
А зачем ему самому с собой, да еще и через 'наружу', беседовать? Это я так, просто не понимаю...
Да особо и не надо, я ж говорил, так - для порядка. :)