URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 2899
[ Назад ]

Исходное сообщение
"iptables: Не перебрасываются пакеты."

Отправлено mylan , 15-Сен-06 10:59 
Помогите пожалуйста отыскать засаду.
Требуется из локальной сети установить smtps соединение (порт 465) с inet-сервером. Для переброса пакетов пишу в таблице nat следующие правила:
* LOC_IP и INET_IP - адреса моего шлюза в инет
  Client_IP - адрес локальной станции, с которой требуется уст. соединение
  Serv_IP - inet адрес сервера в интернете

-A PREROUTING -s $Client_IP -d LOC_IP -p tcp --dport 465 -j DNAT --to-destination $Serv_IP
-A POSTROUTING -d $Serv_IP -p tcp --dport 465 -j SNAT --to-source INET_IP
-A PREROUTING -d INET_IP -p tcp --dport 465 -j DNAT --to-destination Client_IP
-A POSTROUTING -d Client_IP -p tcp --dport 465 -j SNAT --to-source LOC_IP

После проделанной попытки iptables -L -nvx -t nat показывает, что через первое правило (PREROUTING)пакеты благополучно прошли. Но через POSTROUTING - НЕТ!!! Куда они могли деться? В цепочке INPUT таблицы filter вторым правилом идет разрешение всех пакетов из локальной сети. Т.е. они в любом случае должны попадать на выход. В чем может быть проблема?
Сервер рабочий.


Содержание

Сообщения в этом обсуждении
"iptables: Не перебрасываются пакеты."
Отправлено perece , 15-Сен-06 21:25 
>Помогите пожалуйста отыскать засаду.
>Требуется из локальной сети установить smtps соединение (порт 465) с inet-сервером. Для
>переброса пакетов пишу в таблице nat следующие правила:
>* LOC_IP и INET_IP - адреса моего шлюза в инет
>  Client_IP - адрес локальной станции, с которой требуется уст. соединение
>
>  Serv_IP - inet адрес сервера в интернете
>
>-A PREROUTING -s $Client_IP -d LOC_IP -p tcp --dport 465 -j DNAT
>--to-destination $Serv_IP
>-A POSTROUTING -d $Serv_IP -p tcp --dport 465 -j SNAT --to-source INET_IP
>
>-A PREROUTING -d INET_IP -p tcp --dport 465 -j DNAT --to-destination Client_IP
>
>-A POSTROUTING -d Client_IP -p tcp --dport 465 -j SNAT --to-source LOC_IP
>
>
>После проделанной попытки iptables -L -nvx -t nat показывает, что через первое
>правило (PREROUTING)пакеты благополучно прошли. Но через POSTROUTING - НЕТ!!! Куда они
>могли деться? В цепочке INPUT таблицы filter вторым правилом идет разрешение
>всех пакетов из локальной сети. Т.е. они в любом случае должны
>попадать на выход. В чем может быть проблема?
>Сервер рабочий.

Эээээ... хорошенько покурить документацию не помешало бы...
из написаного следует, что вы ожидаете от NAT подмены адресов в каждом мроходящем пакете строго в соответствии с тем, что вы написали. но на деле это не так.

iptables nat траверсится только первым пакетом, создающим соединение. остальные переделываются "по образу и подобию" в соответствии с мех-мом отслеживания соединений, который тут же и активизируется, как только вы добавили что-то в nat (строго говоря, он активизируется даже если просто вывести таблицу, iptables -t nat -L. специфика автолоадера).
таким образом, для достижения цели достаточно всего двух строчек, одну для трансляции адреса удаленного сервера, другую - для трансляции адреса клиента.

>-A PREROUTING -s $Client_IP -d LOC_IP -p tcp --dport 465 -j DNAT --to-destination $Serv_IP
не очень также понятно - вы пытаетесь завернуть _весь_ smtps-траффик? кому бы он не направлялся? непонятненько, зачем. или это опять же артефакт мисинтерпретации концепций?

\^P^/


"iptables: Не перебрасываются пакеты."
Отправлено chocholl , 21-Сен-06 08:38 
тебе правильно сказали, что читать документацию нужно.
прочитай man iptables
правило рабочее вот

$IPTABLES -t nat -A POSTROUTING -p tcp -o $OUT_IFACE -s $Client_IP -d $Serv_IP --dport 465 -j SNAT --to-source $INET_IP

$IPTABLES -A FORWARD -o $OUT_IFACE -p tcp -s $Client_IP -d $Serv_IP --dport 465 -j ACCEPT



"iptables: Не перебрасываются пакеты."
Отправлено mylan , 18-Окт-06 10:59 
Спасибо за ответы. Правила поправлю. Но фишка оказалась более банальной: надо было просто выпнить команду  : echo 1 > /proc/sys/net/ipv4/ip_forward  . Другими словами форвардинг был отключен. :)



"iptables: Не перебрасываются пакеты."
Отправлено nnm , 27-Ноя-06 18:19 
>Спасибо за ответы. Правила поправлю. Но фишка оказалась более банальной: надо было просто выпнить команду  : echo 1 > /proc/sys/net/ipv4/ip_forward  . Другими словами форвардинг был отключен. :)


Дык не еби мозги больше.


"iptables: Не перебрасываются пакеты."
Отправлено clocker , 14-Мрт-07 23:56 
шлюз без форвардинга - подстолом