.
Network / OS => ゲートウェイサーバ構築 > 3.NAT と IPマスカレード(ポートフォワーディング) について
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

NAT と IPマスカレード(ポートフォワーディング) について

ネットワークを構築する上で、ネットワーク構造の詳細を知る必要はありませんが、以下は知っておいた方がパケットフィルタリング型ファイアーウォールについて話しが見えてくると思います。

プロトコル
プロトコルとは、コンピューター同士が通信を行う時に利用する約束事でプロトコルが異なると通信を行うことが出来ません。よく言語と比喩されますが、日本 語しか話せない人と英語しか話せない人とはコミュニケーションをとることが出来ません。 Widows 標準のネットワーク共有は NetBIOS という言語を利用しますが、これに対し、MacOS 9までは、AppleTalk となるため、相互通信の互換性はありません。
OSI参照モデル
参照 => @IT OSI参照モデル
異なるプラットフォーム、機種間におけるデータ通信を実現するために国際標準化機構によより定義されたネットワーク構造です。
TCP (Transmission Control Protocol)
TCPとは、上記OSI参照モデルで第4層(トランスポート層)に定義されているプロトコルです。送信元ポート番号を識別します。ネットワーク層の IP と TCP で、http(port80) や smtp(port25) などのセッションを確立します。
IP (Internet Protocol)
上記TCPの下位の第3層(ネットワーク層)に定義されているプロトコルです。通信経路を確立するために必要な情報 「IPアドレス(住所)、ルーティング(経路)」 が定義されています。通信状態を確認するためにPINGコマンド(ICMPパケット)を利用する場合は、このIP層となります。
TCP/IP
参照 => @IT ネットワーク プロトコルとインターネット
TCP/IPは、上記OSI参照モデルのネットワーク階層を更に統括したもので、インターネット、イントラネットで最も普及しているプロトコルです。

ここで紹介している内容は、TCP/IP に対しパケットレベルで介入することで、ファイアーウォール(パケットレベルで侵入経路を封ぐ)を構築したり、ネットワーク経路をコントロールする、という事になります。

NAT と IPマスカレード について

NAT と IPマスカレードは、先に説明したネットワーク層・トランスポート層をパケット フィルタリングにより置き換える事で通信の方向、制限を決定する仕組みです。ルーターと呼ばれる通信機器は、この役割を担っています。ここで構築する Linux ゲートウェイサーバー、つまり Linux を IP ルーターとして利用する場合も NAT / IPマスカレード等の仕組みを利用する事になります。

ネットワークを構築する上で要とも言える重要な役割となりますので、この点についても触れておきます。

NAT( Network Address Translation ).

NATでは、 IP アドレスの相互変換を行います。これによりネットワーク層のフィルタリングを行う事で、外部からはグローバルIPアドレスが割当てられた一つのコンピューターと通信を行っているように見えます。

外部からの接続要求
グローバルIPアドレス → NAT プライベートアドレスに変換 → ローカルホスト

内部からの接続要求
グローバルIPアドレス ← NAT グローバルアドレスに変換 ← ローカルホスト

コンピューター同士が通信を行うには、それぞれのNIC に固有のIPアドレスが必要になり、決して重複するIPアドレスが存在※1してはいけません。モデムなど直接PCに接続した場合は、世界に一つしかないグローバルIPアドレスは、モデムを接続しているコンピューターに割当てられるため、インターネットが利用できるのはモデムが系がれた1台だけになります。

NAT では、インターネット側のグローバルIPアドレスを、それぞれのコンピューターのプライベートアドレスに変換することで、どのコンピューターからもインターネットに接続できるようになります。

※1
IPアドレスが重複しないように自動的にIPアドレスを割当てるDHCPサーバーがあります。一般的にゲートウェイとなるサーバーや、ルーター自信のIPアドレスは、変化しては困るのでDHCPサーバーを使わず手動で割当てる必要があります。

このNATの動作には、 「動的NAT」 「静的NAT」 と呼ばれる動作があります。

動的NAT

複数のIPアドレスの接続要求に対する変換は、 「動的NAT」 と呼ばれています。

INTERNET
↓↑
216.239.37.99
WAN側に割当てられたグローバルIPアドレス
繋がる ↓↑ <- NAT変換 ->
ルーター
× 繋がらない
PC-1(192.168.1.10) PC-2(192.168.1.12)

NATは、IPアドレス単位の変換しか行えないため、PC-1 の セッションが終了するまで PC-2 はインターネットに接続する事が出来ません。 WAN側からは 216.239.37.99 しか見えないため、どちらのPCが応答要求を出しているのか識別できないからです。

静的NAT

上記の複数のIPアドレス変換を行う 「動的NAT」 に対して、決まった一つのIPアドレスに対しての変換を行うことを 「静的NAT」 といいます。

NATの欠点

IPアドレスごとの変換になるため、適切なパケットフィルタリングを行わなければ、インターネットから PC-1 へ素通しとなってしまいます。また、 複数のホストからの同時接続を行うことが出来ません。サーバーを公開する場合は、http smtp ftp などのサービスは一台のサーバー(PC)でしか行えないという事になります。

NATP(NAT+)について
 ネットワーク層(IPアドレス)の変換を行う NAT に対して、 トランスポート層(ポート番号)の変換を付加した技術です。後述する IPマスカレードは Linux (kernel) に NATP 実装させた事をIPマスカレードといい、同じものです。

 市販ルーターによっては、IPマスカレードと明記されている製品やNATP対応、または単にNAT 対応と明記されている製品があります。いずれもポート番号の変換をサポートすることで、複数のコンピューターから同時にインターネットが行えるようになっ ています。(後述)

IPマスカレード

IPマスカレードではネットワーク層のIPアドレスのみの変換を行う NAT に対して 送信元のパケットに含まれる ポート番号の識別 が行えます。このトランスポート層に含まれるポート番号を利用することで、PC-1 と PC-2 を識別し、複数のパソコンから同時にインターネットが利用出来るようになります。

INTERNET
↓↑
216.239.37.99
WAN側に割当てられたグローバルIPアドレス
空きポート付加 ↓↑ <- IPマスカレード ->
ルーター
↓↑空きポート付加
PC-1(192.168.1.10) PC-2(192.168.1.12)

今回構築する、ゲートウェイサーバーのeth1(192.168.1.56)  → eth0(192.168.0.56) で使用し、この間をファイアーウォールで保護する特になります。

IPマスカレード イメージ

IPマスカレードの利点

マスカレードとは偽装を意味します。IPアドレスのみの変換を行う NAT と異なり、ルーター内部(IPマスカレードによるパケットフィルタリング)でポートによる識別による変換を行うため、外部からは PC-1 / PC-2 への接続する事が出来ません。インターネット側から見れば、言わばIPアドレスの偽装であり、216.239.37.99 である事意外はわからず、IPマスカレードでIP層がフィルタリングされているため、外部からは PC-1 PC-1 を識別する事が出来ません。つまり、これだけでセキュリティ向上に一役買っていることになります。

INTERNET
↓↑
216.239.37.99
WAN側に割当てられたグローバルIPアドレス
216.239.37.99:25
への接続要求を変換↓
192.168.1.10:25
<- IPマスカレード ->
ルーター
216.239.37.99:80
↓への接続要求を変換
192.168.1.12:80
PC-1(192.168.1.10) PC-2(192.168.1.12)

つまり、サーバーを公開する場合は、ポート識別のトリックを利用する事で、一つのグローバルIPアドレスで、複数のサーバーを外部に公開出来るようになります。

IPマスカレードの問題点
 前述した通り、IPマスカレードは送信元パケットに含まれるポート番号を識別します。しかし、FTPプロトコルのようにアプリケーション層にもポート番 号を含むプロトコルのサービスを公開する場合(制御や転送を別々のTCPコネクションを要求するケース)、セッションを確立できないケースがあります。 (PASV/PORT)

これらの問題は、kernel モジュールで解決されていますが、古いディストリビューションによっては、別途カーネルモジュールを追加する必要がある場合もあります。利用しているファ イアーウォールによってはFTPサービスが利用できないという話は良く聞きますが、これらの理由からです。

またトラフィックが集中した場合、オーバーヘッドが発生し、IPマスカレードに必要な変換テーブルが不足する問題が発生します。新たに通信を開始できなくなる場合があります。

まとめ

このように、NAT / IPマスカレードは、ネットワーク層、トランスポート層でパケットフィルタリングを行う事で、通信経路をコントロールする事が出来ます。Linuxにおいては、kernel レベルで対応しており、 iptables を用いて設定を行います。

ルーターについて
 現在はネットワーク機器として市販ルーターが販売されていますが、インターネットが普及し始めた頃は存在せず、どんなに小規模なネットワークでも UNIX OS で構築するのが当たり前でした。一般家庭向けのルーターは、ipchains や iptables が行うNATやポートマッピング、パケットフィルタリング等の機能だけを取り出したネットワーク機器です。

また、パケットレベルのウイルスチェック機能や、ネットワーク型IDS を搭載、フィルタリングやログ監視を強化、NATセッション数を拡張したような高価な製品もあります。これらは、中小企業向けの製品ですが、スキルがあれ ば、Linux で同様のルーター構築することも可能です。IPv6 / IPsec VPNルーターだって作れてしまいます。

bottom_mark
ページ最上部
ページ最上部 前のページ