私はiptablesを使用したことがなく、オンラインのドキュメントは少し不透明に見えます。
特定のIPアドレスからの要求を除く、サーバー上のポート8000へのすべての要求をブロックしたいと思います。 iptablesを使用してこれを行うにはどうすればよいですか?
この質問は Server Fault にあるはずです。それにもかかわらず、TCPについて話していて、許可したいIPが1.2.3.4であると仮定すると、以下がトリックを行うはずです。
iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
別の選択肢は次のとおりです。
Sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP
3つのブリッジされた仮想マシンが異なる組み合わせで相互にアクセスする必要があるという同様の問題があったため、このコマンドをテストしましたが、うまく機能します。
編集**
フェルナンドのコメントとこれによると、 link 感嘆符(
!
)は-s
パラメーターよりも前に配置されます。
Sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
いつでもiptablesを使用してルールを削除できます。多数のルールがある場合は、次のコマンドを使用してルールを出力するだけです。
iptables-save > myfile
vi
は、コマンドラインから編集します。 「dd」を使用して、不要になった行を削除します。
iptables-restore < myfile and you're good to go.
OSを設定してルールをファイルに保存しない場合、ルールが失われるブート中にファイルをロードすることを忘れないでください。