我在使用 iptables 的 Debian 7 上从未遇到过问题。然而,在 Debian 8 中,我根本无法让 iptables 工作。
像这样的简单脚本需要几分钟才能加载,并且无法访问我的门户页面。
#!/bin/bash
# Delete existing rules
iptables -F
# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Outbound DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# Portal
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8443 -j ACCEPT
# Logging
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 12/min -j LOG --log-prefix "eh: " --log-level 7
iptables -A LOGGING - DROP
我收到一堆无法访问端口 8443 的 iptable 日志。我的服务器上有 3 个网卡,全部是来自 ESXi 6.0 的虚拟网卡。没有 iptables,我可以访问网络、访问门户页面等。没有问题。
我尝试在 iptables 中指定 eth0,但这也没有帮助。
答案1
您没有为 NEW 、 RELATED、ESTABLISHED 添加规则。在以前的版本中,可能是默认允许而不添加或您已添加。在这种情况下你必须添加规则。首先使用以下命令删除所有规则:
iptables -F
iptables -X
然后添加规则:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -j ACCEPT
并运行你的脚本。如果没有,它将起作用,然后将输出sudo iptables -vnL