apt-get почти всегда загружает по HTTP, но может также использовать FTP, поэтому, возможно, короткий ответ - разрешить исходящие HTTP-соединения ... и, конечно, DNS.
Ваша конфигурация теперь запрещает весь исходящий сетевой трафик ( ESTABLISHED
правило, которое вы используете в OUTPUT
цепочке, не действует, так как никакие сеансы никогда не будут установлены). Вам нужно разрешить ТОЛЬКО обновления apt-get, при этом запретив все остальное? iptables
Вероятно, это неправильный инструмент для этой работы, поскольку он не собирается интерпретировать URL-адреса и разрешать HTTP-передачу выборочно. Вы хотели бы использовать прокси-сервер 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 включают источники HTTPS или FTP или источники HTTP на портах, отличных от 80, вам придется добавить эти порты также.
Далее вам нужно будет разрешить обратный трафик. Вы можете сделать это с помощью этого единственного правила, которое разрешает любое установленное соединение:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(При использовании отслеживания соединений безопасно разрешать все входящие установленные соединения, поскольку только те соединения, которые вы разрешили в противном случае, перейдут в состояние ESTABLISHED.)