私はiptablesを使ったことがなく、オンラインのドキュメントは少し不透明に見えます。
特定のIPアドレスからのリクエストを除き、サーバーのポート8000へのすべてのリクエストをブロックしたいと思います。iptablesを使用してそれを行うにはどうすればよいですか?
回答:
この質問はサーバー障害に関するものでなければなりません。それでも、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つのブリッジ仮想マシンが異なる組み合わせで相互にアクセスする必要があるという同様の問題があったので、このコマンドをテストしましたが、うまく機能します。
編集**
フェルナンドのコメントとこのリンクによると、感嘆符(
!
)は-s
パラメータよりも前に配置されます。
sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
!
)を-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を構成しない場合は、起動中にファイルをロードすると、ルールが失われることに注意してください。
iptables-restore < myfile
// wiki.debian.org/iptables