当我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状态。)