Я хотел бы знать, что именно делает следующее правило iptables? Зачем это нужно?
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Это немного сложнее, чем предполагают некоторые из приведенных выше комментариев.
state ESTABLISHED
действительно означает «как только соединение открыто, пропустить остальные пакеты», хотя следует отметить, что «соединение» здесь определяется синхронностью: пакеты, проходящие между одной известной парой адресов / портов и другой известной парой адресов / портов, являются определяется как «СОЗДАНО». Знаменитое трехстороннее TCP-рукопожатие сюда не входит.
state RELATED
кажется, что многие люди не понимают, что он делает. Обычно он включает ICMP-трафик, связанный с существующим подключением (попыткой), например, пакеты ICMP-host-adminly-unreachable, возвращаемые брандмауэром, который блокирует ваш запрос на подключение к запрещенному ящику.
Но есть также группа модулей ядра, например nf_conntrack_ftp
, которые динамически расширяют определение RELATED
трафика по мере их загрузки (этот конкретный пакет выполняет проверку уровня 4 трафика канала управления ftp, ищет операторы DATA, которые предупреждают о неизбежном открытии канала DATA, и сопоставляет эти пакеты, когда они прибывают).
Если вы не знаете, что вам это нужно, я рекомендую не позволяя RELATED
трафик в целом, но вместо этого ограничивая RELATED
заявления о трафике, который вы хотите, например, -p icmp
.
Состояние ESTABLISTED позволит проходить всем пакетам, которые являются частью существующего соединения. Состояние RELATED позволяет создавать новые вторичные соединения, связанные с существующим соединением. Это, например, позволило бы передавать данные FTP, когда управляющее соединение находится на порту 21, а порт данных согласовывается протоколом.