
のように入力すると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 がアップデートをダウンロードできるようにするには、何を追加すればよいでしょうか? よろしくお願いします
答え1
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 ソース、あるいは 80 以外のポート上の HTTP ソースが含まれている場合は、それらのポートも追加する必要があります。
次に、戻りトラフィックを許可する必要があります。これは、確立された接続を許可する次の単一のルールで実行できます。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(接続追跡を使用する場合は、許可した接続のみが ESTABLISHED 状態になるため、確立されたすべての着信接続を許可しても安全です。)
答え2
aptトランスポートファイルはhttpプロトコルを介して送信されるため、ポート80と8080のサーバーからのデータを受け入れるようにコンピュータを設定する必要があります。次に、iptablesルールを次のように設定します。
iptables -A INPUT -p tcp --sport 80 -m conntrack --state NEW -j ACCEPT
iptables -A INPUT -p tcp --sport 8080 -m conntrack --state NEW -j ACCEPT