
最近、次のルールを使用して、OpenVZ 7ノードでポート25をブロックし始めました。
iptables -I FORWARD -p tcp --dport 25 -j DROP
これはうまく機能しますが、インバウンドとアウトバウンドの両方をブロックするようですが、アウトバウンドだけをブロックしたいと思います。可能ですか?
これが意味がある場合は、次のコマンドを使用して特定のIPアドレスに対してポート25を再び開きました。
iptables -I FORWARD 1 -d 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I FORWARD 1 -s 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
答え1
元の回答を早く読みすぎてコンテナ化を扱っているという事実に気づかなかったので役に立たなかったので削除しました。次の説明は無視できます(iptablesアクティビティを記録する方法を知りたくない場合)。
コンテナのインターフェイス名を見ると幸運かもしれません。
iptables -A FORWARD -o docker0 -p tcp --dport 25 -j DROP
docker0
インターフェイス名はどこにありますか?前述のように、コンテナからのトラフィックはFORWARDチェーン(やはりコンテナ化されています)を通過するため、ここでOUTPUTおよびINPUTチェーンは価値がありません。
答え2
Kahnのおかげで完全に働いたと言えて嬉しいです。 OpenVZ 7を実行している他の人のためのソリューションは次のとおりです。
次のコマンドを実行します。
iptables -A FORWARD -o br0 -p tcp --dport 25 -j DROP
これにより、br0(VMから継承されたインターフェイス)のアウトバウンドポート25が削除されます。
その後、特定のIPアドレスを開く必要がある場合は、次の手順を実行します。
iptables -I FORWARD 1 -s 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
答え3
Ubuntu 22.04コンテナ(FROM ubuntu:jammy
)では、次のコマンドを使用する必要がありました。
コマンド
--cap-add=NET_ADMIN
に追加されました。docker run
sudo iptables-legacy -A OUTPUT -o eth0 -p tcp --dport 25 -j DROP
そうでなければiptables-legacy
、私が得ることはまだアウトバウンドポートを許可しunknown option "--dport"
ないことです。-A OUTPUT