Если правило соответствует пакету и оно имеет -j DROP
, Я знаю, что пакет перестанет проходить все остальные правила. Однако я не понимаю, что произойдет, если пакет будет соответствовать правилу с -j ACCEPT? Перестанет ли он снова пересекать правила или попытается соответствовать другим правилам? Другими словами, что произойдет, если у карты будет много правил, которым нужно соответствовать.
Побеждает первое совпадение, и обработка останавливается, если цель является «конечной» целью; те включают DROP
, ACCEPT
, DNAT
, и так далее. Это цели, которые определяют окончательное размещение пакета; нет смысла говорить -j REJECT
если его можно переопределить тремя строками позже с помощью -j OH-SORRY-I-DIDNT-MEAN-IT
.
Побеждает первый матч, а обработка делает не остановить, если цель «не прекращается»; те включают LOG
, ULOG
, и отправка пакета в определенную пользователем цепочку. В последнем случае обработка продолжается по правилам в этой цепочке, и, если ни одно из них не соответствует конечной цели, пакет «выпадает из нижней части цепочки» и возвращается к правилу в вызывающей цепочке после того, которое отправило его в определяемая пользователем цепочка.
Это ясно? Победа в первом матче всегда применяется, поэтому порядок правил важен.
В общем, существует 2 типа целей iptables:
Без прекращения действия означает, что после применения определенного действия пакет переходит к следующему правило в та же цепочка / стол
Прекращение означает, что после выполнения определенного действия обработка завершается на том стол. Если пакет все еще существует, он перейдет к следующей таблице в соответствии с последовательностью потока netfilter (см. Ниже). Конечно, в случаях REJECT и DROP пакет больше не существует, поэтому, естественно, больше не будет обработки.
В статья в Википедии об iptables предоставляет диаграмму последовательности таблиц / цепочек, с которыми встретится пакет.