IPTables:apt-get 和 wget 不起作用

IPTables:apt-get 和 wget 不起作用

重置 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

相关内容