次のようにフィルタリングされる投稿がたくさんありますiptables
。
-A INPUT -p tcp -m tcp --dport xxxxx -j ACCEPT
これは私の行と同じでなければなりません。
--append INPUT --protocol tcp --match tcp --destination-port xxxxx --jump ACCEPT
この行に関する私の質問は--TCPマッチ私たちのようにしなければならないすでに合意を知っているTCPです、それともこれがもっと起こるのでしょうか?私はこの文脈でそれが何を意味するのか理解していません。
答え1
以下の説明では、モジュールは以下を意味します。ユーザーモード iptables コマンドカーネルモジュールではなく、モジュールです(もちろん関連していますが、説明は必要ありません)。
iptables
IPv4が関連しています。すべてIPv4パケット一つある規約大地。--protocol tcp
組み込み機能を使用iptablesコードはこれを与えられた値と比較します。ベースiptablesコマンド自体は、基本的なIPv4層についてあまり知りません。特定のTCPポートを確認するなど、別途必要がない場合iptablesもうありません。たとえば、
iptables -A INPUT -p tcp -j ACCEPT
モジュールはロードされません。伝送制御プロトコル。そして私たちは彼をもう一度見ることができないでしょう-m tcp
。
ベースiptablesコマンドはポートを知りません。プロトコルテスト後に不明なオプションを指定する際の配慮で、iptablesプロトコル名を持つモジュールを自動的にロードするのが-m
このオプションの役割です。したがって、バックグラウンドでオプションがiptables -A INPUT -p tcp --dport 5555
見つからない場合、--dport
そのオプションは自動的に前に-m tcp
挿入されます。ここで--dport
オプションをもう一度確認してください。伝送制御プロトコルモジュールとモジュールは--dport
オプションについて知り、それを処理します。そのため、次のことを行うとき:
iptables -A INPUT -p tcp --dport 5555
ルールをダンプすると、iptables-save
結果に以下が表示されます。
-A INPUT -p tcp -m tcp --dport 5555
多くの場合、人々は入力せずに-m tcp
ルールダンプから結果をコピーする方が簡単で、コマンドに構文エラーがないことを意味するため、ルールダンプから結果をコピーします。
これを確信したい場合は、以下で何が起こっているのかを見てください。ストレス--dport
ICMPプロトコルのオプションを指定した-p icmp
後にオプションを提供または提供しない例(ポート概念なし):
# strace iptables -A INPUT -p icmp 2>&1 |egrep 'icmp|write'
execve("/usr/sbin/iptables", ["iptables", "-A", "INPUT", "-p", "icmp"], [/* 15 vars */]) = 0
そして
# strace iptables -A INPUT -p icmp --dport 5555 2>&1 |egrep 'icmp|write'
execve("/usr/sbin/iptables", ["iptables", "-A", "INPUT", "-p", "icmp", "--dport", "5555"], [/* 15 vars */]) = 0
stat("/usr/lib/x86_64-linux-gnu/xtables/libipt_icmp.so", {st_mode=S_IFREG|0644, st_size=14464, ...}) = 0
open("/usr/lib/x86_64-linux-gnu/xtables/libipt_icmp.so", O_RDONLY|O_CLOEXEC) = 3
getsockopt(3, SOL_IP, IPT_SO_GET_REVISION_MATCH, "icmp\0\177\0\0\207\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0\0\0", [30]) = 0
write(2, "iptables v1.8.3 (legacy): ", 26iptables v1.8.3 (legacy): ) = 26
write(2, "unknown option \"--dport\"", 24unknown option "--dport") = 24
write(2, "\n", 1
write(2, "Try `iptables -h' or 'iptables -"..., 61Try `iptables -h' or 'iptables --help' for more information.
不明なiptablesオプションが存在し、モジュールのロードがトリガーされました。ICMP(文書libipt_icmp.so
)契約のためICMP任命される。モジュールはそのオプションも処理でき--dport
ません。iptablesコマンドが失敗しました。