重置 IPTables 时,apt-get 和 wget 命令可以正常运行,也可以下载我想要的内容。但是一旦我激活此防火墙,它就无法正常工作。Ping 仍然有效。
我想允许所有传出连接。这就是我在末尾添加“iptables -P OUTPUT ACCEPT”的原因。
IPTables 防火墙: http://pastebin.com/pTGyiz7c
iptables -L -n -v:http://pastebin.com/6Q8Mbgfh
答案1
您的防火墙缺少主要部件。第一个数据包正确地传到外部(因为 OUTPUT 策略是 ACCEPT)。第一个传入数据包被拒绝,因为 INPUT 规则中没有任何允许的内容。您应该有一个iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
允许连接跟踪以允许数据包传入的规则。第二个数据包也将被允许传出,因为 OUTPUT 策略是 ACCEPT。
添加一条规则来记录哪些内容被拒绝是重要的。将其添加到iptables -A INPUT -j LOG --log-prefix "DROP4 INPUT "
INPUT 规则的末尾。
备注:你需要在 INPUT 中打开所有端口吗?向 Internet 开放 mysql 服务并不是一个好主意...
答案2
您需要允许与传出连接相关的传入数据包。
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
如果这不起作用:
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
此处讨论差异:https://unix.stackexchange.com/questions/108169/m-conntrack-ctstate-and-m-state-state 之间的区别是什么?
答案3
basvdlei 和 Dom 的答案是正确的,
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
但是,wget 或 apt 还需要一件事:DNS 添加下面的行在我的情况下工作正常
iptables -A INPUT -p udp --dport 53 -j ACCEPT