2015-07-24 5 views
2

С man-страницы моего дистрибутива меня особенно интересует полужирная часть ниже.Параметры iptables -j vs. -g

-j, --jump целевой

Определяет цель правила; то есть, что делать, если пакет соответствует ему. Цель может быть определяемой пользователем цепочкой (отличной от той, в которой находится это правило), одной из специальных встроенных целей, которые сразу решают судьбу пакета или расширение (см. РАСШИРЕНИЯ ниже). Если этот параметр не указывается в правиле (и -g не используется), то соответствие правила не повлияет на судьбу пакета, но счетчики в правиле будут увеличиваться.

-g, --goto цепи

Это указывает, что обработка должна продолжаться в заданном пользователем цепи. В отличие от возврата опции -jump, эта цепочка не будет продолжать обрабатываться, а вместо этого в цепочке, которая вызвала нас через --jump.

Я боюсь, что неправильно -g на самом деле делает.

Как точно -g теперь отличается от -j?

ответ

3

Когда согласованное правило в текущей цепочке задает цель RETURN, или когда достигнут конец текущей цепочки, обработка продолжается в предыдущей цепочке, которая перешла в текущую цепочку, пройдя ее по следующему правилу, которое все еще было не обрабатывается, т. е. правило ниже того, которое фактически задало текущую цепочку как ее цель и вызвало переход к текущей цепочке.

Однако, если переход к текущей цепочке был сделан с помощью -g (а не через -j), обработка не будет продолжаться в этой предыдущей цепи, а в цепочке до этого, предполагая, что скачок там было сделано с -j. Если это также не так (то есть даже там, где было использовано -g), тогда цепь до этого будет учтена и т. Д. Другими словами, последняя цепочка, которая фактически определила следующую цепочку с -j, а не с -g, будет обработана следующим образом.

Если такой цепи не найдено (т. Е. Все цепи до указанной встроенной цепи указаны -g) или достигнут конец встроенной цепи или правило во встроенной цепи с целью RETURN сопоставляется, цель, заданная встроенной политикой цепочки, определяет судьбу пакета.

+0

Так что '-g' в основном переходит к последней цепочке, активируемой '-j', или встроенной цепочкой. Если не найдено ни одного совпадающего правила для рассматриваемого пакета, политика по умолчанию вступает в силу. – sjas

+0

Да, однако, скачок назад к самой последней цепочке, которая «активировала» следующую цепочку через «-j», и возникает только тогда, когда обрабатываемая в данный момент цепочка задает целевую «RETURN» или если цепочка, обработанная в настоящее время, не указывает любой цели вообще. – Yoel