iptables и RETURN target

16

Я не понимаю, что RETURNделает цель в команде iptables.

Сомнение исходит из этого руководства, где говорится:

Цепочка - это набор правил, с которыми последовательно проверяется пакет. Когда пакет соответствует одному из правил, он выполняет соответствующее действие и не проверяется на соответствие остальным правилам в цепочке.

Так что, если пакет соответствует правилу и он перестает проверять другие правила, зачем мне нужен RETURN?

Например, я нашел это в интернете:

iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j MARK --set-mark 30;
iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j RETURN;

Зачем мне это RETURN? Если пакет соответствует первому правилу, он автоматически прекращает выполнение других правил.

zer0uno
источник

Ответы:

33

Пакеты пересекают цепь , пока они не попали ACCEPT, DROP, REJECTили RETURN. Они не останавливаются в матче, если в этом матче нет завершающего действия. В вашем примере пакет, соответствующий первому правилу, будет помечен, но затем будет проверен (и, возможно, обработан) вторым правилом.

Чисто для справки, вот соответствующие разделы со страницы руководства :

Правило брандмауэра определяет критерии для пакета и цели. Если пакет не совпадает, следующим правилом в цепочке является проверенный; если оно совпадает, то следующее правило определяется значением цели, которое может быть именем определенной пользователем цепочки или одним из специальных значений ACCEPT, DROP[, REJECT] QUEUEили RETURN.

  • ACCEPT означает пропустить пакет.
  • DROP означает сбросить пакет на пол, т.е. отказаться от него и не отправлять ответ
  • [ REJECTиспользуется для отправки пакета с ошибкой в ​​ответ на соответствующий пакет: в противном случае он эквивалентен такому, DROPчто это завершающий TARGET, заканчивающийся обходом правила.]
  • QUEUE означает передать пакет в пространство пользователя.
  • RETURNозначает прекращение обхода этой цепочки и возобновление на следующем правиле в предыдущей (вызывающей) цепочке. Если достигнут конец встроенной цепочки или RETURNсопоставлено правило во встроенной цепочке с целью , цель, указанная в политике цепочки, определяет судьбу пакета.

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

roaima
источник
Я бы подтвердил этот ответ несколько раз, если бы мог.
JakeRobb
Стоит отметить, что действием по умолчанию для пользовательских цепочек является RETURN.
Суровая
@ Старк не то, что говорит последнее предложение?
roaima
1
Ах, теперь я понимаю, DROP лучше. Это объясняет, почему у меня тоже нет места для ног под этим столом.
Джонатан Нойфельд