iptables: Invalid argument
s30 12 Августа, 2008 - 17:53
Не могу понять почему не додается правило
# iptables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
iptables: Invalid argument
Хотя на другой машыне все ок, netfilter ans state вкомилены в ядро
#uname -r
2.6.25-gentoo-r7
»
- Для комментирования войдите или зарегистрируйтесь
conntrack
Смотрите в параметрах ядра:
- Netfilter connection tracking support
- IPv4 connection tracking support (required for NAT)
(модулем, либо в ядре).
После этого вывод lsmod.
s30 пишет:Не
Странно, у меня это правило работает..... Значит косяк в ведре.....
Quote: iptables -A INPUT
Никакого косяка в ведре нет :)
Ребята, выделенные фрагменты вместе сосуществовать просто не смогут. Потому что протокол ICMP просто не может иметь тех характеристик, которые пытаются забить в правило! Оно не имеет смысла!
Установка соединения, и соответственно состояние ESTABLISHED - возможности TCP, но никак не ICMP. С помощью ICMP протокола не устанавливается никаких соединений, просто ходят пакеты туда-сюда.
Если нужно пропускать все ICMP пакеты на вход, то правило должно быть таким:
iptables -A INPUT -p icmp -j ACCEPT
И все, этого достаточно. :)
+1 Хотя кстати
+1
Хотя кстати проверил у меня оно добавляется, видимо ньюансы модуля state. По ману оно вроде может применятся совместно с icmp пакетами, но когда --state INVALID - сюда будут подходить пакеты с ICMP ошибками, которые не ассоциированы ни с одним TCP соединением.
В любом случае именно
iptables -A INPUT -p icmp --state ESTABLISHED
- бессмыслица.почитай
почитай тут
http://www.opennet.ru/docs/RUS/iptables/#ICMPCONNECTIONS
По указанной
По указанной ссылке вовсе не сказано, что ICMP протокол может создавать соединения. И правило '-p icmp --state ESTABLISHED' все равно не имеет никакого смысла. Для чего пропускать только пакеты, являющиеся ответами на ранее посланный запрос? Уж если не пропускать icmp на INPUT, так не пропускать совсем, и дело с концом. Только нужно учесть, что несмотря на то, что пакеты не пропускаются брандмауэром, они все равно поступают на входящий интерфейс и обрабатываются. Для чего возня со state, совершенно непонятно.
О смысле
О смысле спрашивай автора поста, я просто хотел сказать,
что протокол icmp может иметь состояние ESTABLISHED. Вот и всё.
Да ну? Что по
Да ну? Что по этому поводу написано в RFC? И кстати, какой RFC определяет характеристики ICMP? И что такое RFC?
А если в ядре нет поддержки conntrack? ;) Тогда как? Тоже имеет?
Читайте приведенную вами же ссылку внимательнее, и в первую очередь - общее название материала. Оно говорит само за себя.
А это RFC, на всякий случай:
http://www.faqs.org/rfcs/rfc792.html
http://www.faqs.org/rfcs/rfc777.html
Почитайте, весьма занятно.
В любом случае - это документ, а не статья по применению iptables. :)
Да ну?!
Да ну?! А как тогда вы объясните тот факт, что
Если абстрагироваться от абсурдности сего правила, то не видите ли вы в приведенных мною цитатах каких-либо странностей?
Человек выше по
Человек выше по ветке привел ссылку на статью. На русском языке. В ней все написано :) Почитайте внимательно.
В случае с ICMP, ESTABLISHED - это виртуальное понятие, имеющее место быть только при наличии conntrack, и отношение имеет только к этому модулю. К протоколу ICMP оно имеет отношение косвенное, ибо без этого модуля ICMP не создает никаких соединений, и соответственно - понятие "ESTABLISHED" к нему неприменимо. Я не знаю, зачем в conntrack фиксируются ICMP "соединения". Наверное, это зачем-то кому-то было нужно.
Бесспорно. Я с
Бесспорно. Я с этим и не спорил, если вы заметили.
Quote: iptables -A INPUT
У меня это правило работает тоже, чему я сначала очень удивился, но прочитав статью, ссылку на которую указали в посте выше по теме, все понял. Причем, даже пакеты считает, т.е. - что-то туда таки попадает.
Уж я не знаю на кой потребовалось разработчикам netfilter реализовывать такие вещи... Смысла в подобном правиле нет, и опытному админу просто не могло бы прийти в голову написать такое правило. Разве что с бодуна, или по пьяни.
Кстати.
Можно попробовать netstat, он никаких ESTABLISHED icmp "соединений" не показывает. :)
потому что оно
потому что оно ESTABLISHED наносекунды, пока ответный пакет формируется видимо )