パケットフィルタリングや NAT の機能は、Linux カ ーネルの NetFilter と呼ばれる機能によって実装されています。NetFilter は、そ の管理ツールが iptables コマンドであるため、iptables と呼ばれることもあります。この章では iptables を使用したパケットフィルタリング と NAT の基本的な設定手順について解説します。
クライアントとサーバーから構成されるネットワーク通信では、クライアントがサーバーへ通信要求を出 します。この際、IP パケットのヘッダには、送信元(クライアント)の IP アドレスやポート番号 および送信先(サーバー)の IP アドレスやポート番号などが含まれます。クライアントのポート番号 はプログラムの起動時に決定されランダムなポート番号(1024〜65535)が使用されるため固定では ありません。一方、サーバープログラムの多くは、ウェルノウンポート番号(0〜1023)を使用します。 通常、サーバーのポート番号は提供するサービスごとに固定のポート番号が割り振られています。代表 的なウェルノウンポート番号を以下に示します。
表 21-1.
| プロトコル | ポート番号 | サービス |
|---|---|---|
| TCP | 21 | FTP |
| TCP | 22 | SSH |
| TCP | 23 | TELNET |
| TCP | 25 | SMTP |
| TCP | 80 | HTTP |
| TCP | 110 | POP(POP3) |
| TCP | 143 | IMAP |
| TCP、UDP | 53 | DNS |
| UDP | 69 | TFTP |
| UDP | 123 | NTP |
![]() | 代表的なネットワークサービスが使用するプロトコルとポート番号は、/etc/services ファイルで確認することができます。 |
パケットフィルタリングとは、IP パケットのヘッダに含まれる IP アドレスやポート番 号などの情報を参照し、そのパケットに対する処理を決定するメカニズムです。ネットワークインタ ーフェースに入力(INPUT)、転送(FORWARD)、出力(OUTPUT)されるパケットは、ユーザー が指定したルールに従い通過を許可(ACCEPT)するか、あるいは破棄(DROP)するかの決定が下 されます。Turbolinux 10 Server では、これらのルールを iptables コマンドで定義します。したがって、iptables でパケットフィルタリングの設定を行うには、TCP/IP ネットワークの基本的な知識が必要不可欠です。
パケットフィルタリングのルールを指定する前に、パケットの経路について理解しておきましょう。下図はパケットが通過する経路に関する概念図です。

カーネルはパケットフィルタリングを行うために 3 つのルールリストをあらかじめ保持しています。 これらはチェインと呼ばれ、INPUT(入力)、FORWARD(転送)、OUTPUT(出力)の 3 つが存在します。
カーネルはパケットがネットワークインターフェイスに入ってくると、そのパケットの行き先を参照 します。これはルーティングと呼ばれます。もし、パケットの行き先が自ホストのプロセスであれば、 パケットは INPUT チェインへ入ります。転送(FORWARD)されるパケットに INPUT チェインは 利用されません。そして、INPUT チェインで設定されたルールに従ってそのパケットは処理されます。 もし、破棄されることなく通過すればそのパケットを待っているローカルプロセスが受け取ります。
ホストが転送するパケットは FORWARD チェインへ入り、FORWARD チェインのルールに従い処 理されます。しかし、転送先が不明な場合やパケット転送が有効でない場合、そのパケットはその場 で破棄されます。破棄されることなく通過すれば、そのパケットは他のネットワークインターフェイ スから送り出されます。
![]() | ネットワークインターフェース間のパケット転送を有効にするには、 以下のコマンドを実行し、/proc/sys/net/ipv4/ip_forward の値を 1 (有効)にします。あるいは、ネットワーク設定ツールの turbonetcfg で有効にすることも可能です。turbonetcfg で有効にすれば、システム再起動後でも有効にした値は保持されます。
|
自ホストのプロセスから送り出されるパケットは OUTPUT チェインへ入ります。そして OUTPUT チェインで設定されたルールに従い処理されます。もし、破棄されることなく通過すれば、 そのパケットは送り出されます。
各チェインには、複数のルールを設定できます。各チェインへ入ってきたパケットは、設定されてい る順番どおりに各ルールと一致するかどうかが調査されます。 設定されているルールとパケットが一致した場合、そのパケットの調査は終了します。したがって、ルールの順序は重要な意味を持ちます。いずれのルールにも一 致しないとき、パケットは各チェインに設定されているデフォルトポリシー従って処理されます。ポリシー には次の 2 つのアプローチがあります。
ルールにマッチしなかったパケットは全て許可(ACCEPT)
ルールにマッチしなかったパケットは全て拒否(DROP)
どちらがよいかという判断は一概にはできません。前者は使い勝手はよくなりますが、セキュリティ 上の問題が発生しやすくなります。また、後者はセキュリティは強化されますが、使い勝手が悪くな ります。しかし、セキュリティを気遣うのであれば、デフォルトポリシーは DROP に設定し、許 可するパケットのみを ACCEPT するのが一般的です。
Turbolinux 10 Server の初期状態ではすべてのチェインのポリシーが ACCEPT に設定されています。 したがって、いかなるパケットもフィルタリングの対象とはなりません。必要に応じて、ネットワーク環境に応じた フィルタリングルールを適切に設定してください。