apt-get prawie zawsze pobiera przez HTTP, ale może także używać FTP, więc krótka odpowiedź prawdopodobnie pozwoli na wychodzące połączenia HTTP ... i oczywiście DNS.
Konfiguracja, którą masz teraz, uniemożliwia cały wychodzący ruch sieciowy ( ESTABLISHED
reguła, którą masz w OUTPUT
łańcuchu, nie działa, ponieważ żadna sesja nigdy się nie ustanowi). Czy musisz zezwolić TYLKO na aktualizacje apt-get, jednocześnie nie zezwalając na wszystko inne? iptables
jest prawdopodobnie niewłaściwym narzędziem do tego zadania, ponieważ tak naprawdę nie zamierza interpretować adresów URL i zezwalać na selektywne przesyłanie HTTP. Do tego zadania chcesz użyć serwera proxy HTTP.
Możesz użyć prostszej konfiguracji, która pozwoli na pobieranie apt-get, ale pamiętaj, że pozwala to również na wszystkie inne wychodzące połączenia DNS i HTTP, co może nie być tym, czego chcesz.
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
Jeśli twoje źródła APT obejmują źródła HTTPS lub FTP lub źródła HTTP na portach innych niż 80, musisz również dodać te porty.
Następnie musisz zezwolić na ruch powrotny. Możesz to zrobić za pomocą tej jednej reguły, która zezwala na każde ustanowione połączenie:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(Podczas śledzenia połączeń można bezpiecznie zezwalać na wszystkie ustanowione połączenia przychodzące, ponieważ tylko połączenia, które w innym przypadku byłyby dozwolone, przejdą w stan USTANOWIONY).