特定のIPからのパケットを除くすべての着信パケットをドロップするために、iptables
ルールを追加しようとしています。マニュアルに従って、私はこれを実行しようとします:
> iptables -t filter -I INPUT -s !12.34.56.78 -p tcp -j DROP
しかし、私はこのエラーを受け取ります:
iptables v1.4.12.1: Host/network `!12.34.56.78' not found
マンページには、-s / --src / --source
パラメータ... A "!" argument before the address specification inverts the sense of the address. ...
が記載されています。
この感嘆符で私が最初に抱えた問題は、シェルがそれを歴史からのコマンドに拡張したことでした。解決策set +H
が適用されましたが、もう問題ではないようです。
マニュアルに記載されているように、反転アドレスを指定するために感嘆符が受け入れられないのはなぜですか?
PS:もちろん、!
とIPの間にスペースを入れて使用しようとしましたが、受け入れられません。
[〜#〜]編集[〜#〜]
回答を受け入れる直前に、誰かが回答を手伝ってくれるかもしれません。マニュアルにあるように、パラメータの順序を! -s {IP}
ではなく-s !{IP}
にする必要があるのはなぜですか? iptables
の新しいバージョンだけで、古いマニュアルページを保持しながらこの構文が変更されましたか?それともどういうわけか設定可能ですか?
!
とIPアドレスの間にスペースが必要です
iptables -t filter -I INPUT -s ! 12.34.56.78 -p tcp -j DROP
Using intrapositioned negation (
-- option!のようなメッセージが表示された場合this) is deprecated in favor of extrapositioned (
! -オプションthis).
次に、!を配置します-のように「-s」オプションの前
iptables -t filter -I INPUT ! -s 12.34.56.78 -p tcp -j DROP
逃げてみましたか!あなたの殻から?
iptables -A INPUT \! -s 12.34.56.78 -p tcp -j DROP
編集:申し訳ありませんが、!をエスケープしたことを説明しているので、順序が間違っています。上に貼り付けたコマンドは、私のマシンでは正常に機能します。