iptablesを使用してポート25をブロックする(アウトバウンドのみ)

iptablesを使用してポート25をブロックする(アウトバウンドのみ)

最近、次のルールを使用して、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

関連情報