ネットワークアドレス変換

出典: フリー百科事典『ウィキペディア(Wikipedia)』

NAPT から転送)

ネットワークアドレス変換(ネットワークアドレスへんかん)は NAT(ナット、Network Address Translation の略語)とも呼ばれる、インターネット上のパケットに付いている IPアドレスポート番号を別のものに変換する技術である。主に プライベートIPアドレスを使用するホストからインターネットにアクセスするために利用される。

目次

[編集] 技術の概要

[編集] IP アドレスの枯渇

インターネットではもともと、接続されているすべてのルータホストにそれぞれ IP アドレス (グローバル IP アドレス) を割り当てていた。しかしインターネットに接続されるホストが著しく増えたため、約 43 億個しかない IP アドレスは枯渇するようになった。こうした状況へ対応するため、ローカルなネットワーク内にあるホストにはプライベート IP アドレスを割り当て、インターネットに接続するときにだけグローバル IP アドレスを使うようにする技術が開発された。このときにプライベート IP アドレスとグローバル IP アドレスの変換をする機能がもともとのネットワークアドレス変換 (NAT) である。

アメリカ以外の国、例えば日本などでは割り当てられた IP アドレスに比べてコンピュータの普及が著しいため、IP アドレスが不足しやすい。最近の予測によれば 2010 年ころに IP アドレスが枯渇するといわれている。したがって,これらの国においてはネットワークアドレス変換は特に重要性が高いといえる。日本向けに発売されている ADSLFTTH などに対応したブロードバンドルータにおいては、業務用、家庭用を問わずネットワーク・アドレス変換を持っていることが多い。

[編集] 動的 NAT

動的 NAT (ダイナミック NAT) とは、LAN 内部の IP アドレスをあらかじめ用意された外部 IP アドレスのなかの 1 個を選択してその IP アドレスに動的にマップする技術のことである。動的 NAT はセキュリティや不足する IP アドレスの問題解決に役に立つが、IP アドレスが固定されないという問題点がある。たとえば、LAN 内部のサーバをインターネットなど、外部から参照する必要が生じた場合、外部から参照するためにはグローバル IP アドレスが必要だが、動的 NAT では解決できない。

[編集] 静的 NAT

静的 NAT (スタティック NAT) とは、LAN 内部の IP アドレスを常に同一の外部の IP アドレスに静的にマップする技術のことである。この技術を使用すれば、LAN の外部から常に同一の IP アドレスを指定することによって内部サーバにアクセスすることができる。

[編集] NATとNAPT

現在では、プライベートIPアドレスとグローバルIPアドレスの変換に加えてポート番号も変換できるNAPTが用いられることが多い。

もともとのネットワークアドレス変換(NAT)では、送受信するパケット上のIPアドレスだけを識別して変換するため、複数のホストから同時にローカル外のネットワークには接続できない。NAPTでは、IPアドレスに加えてポート番号の識別や変換をすることで、複数のホストから同時にローカル外のネットワークに接続できるようになっている。

[編集] セキュリティ

ネットワークアドレス変換には、セキュリティを高める効果もある。グローバルIPアドレスをプライベートIPアドレスに変換するときに、パケットフィルタリング(パケット(syn)の条件を指定して制限)ができるためである。実際には、プライベートIPアドレスを割り当てられたホストには、特別な設定をしない限り外部のネットワークからは接続できないことが多い。こうした特徴から、ネットワークアドレス変換は簡易的なファイアウォールの一種と考えることもできる。

[編集] 批判

その一方、インターネットが本来掲げていたピア・ツー・ピアでの接続に対する障害になりうるという批判的な意見もある(エンドツーエンド接続性)。また、FTPや、SIPなどのVoIPを機能させるためには工夫が必要な場合もある。

また、複数のローカルIPアドレスからのアクセスを、1つのグローバルIPアドレスで共有しているため、外からはローカルネットワーク内のどのノードがアクセスしたのかまでを特定することはできない。このためインターネットカフェなどの不特定多数の人が利用するアクセス端末からの、悪意のある利用(SPAM行為や掲示板荒らしネット犯罪など)がなされた場合、匿名性が高く特定がより困難になる。

[編集] NATの分類

ネットワークアドレス変換 (Network address translation) はアドレスやポート番号を変換するさまざまな仕組みに実装されている。そして、それぞれのアプリケーションの通信プロトコルに異なった影響を及ぼす。IPアドレスの情報を使用するいくつかのアプリケーションプロトコルはマスカレードに用られる外部のアドレスを決定する必要がある。そしてさらに、しばしば与えられたNAT機器に用いられるマッピングの種類を発見し、分類する必要がある。 このために、Simple traversal of UDP over NATs (STUN) protocol は開発された。 それ (STUN) はNATの実装をFull cone NATRestricted cone NATPort restricted cone NAT、もしくはSymmetric NAT[1][2] に分類し、それ(この分類)に応じて機器を検査するための一つの手法を提案した。 しかしながら、その後これらの手順はスタンダードステータスから除外された。なぜならこれらの方法は不完全で、多くの機器を正しく評価するには不十分であると判明したからである。新しい方法は RFC 5389 (2008) に記述されており、STUNの頭文字は現在、この仕様の新しいタイトルを表わす: Session Traversal Utilities for NAT

Full cone NAT(または1対1NAT)
  • 内部アドレス (iAddr:port1) は外部アドレス (eAddr:port2) にマップされた時点で、iAddr:port1 から来た任意のパケットは eAddr:port2 から送られる。任意の外部ホストはパケットを eAddr:port2 宛に送ることによって iAddr:port1 に送ることができる。
Address-Restricted cone NAT
  • 内部アドレス (iAddr:port1) は外部アドレス (eAddr:port2) にマップされた時点で、iAddr:port1 から来た任意のパケットは eAddr:port2 から送られる。外部ホスト (hostAddr:任意) は iAddr:port1 が hostAddr:任意 にパケットを送ったことがある場合にのみ、eAddr:port2 にパケットを送ることによって、パケットを iAddr:port1 に送ることができる。"任意" はポート番号が何でもよいということを意味する。
Port-Restricted cone NAT

Restricted cone NATのように振る舞うが、ポート番号も制限される。

  • 内部アドレス (iAddr:port1) は外部アドレス (eAddr:port2) にマップされた時点で、iAddr:port1 から来た任意のパケットは eAddr:port2 から送られる。外部ホスト(hostAddr:port3) は、 iAddr:port1 が hostAddr:port3 にパケットを以前に送った場合にのみ、 eAddr:port2 にパケットを送ることによって、パケットを iAddr:port1 に送ることができる。
Symmetric NAT
  • 同一内部IPアドレスとポートから特定の宛先IPアドレスに対する要求は全て、唯一の外部ソースIPアドレスとポートにマップされる
    異なる宛先に対しては、同一内部ホストがたとえ同じソースアドレスとポートでパケットを送っても、異なるマッピングが使われる。
  • 内部ホストからのパケットを受け取った外部ホストのみがパケットを送り返すことができる。

この用語は多くの混乱を招く原因であった、なぜならそれは現実のNATの振る舞いを記述するには不適切であると判明したからである。[3] 多くのNATの実装はこれらの種類を組み合わせている。従ってCone/Symmetricという用語を使う代わりに、それぞれ固有のNATの振る舞いに言及する方がよい。特に、たいていのNAT変換装置は外部に出て行く方向への接続に対するSymmetricNAT静的ポートマッピングとを組み合わせている。外部アドレスとポートに入ってくるパケットは特定の内部アドレスとポートにリダイレクトされる。いくつかの製品は、例えば何台かのサーバの間に負荷を分散するために、複数の内部ホストにパケットをリダイレクトできる。しかしながら、これは多くの相互接続パケットが存在するような、より複雑な通信の場合に問題を引き起こす。従って滅多に使われることはない。

多くのNATの実装はポート維持設計に従う。 ほとんどの通信において、NATは内部と外部のポート番号として同じ値を使う。 しかしながら、2つの内部ホストが同じポート番号を使って同じ外部ホストと通信しようとするならば、2番目のホストによって使われる外部ポート番号はランダムに選ばれる。このようなNATは、時にはRestricted cone NATのように見え、別の時にはSymmetric NATのように見える。

[編集] 関連技術

[編集] NAPT

NAPT(ナプト、Network Address Port Translation)は、IPアドレスに加えてポート番号も識別・変換する機能である。Linux上ではこのことをIPマスカレード(マスカレード(masquerade)は、仮面舞踏会の意味)と称することがある。

[編集] Connection Tracking機能

NATやNAPTではFTPSIPなどのVoIPなどうまく動作しないアプリケーションがあるため、さらにコネクションとトラッキングすることでそれらに対処した技術。Linuxiptablesなどで実装されている。

[編集] GapNAT機能

住友電工製のADSLモデムに内蔵のルータに実装されたDMZを実現する機能の名称[1]。 1つのグローバルIPアドレスしか提供されないIP接続サービス環境下において、DHCPによりローカルの一つのコンピュータにグローバルIPアドレスを割り当て、それ以外のコンピュータにはローカルIPアドレスを割り当てる。これによって、グローバルIPアドレスを割り当てられたコンピュータは、グローバルIPアドレスを直接使用しなければならないネットワークアプリケーションを動作させることができる。

[編集] UPnP の規定するInternet Gateway Device(IGD)

UPnPのインターネットゲートウェイデバイス(IGD)仕様に準拠したNATルータは,それに対応したアプリケーションからさまざまな操作(Action)を受け付けることが可能である。この動作の中に、ポートマッピングを作成・削除・情報取得を行う操作(Action)がある。 UPnP NAT Traversalとも呼ばれる。

これにより、使用するアプリケーションがポートマッピングを要求する場合、従来はユーザーがNATルータにたとえばwebブラウザからアクセスするなどして,手動で設定を加えなければならなかったものが、アプリケーション自身が直接ルーターにアクセスしポートマッピングのエントリーを追加・削除できるようになった。

市場に出回る「ブロードバンドルータ」などの商品名のもので「UPnP機能搭載」や「UPnP NAT Traversal対応」などと書かれている製品がこれにあたる。

[編集] IPv4 IPv6間 NAT

2007現在、IPアドレス枯渇問題で足りないとされているIPv4のIPアドレスであるが、将来的にはIPv6のIPアドレス体系に移行すれば、枯渇問題は解決すると見られている。しかし、その移行期間においてはIPv4とIPv6の双方のネットワークが混在することになり、両ネットワークを接続するNAT(プロトコル変換も行うためゲートウェイと呼ぶのが妥当)が必要となる。実際のゲートウェイの実装方法がRFC2766によって提案されている[2]。

[編集] 関連項目

[編集] 参照

  1. ^ STUN
  2. ^ NAT Types (PDF).
  3. ^ Francois Audet, Cullen Jennings (January 2007). “RFC 4787 Network Address Translation (NAT) Behavioral Requirements for Unicast UDP” (text). IETF. 2007-08-29 閲覧。

[編集] 外部リンク