Linux netfilter/iptables の知識ポイントの詳細な説明

Linux netfilter/iptables の知識ポイントの詳細な説明

ネットフィルター

Netfilter は、パケット フィルタリング、転送、およびアドレス変換 NAT 機能を提供できる Linux カーネルのパケット処理モジュールです。 Iptables は、Netfilter でパケット処理ルールを追加、変更、削除するために使用できるツールです。

Netfilter は、ネットワーク カードとカーネル プロトコル スタック間の壁であり、無料のソフトウェア ファイアウォールです。

Netfilter には、ルール、テーブル、チェーンという 3 つの主要な概念があり、レベルが上がるにつれて概念も増えていきます。

  • ルールとは、一致するフィールドやアクションなど、特定のメッセージを処理する方法を説明したものです。
  • チェーンはルールの集合です。
  • テーブルは、チェーン内で同じ機能を持つルールの集合です。

ルール

チェーンは、ネットワーク カードとカーネル プロトコル スタック間の複数のチェックポイントと見なすことができます。異なる種類のメッセージの場合、通過できないチェックポイント、つまり到達不能チェーンに一致するチェックポイントによって処理されます。

  • ネットワーク カードからカーネル プロトコル スタックに送信されたメッセージ: PREROUTING -> INPUT
  • カーネル プロトコル スタックに送信できないネットワーク カードからのメッセージ: PREROUTING -> FORWARD -> POSTROUTING
  • カーネル プロトコル スタックからネットワーク カードに送信されるメッセージ: OUTPUT -> POSTROUTING

表面

管理を容易にするために、チェーン内の同じ機能を持つルールはテーブルに整理されます。iptables では 4 つのテーブルが定義されています。

テーブルの優先順位(高から低の順):raw -> mangle -> nat -> filter

テーブルチェーン関係

チェーンには複数のテーブルを含めることができますが、必ずしもすべてのテーブルが含まれているわけではありません。

データパケットはチェーンに基づいて処理されますが、実際の使用では、ルールを定義するための操作エントリとしてテーブルが使用されます。

iptables

iptables の紹介

Linux のパケット フィルタリング機能、つまり Linux ファイアウォールは、netfilter と iptables という 2 つのコンポーネントで構成されています。

netfilter コンポーネント (カーネル スペースとも呼ばれる) は、カーネルがパケット フィルタリング処理を制御するために使用するルール セットを含むパケット フィルタリング テーブルで構成されるカーネルの一部です。

iptables コンポーネントは、パケット フィルタリング テーブルへのルールの挿入、変更、削除を簡単に行うことができるツール (ユーザー スペースとも呼ばれます) です。

Iptables の基礎

iptables はルールに従って動作することがわかっています。ルールは実際にはネットワーク管理者によって事前に定義された条件です。ルールは通常、「パケット ヘッダーがこのような条件を満たす場合は、パケットをこのように処理する」と定義されます。ルールはカーネル空間のパケット フィルタ テーブルに保存されます。これらのルールは、送信元アドレス、宛先アドレス、トランスポート プロトコル (TCP、UDP、ICMP など)、およびサービス タイプ (HTTP、FTP、SMTP など) を指定します。データ パケットがルールに一致すると、iptables は受け入れ、拒否、ドロップなど、ルールで定義された方法に従ってパケットを処理します。ファイアウォールを構成する主なタスクは、これらのルールを追加、変更、および削除することです。

クライアントがサーバーの Web サービスにアクセスすると、クライアントはネットワーク カードにメッセージを送信します。TCP/IP プロトコル スタックはカーネルの一部です。そのため、クライアントの情報はカーネルの TCP プロトコルを介してユーザー空間の Web サービスに送信されます。このとき、クライアント メッセージのターゲット宛先は、Web サービスが監視するソケット (IP: ポート) です。Web サービスがクライアントの要求に応答する必要がある場合、Web サービスが送信する応答メッセージのターゲット宛先はクライアントです。このとき、Web サービスが監視する IP とポートが発信元になります。netfilter は実際のファイアウォールであると述べました。これはカーネルの一部です。したがって、ファイアウォールで「防火」の目的を達成するには、カーネルにレベルを設定する必要があります。すべての受信メッセージと送信メッセージは、これらのレベルを通過する必要があります。検査後、リリース条件を満たすものだけがリリースされ、ブロック条件を満たすものはブロックする必要があります。その結果、入力レベルと出力レベルが表示されますが、これらのレベルは iptables では「レベル」ではなく「チェーン」と呼ばれます。

Linux netfilter/iptables の知識ポイントの詳細な説明に関するこの記事はこれで終わりです。Linux - netfilter/iptables の関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Vueタイムラインコンポーネントの使い方

>>:  MySQLデッドロック問題の詳細な分析

推薦する

MySQL接続クエリにおけるととwhereの違いの簡単な分析

1. テーブルを作成する テーブル「学生」を作成( `id` int(11) NULLではない、 `...

jsを使用してシンプルな弾幕スクリーンシステムを実装する

この記事では、弾幕効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的な...

CSSはcalc()を使用して現在の表示画面の高さを取得します

まず、CSS3 の相対的な長さの単位を見てみましょう (詳細なチュートリアルを参照してください)。相...

VMware 仮想マシンでの Centos8 ブリッジの静的 IP 設定方法

1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...

リフレッシュリダイレクトを実現する HTML ヘッドタグメタ

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

VmWareでcentos7をインストールするときにインターネットにアクセスできない問題の解決策

Centos7 のインストール時に VmWare がインターネットにアクセスできない場合はどうすれば...

dockerログマウントの問題を解決する

重要なのは、ローカルサーバーに書き込み権限がないことですキーはここにあります(アクセス拒否)。私は肯...

MySQL の組み込み関数 find_in_set を使用した効率的なあいまい検索の詳細な説明

一般的に使用される方法は次の 4 つです。 1.locate()メソッドを使用する一般的な使用法: ...

MySQL マルチインスタンス構成ソリューション

1.1 MySQL マルチインスタンスとは何ですか?簡単に言うと、MySQL マルチインスタンスとは...

MySQLでレコードを変更する場合、更新操作フィールド = フィールド + 文字列

シナリオによっては、varchar 型のフィールドを変更する必要があり、変更の結果は 2 つのフィー...

Vueでデータを読み取るためにこれを悪用しないでください

目次序文1. これを使用してデータ内のデータを読み取るプロセス2. Dep.target はいつ存在...

TypeScriptにおけるunknownとanyの違いについて詳しく説明します

目次序文1. 不明 vs 任意2. 未知とあらゆるもののメンタルモデル3. まとめ要約する序文any...

js のマクロタスクとマイクロタスクについての簡単な説明

目次1. JavaScriptについて2. JavaScript イベントループ3. マクロタスクと...

nginx を使用してカナリアリリースをシミュレートする方法

この記事では、ブルーグリーン デプロイメントと、nginx を使用してカナリア リリースを最も簡単な...

JavaScript と JQuery フレームワークの基本チュートリアル

目次1. JS オブジェクトDOM –1、機能–2、テスト3. jQuery –1. 概要–2、使用...