Re: iptables: REDIRECT and DNAT
В Срд, 16/07/2008 в 22:34 +0300, Покотиленко Костик пишет:
> В Срд, 16/07/2008 в 22:35 +0400, -=Devil_InSide=- пишет:
> > ,------[Artem Chuprina, Wed, 16 Jul 2008 20:19:38 +0400]
> > |sergio -> debian-russian@lists.debian.org @ Wed, 16 Jul 2008 18:46:02 +0400:
> > |
> > | s> Всем привет.
> > |
> > | s> В чём разнница между
> > | s> REDIRECT и DNAT без ip?
> > |
> > | s> Это абсолютно одно и то же? Зачем тогда было делать REDIRECT?
> > | s> Или есть разница?
> > |
> > |Разумеется. Если ты DNAT не указываешь адрес, он его не меняет. А
> > |REDIRECT - меняет.
> > |
> > |Кроме того, в мане на DNAT написано, что изменение распространяется на
> > |все дальнейшие пакеты данного соединения (включая обратные, чего там не
> > |написано), и что на этом прохождение правил прекращается. У REDIRECT
> > |ничего такого не написано. Подробнее же я с REDIRECT не работал, и для
> > |чего он вообще нужен, не знаю. Возможно, реализация REDIRECT
> > |эффективнее, чем DNAT, за счет того, что не надо гонять пакеты дальше в
> > |сеть.
> > |
> >
> > `-----------------
> > из мана и туториала вынес впечатление, что dnat - прокидка соединения куда либо, redirect же - заворачивание соединения на другой порт, но на тот же интерфейс, на который оно приходит.
> >
> > ===
> > REDIRECT
> > <skipped> It redirects the packet to the machine itself by changing the destination IP to the primary address of the incoming interface (locally-generated packets are mapped to the 127.0.0.1 address). <skipped>
> >
> > ===
> > DNAT
> > <skipped> It specifies that the destination address of the packet should be modified (and all future packets in this connection will also be mangled), and rules should cease being examined. <skipped>
>
> REDIRECT перенаправляет локально сделанные и транзитные соединения на
> локальную машину, поэтому адрес в параметрах отсутствует, он всегда
> равен адресу входящего интерфейса (127.0.0.1 для локально сделанных).
Вдогонку, кроме этого факта других различий между REDIRECT и DNAT нет.
REDIRECT также срабатывает только для первого пакета (как и любое
правило в таблице nat), остальные пакеты туда и обратно обрабатываются
автоматически системой conntrack.
DNAT - более полная версия REDIRECT. REDIRECT - проще, т.к. не надо явно
указывать адрес, и есть возможность контролировать источник - транзит
попадает на адрес входящего интерфейса, локальный на lo (для DNAT тут
одним правилом не обойдёшься).
--
Покотиленко Костик <casper@meteor.dp.ua>
Reply to: