回答:
この-p tcp
オプションを使用すると、tcpモジュールがすでにロードされているため、多少冗長であり、-m tcp
オプションを使用する必要はありません。このオプションを使用するとルールがより安全になる理由はわかりません。
理解と比較については、iptablesのマニュアルページを参照してください。
-p、-protocol [!]プロトコル
チェックするルールまたはパケットのプロトコル。指定するプロトコルは、tcp、udp、icmp、またはallのいずれか、またはこれらのプロトコルの1つまたは別のプロトコルを表す数値にすることができます。/ etc / protocolsからのプロトコル名も許可されます。「!」プロトコルがテストを反転する前の引数。数値ゼロはすべてに相当します。プロトコルallはすべてのプロトコルと一致し、このオプションが省略されるとデフォルトとして使用されます。
...
拡張子の一致
iptablesは拡張パケットマッチングモジュールを使用できます。これらは2つの方法でロードされます。暗黙的に、-pまたは--protocolが指定されている場合、または-mまたは--matchオプションを使用して、一致するモジュール名が後に続きます。これらの後、特定のモジュールに応じて、さまざまな追加のコマンドラインオプションが使用可能になります。1行で複数の拡張一致モジュールを指定できます。モジュールが指定された後に-hまたは--helpオプションを使用して、そのモジュールに固有のヘルプを受け取ることができます。
そして利用可能なオプションのリスト-p tcp
についてはここを参照してください:
http://ipset.netfilter.org/iptables-extensions.man.html#lbCF
上記のように、-m
オプションを使用すると、拡張モジュールを追加することが可能になり、一致するオプションをさらに利用できるようになります。たとえばcpuモジュール:
CPU
[!] --cpu番号
このパケットを処理するCPUに一致させます。cpusには0からNR_CPUS-1までの番号が付けられています。RPS(リモートパケットステアリング)またはマルチキューNICと組み合わせて使用して、異なるキューにネットワークトラフィックを分散できます。
例:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081
Linux 2.6.36以降で使用可能です。
iptables-extensionsの完全なリスト。
OPからの追加の質問:-mが何と一致するのか理解できません。何の糸?-m tcpは何に一致しますか?「tcp」という単語を見つけようとしますか?
回答:文字列ではなく、モジュール名-m
を照合するためのものです。特定のモジュールを使用することにより、特定のオプションを一致させることができます。上記のcpuモジュールの例を参照してください。では、モジュールTCPがロードされます。tcpモジュールは特定のオプションを許可します:iptablesルールで使用するため。しかし、使用するとすでにtcpモジュールが有効になっているため、を使用しなくてもこれらのオプションを使用できます。すべての混乱が解消されることを願っています。-m tcp
--dport, --sport, --tcp-flags, --syn, --tcp-option
-p tcp
-m tcp
-m
オプションは実際にextension modules
は、追加のオプションを提供するロードに使用されます。たとえば、私の更新された回答とリンクを参照してください。
-m tcp
オプションなしでそのまま使用できます。--dport
tcpモジュールの一部であり、動作する-p tcp
だけです。私の答えをもう一度参照してください。