>>>>> On Thu, 13 Mar 2003 14:40:08 +0200
>>>>> "S" == Sergey  <[EMAIL PROTECTED]> wrote:
S> 
S> Привет всем !
S> Как с помощью iptables сделать такую переадресацию:
S> a.b.c.d:XXXX -> e.f.g.h:YYYY
S> Все мои попытки закончились тем, что позволяет или изменить порт, или
S> же получателя. Вместе - никак. Подскажите плс, в какую сторону копать.

У нас роутер. Получает пакет (TCP?) на a.b.c.d:XXXX.
Хотим его завернуть на e.f.g.h:YYYY. Это делается DNAT'ом:

iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --destination-port XXXX \ 
         -j DNAT --to-destination e.f.g.h:YYYY

Но это не все. Если оставить так, то ответы (в частности,  <SYN,ACK> на 
инициирующий SYN) пойдут на source адрес. Но пойдут они с source
address'ом e.f.g.h, а ждут-то с a.b.c.d. Решить это можно так: в
POSTROUTING поменяем source address пакета, который изначально был
послан на a.b.c.d на адрес router'а.

iptables -t nat -A POSTROUTING -p tcp -d e.f.g.h --destination-port YYYY\
         -j SNAT --to-source <local>

С UDP последнее правило может быть излишним. А может и не быть.
-- 
Alexander Kotelnikov
Saint-Petersburg, Russia

Ответить