-mおよび-pパラメーターを使用したiptables


8

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

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

「-m tcp」は本当に必要ですか?「-p tcp」を既に使用しているので、「-m tcp」を使用してより安全にする必要がありますか?

回答:


9

この-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が何に一致するかを教えてもらえますか?たとえば、通常のTCP接続では、-mはどの文字列と一致しますか?文字列の例を提供してください
Samul

1
どういたしまして。ご覧のように、-mオプションは実際にextension modulesは、追加のオプションを提供するロードに使用されます。たとえば、私の更新された回答とリンクを参照してください。
ダイヤモンド、

ありがとう!:)最後の1つの考え:私の場合、 "-m"を正しく保つ必要があると思いますか?これを参照してください:iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP「--dport」を使用し、-mを使用した場合にのみ--ddportを使用することが可能だと思いますか?
Samul

@Samul、そうでもない。-m tcpオプションなしでそのまま使用できます。--dporttcpモジュールの一部であり、動作する-p tcpだけです。私の答えをもう一度参照してください。
ダイヤモンド

あなたはとても親切です、ありがとう!しかし、参照してください:-mが何に一致するのかわかりません。何の糸?-m tcpは何に一致しますか?「tcp」という単語を見つけようとしますか?
Samul、2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.