NAPT によるインターネット接続を可能にする (CentOS 5.5) : Linux の使い方


NAPT を使ってインターネットへの接続環境を提供する

通常、"192.168.0.1" 等のプライベート IP アドレスが設定されたパソコンは、インターネットに接続できないことになっています。

プロバイダーと契約してインターネットを利用している場合には、最終的には何らかの形で、グローバル IP アドレスというインターネットを利用可能な IP アドレスが 1 つ貸し与えられています。

その、インターネットを利用可能な唯一のグローバル IP アドレスを複数のパソコンで共用する仕組みが NAPT (Network Address Port Translation) となります。昔は "IP マスカレード" という言葉が多く広まっていた気がしますけど、それと同じ機能です。

 

市販されているブロードバンドルーターには必ずこの NAPT 機能が搭載されていて、知らないうちに利用していることと思います。

同じように CentOS 5.3 でルーティング機能を有効にするPPPoE でプロバイダーに接続する でお話ししたような内容で Linux をルーターに使用する場合には、この NAPT の設定も欠かすことのできない大切な設定になってくると思います。

 

CentOS 5.5 で NAPT 設定を行うためには、標準でインストールされている "iptables" を使って行います。

例えば、ローカルネットワーク "192.168.0.0/24" に接続されているパソコンに、ネットワークインターフェイス "ppp0" を使ったインターネットを利用できるようにするためには、次のような設定を行うことになります。

 

CentOS 5.5 では "/etc/sysconfig/iptables" に、iptables コマンドの restore オプションに渡される設定ファイルが用意されていますので、そのファイルに以下の内容を追記します。

追記する場所は、"*filter" で始まって "COMMIT" で終わった次の辺りになると思います。

*nat

 

-A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE

 

COMMIT

このようにすることで、iptables の "nat" テーブルにルールが登録されます。

登録されるルールは、送信元の IP アドレスが "192.168.0.0/24" で、その送信先がインターフェイス "ppp0" を通った先にある場合には、そのパケットをルーティングし終えるタイミングで、NAPT 処理 (MASQUERADE) を行うというものになります。

これにより、"ppp0" より先にあるインターネットへ通信しようとするパケットを拾って、そのパケットの送信元に設定されている "192.168.0.121" 等のプライベート IP アドレスを "ppp0" に設定されているグローバル IP アドレスに一時的に置き換えるということが、暗黙的に行われるようになります。

後は LAN に接続されたパソコンが、この設定を行った Linux をディフォルトゲートウェイとして使用すれば、インターネットを利用して通信を行うことができるようになります。