web-dev-qa-db-ja.com

-mおよび-pパラメーターを持つIptables

私のiptablesには次のルールがあります:

iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP

本当に「-mtcp」が必要ですか?私はすでに「-ptcp」を使用していますが、より安全にするために「-mtcp」を使用する必要がありますか?

8
Samul

-p tcpオプションを使用すると、tcpモジュールがすでにロードされているため、多少冗長であり、-m tcpオプションを使用する必要はありません。このオプションを使用すると、ルールがさらに作成される理由はわかりません。安全です。

理解と比較を深めるには、 iptablesのmanページ を参照してください。

-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 module

cPU

[!]-CPU番号

このパケットを処理するCPUと一致します。 CPUには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

Linux2.6.36以降で使用できます。

iptables-extensions。 の完全なリスト


OPからの追加の質問:-mが何に一致するのかわかりません。何の文字列? -m tcpは何に一致しますか? 「tcp」という単語をどこで見つけようとしますか?

回答:-mはマッチングモジュール名用であり、文字列ではありません。特定のモジュールを使用することにより、一致する特定のオプションを取得します。上記のCPUモジュールの例を参照してください。 -m tcpを使用して、モジュールtcpがロードされます。 tcpモジュールでは、次の特定のオプションを使用できます。--dport, --sport, --tcp-flags, --syn, --tcp-optionをiptablesルールで使用します。ただし、-p tcpを使用すると、すでにtcpモジュールが有効になっているため、-m tcpを使用しなくてもこれらのオプションを使用できます。それがあなたのすべての混乱を取り除くことを願っています。

9
Diamond