natテーブルを利用したLinuxルータの作成:習うより慣れろ! iptablesテンプレート集(2)(1/6 ページ)
iptablesのNAT機能を利用すれば、Linuxをルータにできる。さらに、NATの応用例として透過型プロキシを構築してみる。(編集部)
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つのチェインが使えます。
図 filter+natテーブルの構造
・PREROUTINGチェイン
ディスティネーションアドレスの書き換え/DNAT
・POSTROUTINGチェイン
ソースアドレスの書き換え/SNAT
・OUTPUTチェイン
ローカルで生成されたパケットのディスティネーションアドレスの書き換え/DNAT
「Linuxで作るファイアウォール[NAT設定編]」も参照することで、ここで用いた「ディスティネーション/ソース」と、「内部ネットワーク(プライベートアドレス側)/外部ネットワーク(グローバルアドレス側)」の関係をより理解できるでしょう。
テーブルには、filterやnatのほかにmangleがあります。これについては別の機会に説明します。
Copyright © ITmedia, Inc. All Rights Reserved.