web-dev-qa-db-ja.com

-m conntrack --ctstateと-m state --stateの違いは何ですか

私は this howtoを読んでいます、そしてこのようなものがあります:

確立されたセッションがトラフィックを受信できるようにすることができます。

$ Sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

上記のルールには、ESTABLISHED、RELATEDのカンマの両側にスペースがありません。

上記の行が機能しない場合、プロバイダーが拡張機能を使用可能にしていない去勢されたVPSを使用している可能性があります。その場合、下位バージョンを最後の手段として使用できます。

$ Sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-m conntrack --ctstate-m state --stateでの作業に大きな違いはありますか?彼らは人は働かないかもしれないと言います、しかし彼らは理由を言いません。なぜ私はどちらか一方を好むべきですか?

91

iptablesルールのエキスパートであるとは主張していませんが、最初のコマンドは接続追跡拡張機能(conntrack)を使用しており、2番目のコマンドはstate拡張機能を使用しています。

データポイント#1

このドキュメント によると、conntrack拡張はstateに取って代わりました。

 Obsolete extensions:
  • -m state: replaced by -m conntrack

データポイント#2

それでも私はこのSF Q&Aのタイトルを見つけました: 状態とポリシーに関するファイアウォールの質問? OPがこの質問をしたと主張したところIRC in#iptables @ freenode。Afterそこで議論して、彼は次の結論に達しました:

技術的には、conntrackの一致は、状態の一致に取って代わります。しかし実際には、州の一致は決して廃止されていません。

データポイント#3

最後に、このSF Q&Aというタイトルの Iptables、-m stateと-m conntrackの違いは何ですか? を見つけました。この質問からの回答は、conntrackstateの使用法を表示する方法に関するおそらく最も良い証拠とアドバイスです。

抜粋

どちらも(接続追跡サブシステム)の下で同じカーネル内部を使用します。

Xt_conntrack.cのヘッダー:

xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)

だから私は言うでしょう-状態モジュールはより単純です(そしておそらくエラーが起こりにくい)。カーネルでも長くなります。反対側のConntrackには、より多くのオプションと機能があります [1]

私の呼びかけは、機能が必要な場合はconntrackを使用し、それ以外の場合は状態モジュールを使用することです。

[1]"-m conntrack --ctstate DNAT -j MASQUERADE" routing/DNAT fixup ;-)のようにかなり便利です

データポイント#4

このスレッドは、netfilter @ vger.kernel.orgのnetfilte/iptablesディスカッションから見つかりました。タイトルは state match is obsolete 1.4.17 です。これは、stateconntrackの単なるエイリアスであるため、どちらを使用するかは重要ではありません。どちらの状況でもconntrackを使用しています。

抜粋

実際、私は同意しなければなりません。 「state」をエイリアスとして保持し、「conntrack」の古い構文を受け入れないのはなぜですか?

状態は現在エイリアスされており、カーネルにある場合はiptablesのconntrackに変換されます。壊れたスクリプトはありません。

エイリアスがユーザー空間で行われる場合、カーネル部分を削除できます-いつかは。

エイリアシングはすでにユーザー空間で行われています。 1つは「状態」と入力し、「conntrack」に変換されてから、カーネルに送信されます。 (ipt_stateなどのモジュールエイリアスがconntrackモジュールに追加されたかどうかを確認する限り、状態カーネルモジュールも削除できます。)

参考文献

103
slm

私はnetfilterの専門家ではありませんが、iptables-extensionのマンページを調べたところ、驚きました。

The "state" extension is a subset of the "conntrack" module.

したがって、stateはconntrackの一部であり、本当に--stateだけが必要な場合の単純なバージョンであり、conntrackのより豪華な機能ではありません

5