連載
» 2005年05月17日 00時00分 UPDATE

習うより慣れろ! iptablesテンプレート集(2):natテーブルを利用したLinuxルータの作成 (1/6)

iptablesのNAT機能を利用すれば、Linuxをルータにできる。さらに、NATの応用例として透過型プロキシを構築してみる。(編集部)

[鶴長鎮一,@IT]

 PCはネットワークインターフェイスの増設が容易なため、市販のブロードバンドルータの代わりにPC+Linuxをルータにするケースもあります。そこで、Linuxホストをルータとして使用する際に必要な設定を紹介します。ブロードバンドルータの重要な機能であるNATをLinuxで実現するのもiptablesの機能の1つです。

natテーブルによるNATの実現

 NAT(Network Address Translation)は、パケット中のIPアドレスを書き換える技術です。ソース側を書き換える場合を「SNAT」、ディスティネーション側を書き換える場合を「DNAT」と呼びます。「1つのグローバルアドレスを複数のプライベートアドレスで同時に共有する」こともNATと呼ぶことがありますが、これはIPマスカレードまたはNAPT(Network Address Port Translation)のことです。これらの技術では、単なるIPアドレスの書き換えだけでなく、TCPやUDPのポート番号も変換してプライベートアドレスを同時に使えるようにしています。

 iptablesでNATを操作するには、「natテーブル」を使用します。「テーブル」はiptablesの重要な概念です。前回紹介したチェインは、フィルタルールを集めてモジュール化したものです。このチェインをさらにグループ化したのがテーブルです。テーブルの種類によって、使えるチェインも異なります。

 前回紹介したテンプレートでは、テーブルを指定していません。この場合(テーブル指定省略時)は「filterテーブル」が使用されています。このfilterテーブルで使用できるチェインがINPUT、OUTPUT、FORWARDです。natテーブルでは、POSTROUTING、PREROUTING、OUTPUTの3つのチェインが使えます。

r5z01.gif

図 filter+natテーブルの構造
PREROUTINGチェイン
ディスティネーションアドレスの書き換え/DNAT
POSTROUTINGチェイン
ソースアドレスの書き換え/SNAT
OUTPUTチェイン
ローカルで生成されたパケットのディスティネーションアドレスの書き換え/DNAT

 「Linuxで作るファイアウォール[NAT設定編]」も参照することで、ここで用いた「ディスティネーション/ソース」と、「内部ネットワーク(プライベートアドレス側)/外部ネットワーク(グローバルアドレス側)」の関係をより理解できるでしょう。

 テーブルには、filterやnatのほかにmangleがあります。これについては別の機会に説明します。

       1|2|3|4|5|6 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。