Назад | Перейти на главную страницу

Как iptables выполняет правила?

Недавно у меня возникли проблемы с брандмауэром, блокирующим трафик между двумя серверами, и я хочу проверить, как iptables обрабатывает несколько правил, применяемых к одному IP. Если я сбегу iptables -L -n | grep 1.2.3.4 Я вижу такой вывод:

ACCEPT    all  --  1.2.3.4      0.0.0.0/0
DROP      all  --  1.2.3.4      0.0.0.0/0
ACCEPT    all  --  0.0.0.0/0            1.2.3.4
DROP      all  --  0.0.0.0/0            1.2.3.4

Как iptables обработает эти правила? Будет ли сброшен весь трафик с 1.2.3.4?

Бег iptables -L -n не дает вам имен интерфейсов, которые правила могли бы определить как условия. Правила, которые выглядят одинаково с разными целями, вероятно, предназначены для разных интерфейсов, если они не были написаны а) в спешке, спешу б) рассеянным админом в) как временное решение для чего-то или г) все вышеперечисленное

Использовать iptables -L -v -n вместо.

Отвечу на ваш вопрос: судьбу пакета решает первый правило сопоставления с конечной целью (такими целями являются ACCEPT и DROP, но есть и другие, такие как RETURN, которые не являются конечными, поэтому обработка продолжается). Если такого правила нет, применяется политика цепочки по умолчанию, которая ACCEPT по умолчанию и может быть изменен через iptables -P <ACCEPT, DROP>.

Видеть этот довольно хороший рабочий документ для подробностей.

Мне больше всего нравится разбираться в наборах правил iptables с помощью команды iptables-save, которые выгружают все правила в stdout. Это помогает понять правильный порядок правил.

Полная картина прохождения пакетов в iptables находится здесь: http://www.frozentux.net/iptables-tutorial/images/tables_traverse.jpg

Трудно сказать, поскольку вы не показываете, для каких цепочек применяются эти правила.

Легко сказать: для брандмауэра вы должны начать с цепочки FORWARD и последовательно следовать всем правилам, которые соответствуют, пока вы не нажмете ACCEPT, DROP или REJECT.

Если таким образом вы достигнете конца всех правил, будет применена политика FORWARD по умолчанию.