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


85

私はこのハウツーを読んでますが、次のようなものがあります:

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

$ 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ますか?彼らは、人は働かないかもしれないと言いますが、その理由は言いません。なぜ私は一方よりも他方を好むべきですか?



わかりました、この質問を削除する必要がありますか?
ミハイルモルフィコフ14年

1
@ John1024-重複は単一のSEサイト内のみです。Qが特定のSEサイトを管理する規則の範囲内にある限り、複数のSEサイトに同様の質問を投稿しても問題ありません。
slm

1
@MikhailMorfikov-あなたの質問は、他のSEサイトの他のQに似ていますが、ここでは完全に問題ありません!
slm

1
@Totor-答えに私の「データポイント#4」が表示される場合、state実際にはのエイリアスconntrackです。だからそれは問題ではありません。将来のある時点でそれらはstate完全に削除されるかもしれませんが、当分の間、それを使用するかどうかは問題ではないでしょう。
slm

回答:


99

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

データポイント#1

この文書によると、conntrack拡張は取って代わりましたstate

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

データポイント#2

それでも、「SFの状態とポリシーに関する質問」というタイトルのSF Q&Aを見つけましたOPは、#iptables @ freenodeのIRCでこの質問をしたと主張しました。そこで議論した後、彼は次のような結論に達しました。

技術的には、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" ルーティング/ DNATフィックスアップのような非常に便利な;-)

データポイント#4

私はnetfilter@vger.kernel.org netfilteからこのスレッドを見つけた/ iptablesの議論は、題し:状態の試合は廃止1.4.17でかなりのことが言い、stateするだけの別名であるconntrackので、それは本当に問題であなたが、使用しません。あなたが使用している両方の状況conntrack

抜粋

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

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

エイリアシングがユーザー空間で行われた場合、カーネル部分は削除される可能性があります-いつかは。

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

参照資料


3

私はnetfilterの専門家ではありませんが、iptables-extensionのマンページとサプライズを調べました。

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

したがって、状態はconntrackの一部であり、本当に必要な場合は単純なバージョンです--stateとconntrackのより洗練された機能以外

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.