示例
现在假设一台主机有如下规则:
iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
分析
现在,其他主机ssh登陆到这台防火墙主机是没有问题到,问题是这台机器可以访问其他到网络吗?答案是不行。因为当防火墙主机发起对外链接的时候,会选择任意一个端口,这时候tcp数据包返回的时候会发送到这个端口,而这个数据包会被丢弃。所以该防火墙主机收不到响应。
解决方案
增加:
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
或者
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -j DROP
iptables -P INPUT ACCEPT
⚠️对于state模块,会话过程的第一个packet为NEW,随后的packet是ESTABLISHED