iptables を使用して、ネットワーク上の特定の IP から TCP パケットを拒否します。

iptables を使用して、ネットワーク上の特定の IP から TCP パケットを拒否します。

iptablesを使用して、ネットワーク上の特定のIPから自分のコンピュータに送信されたパケットを拒否するとします。コマンドでパケットの宛先を定義する必要がありますか、ソースのみを含めるのに十分ですか?

たとえば、126.184.25.25 で作業していて、126.184.25.101 のすべての TCP パケットを拒否したいとします。

 sudo iptables -t filter -A INPUT -p tcp -s 126.184.25.101 -d 126.184.25.25  -j REJECT

それとも、宛先アドレスを削除して次のものを使用すれば十分ですか?

sudo iptables -t filter -A INPUT -p tcp -s 126.184.25.101 -j REJECT

私のネットワークで上記の両方の方法をテストすると、電子は機能しないようです。どちらも意味があるようですが、なぜ電子が正しくないのかわかりません。

答え1

コマンドでパケットの宛先を定義する必要がありますか、ソースのみを含めるのに十分ですか?

いいえ、そうです。設定を省略すると、デフォルト値が適用されます。プロトコルを指定しない場合はデフォルトですべてのプロトコルがブロックされ、テーブル(-t)を指定しない場合はデフォルトでフィルタリングが行われます。

マニュアルページでは通常、デフォルト設定(存在する場合)について説明します。

答え2

送信元アドレスのすべてのTCPパケットを拒否します。

sudo iptables -I 入力 -p tcp -s 126.184.25.101 -j 拒否

宛先を指定する必要はなく、一部の場合(ブロードキャストパケットなど)は機能しません。

これは、上部にこの規則を挿入する(-I)とともにINPUTチェーンを表します。 (-s) 送信元アドレスからのトラフィックの場合、(-j) DROP ルールへの宛先トラフィックです。

DROPはおそらくREJECTよりも良いでしょう。拒否は応答を再送信しますが、ドロップは応答なしでパケットを破棄するためです。

また、すべてのプロトコル(tcp、udp、icmpなど)を削除するには、次のように「-p tcp」を削除します。

sudo iptables -I 入力 -s ipaddress -j 削除

これは、DROPが問題を引き起こし、REJECTがより良い選択になる可能性があるネットワーク状況に影響を与える可能性があります。

さらに、これは現在のオペレーティングシステムの動作寿命を超えません。永久的なものが必要な場合は、さらに調査する必要があります。

関連情報