iptables очень низкоуровневый, и когда вы пишете правила iptables, вы имеете дело с необработанными IP-пакетами. Это имеет ряд последствий, одно из которых вы нашли.
Существуют совершенно допустимые случаи использования, когда исходящий трафик должен быть разрешен, но любой соответствующий входящий трафик не должен проходить через брандмауэр; или наоборот, входящий трафик разрешен, но исходящий не разрешен. Одним из распространенных примеров этого является то, войти серверы хранения (которые в свою очередь , часто бывают полезны для аудита): бревенчатый трафик должен быть разрешен в, но ни один не должно быть разрешено вне. В крайнем случае, бревенчатый трафик должен быть разрешен в, но ничего не должно быть разрешено или вне.
Iptables не делает никаких предположений о том, что вы хотите, вы не только повышаете безопасность, но и производительность, потому что набор правил может быть оптимизирован именно для того, что вы хотите, чтобы брандмауэр действительно делал.
Если вы хотите разрешить входящий трафик, связанный с уже установленным соединением или сеансом, просто скажите это так:
sudo iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
или для IPv6:
sudo ip6tables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
Настройте часть -I INPUT 1
по мере необходимости (например, если у вас есть другие правила, которые должны иметь приоритет над общим правилом разрешения трафика, связанного с установленным соединением или сеансом).