大家好,我的 ubuntu 12.04 服务器有以下 iptables 文件。它有点乱,因为我尝试了不同的方法来修复它,但问题是它不允许运行 apt 命令(例如 apt-get)。它显示连接到 archive.ubuntu.com 并且连接超时。我猜这与传出规则有关,但我不确定。使用 UFW 也出现了完全相同的问题。您能否建议我如何修复/改进我的 iptables 结构,或者修复 UFW 使其正常工作。谢谢!
更新::
于 2012 年 5 月 14 日星期一 23:09:19 完成 # 由 iptables-save v1.4.12 于 2012 年 5 月 14 日星期一 23:09:19 生成 *筛选 :输入下降 [0:0] :转发接受 [0:0] :输出接受 [0:0] -A 输入 -m 状态 --状态相关,已建立 -j 接受 -A 输入-p tcp -m tcp --dport 22 -j 接受 -A 输入-p tcp -m tcp --dport 80 -j 接受 -A 输入-p tcp -m tcp --dport 443 -j 接受 -A 输入-p tcp -m tcp --dport 3306 -j 接受 -A 输入 -s 127.0.0.1/32 -j 接受 -A 输入 -m 限制 --limit 5/分钟 -j LOG --log-prefix "iptables denied" --log-level 7 -A 输入-p icmp -m icmp --icmp-type 0 -j 接受 -A 输入-p icmp -m icmp --icmp-type 8 -j 接受 -A 输入-p tcp -m tcp --sport 53 -j 接受 -A 输入-p udp-m udp --sport 53-j 接受 -A 输入-i lo -j 接受 犯罪 # 于 2012 年 5 月 14 日星期一 23:09:19 完成
答案1
您有冗余规则,所有OUTPUT
规则 ( A OUTPUT
) 都是冗余的,因为-A OUTPUT -j ACCEPT
规则 (“接受所有传出流量”)。如果您将 OUTPUT 策略设置为ACCEPT
而不是DROP
(“如果没有规则匹配,则接受所有传出流量” vs “如果没有规则匹配,则忽略/丢弃所有传出流量”),则此规则本身是不必要的。要设置策略,请使用:
:OUTPUT ACCEPT
(计数器不是必需的,也已被删除)。由于您的 OUTPUT 链没有问题,请查看您的输入链。我没有发现任何明显问题,允许现有 TCP 连接(包括握手数据包)和 DNS 响应的行是存在的:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
作为调试辅助,我建议您使用-v
( --verbose
) 标志作为规则匹配计数器。我最喜欢的是每秒更新一次的统计数据:
sudo watch -n1 iptables -vnL
这可能是与 iptables 无关的问题。也许您的路由表有误、DNS 服务器无效或上游路由器阻止了您的流量。
有关的:
答案2
我认为解决此问题的最简单方法是刷新所有规则,然后逐一重新添加,直到它停止工作。请注意,如果您从远程执行此操作,则当您盲目刷新/清零所有规则时,您的默认 DROP 策略可能会断开您的连接。