>Помогите пожалуйста отыскать засаду.
>Требуется из локальной сети установить 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^/