検索
連載

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

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

Share
Tweet
LINE
Hatena

 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.

       | 次のページへ
ページトップに戻る