[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: