什么是正确的iptables规则允许apt-get下载程序?

当我input类似sudo apt-get install firefox东西时,一切工作,直到它问我:

 After this operation, 77 MB of additional disk space will be used. Do you want to continue [Y/n]? Y 

然后显示错误消息: Failed to fetch: <URL>

我的iptables规则如下:

 -P INPUT DROP -P OUTPUT DROP -P FORWARD DROP -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 

我应该添加什么来允许apt-get下载更新? 谢谢

apt-get几乎总是通过HTTP进行下载,但也可能使用FTP,所以简短的答案可能是允许出站HTTP连接…以及DNS,当然。

您现在的configuration不允许所有传出networkingstream量(您在OUTPUT链上的ESTABLISHED规则无效,因为没有会话将被build立)。 你是否需要只允许apt-get更新,同时还不能做其他事情? iptables可能是这个工作的错误工具,因为它不会真正解释URL并且允许HTTP传输有select性。 你想要使用HTTP代理服务器来完成这项工作。

您可以使用一个更简单的设置来允许apt-get下载,但请注意,这也允许所有其他传出的DNS和HTTP连接,这可能不是您想要的。

 iptables -F OUTPUT # remove your existing OUTPUT rule which becomes redundant iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT 

如果您的APT源在80以外的端口上包含HTTPS或FTP源或HTTP源,则您也必须添加这些端口。

接下来,你将不得不允许返回的stream量。 你可以用这个允许build立连接的单一规则来做到这一点:

 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

(在使用连接跟踪时,允许所有入站build立的连接是安全的,因为只有您另外允许的连接才能达到ESTABLISHED状态。)