Помогите пожалуйста отыскать засаду.
Требуется из локальной сети установить 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 вторым правилом идет разрешение всех пакетов из локальной сети. Т.е. они в любом случае должны попадать на выход. В чем может быть проблема?
Сервер рабочий.
>Помогите пожалуйста отыскать засаду.
>Требуется из локальной сети установить 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^/
тебе правильно сказали, что читать документацию нужно.
прочитай 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
Спасибо за ответы. Правила поправлю. Но фишка оказалась более банальной: надо было просто выпнить команду : echo 1 > /proc/sys/net/ipv4/ip_forward . Другими словами форвардинг был отключен. :)
>Спасибо за ответы. Правила поправлю. Но фишка оказалась более банальной: надо было просто выпнить команду : echo 1 > /proc/sys/net/ipv4/ip_forward . Другими словами форвардинг был отключен. :)
Дык не еби мозги больше.
шлюз без форвардинга - подстолом