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デッドロック問題の詳細な分析

推薦する

html+css3で実装されたログインインターフェース

成果を達成するまずHTMLを使って基本的なフレームワークを構築します <本文> <...

JDBC および MySQL 一時テーブルスペースの詳細な分析

背景一時テーブルスペースは、データベースのソート操作を管理し、一時テーブルや中間ソート結果などの一時...

HTMLの基本タグと構造の詳細な説明

1. HTMLの概要1.HTML: ハイパーテキスト マークアップ言語。これはプログラミング言語では...

MySQL 5.7 データベースのインストール手順の個人的な要約

1.mysql-5.7.19-winx64.zip(これは無料のインストールバージョンで、約318 ...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...

HTML でハイパーリンク タグを使用するチュートリアル

ウェブサイトのさまざまな HTML ドキュメントはハイパーリンクを通じて相互に接続され、一貫性のある...

Websocket+Vuexはリアルタイムチャットソフトウェアを実装します

目次序文1. 効果は図の通りです2. 具体的な実施手順1. Vuexの紹介2.webscoked実装...

React Nativeでaxiosを使用してネットワークリクエストを行う方法

フロントエンド開発では、Ajax、jQuery ajax、axios、fetch など、データ要求を...

CentOSにDockerをインストールする方法

ここでは比較的簡単なインストール方法のみを紹介します。 1. yumを使用してインストールするyum...

vue3 再帰コンポーネントカプセル化の全プロセス記録

目次序文1. 再帰コンポーネント2. 右クリックメニューコンポーネント要約する序文今日、プロジェクト...

Nginx の書き換え正規マッチング書き換え方法の例

Nginx の書き換え機能は、リダイレクトと同様に、URL アドレスを一時的または永続的に新しい場所...

JS で async await をエレガントに使用する方法

目次jQuery の $.ajax Webpack時代の始まり約束について深く考えるネストをなくすj...

docker と docker-compose による eureka の高可用性の実現の詳細な説明

最近、新しいプロジェクトでは springcloud と docker が使用されています。この 2...

CSS マージンの折りたたみの詳細な説明

前のこれは古くからある古典的な質問です。以前読者から質問があったので、ここでお答えします。簡単な例か...

XHTML+CSS Web ページ作成における美しいスタイルシートの適用

これはかなり前に書かれた記事です。今となっては、その中の考え方は学ぶ価値があるように思えます。jb5...