【トレンド解説】


IPv4からIPv6への
移行期に登場した「NATS」とは?


鈴木淳也
アットマーク・アイティ 編集局
2002/2/27

NAT/NAPTは、複数ホストのインターネットへの同時接続やセキュリティ機能を提供する反面、End-to-Endの通信を阻害してしまうという弊害もある。今回紹介する「NATS」は、NAT/NAPTをさらに発展させたもので、プライベート・ネットワークと外部とのEnd-to-Endの通信機能を提供する。また、ルータへの実装のみでほかの機器への変更が必要ないという特徴を持つ。本稿では、その概要について紹介していこう


NAT/NAPTがもたらす弊害

 先日@ITにおいて公開したニュース記事「Interview:IPアドレスの枯渇は、いつやってくるのか?」にあるように、IPv4のグローバルIPアドレス枯渇が懸念されるようになってから、IPアドレス節約のための、いくつからの試みが行われてきた。代表的のものの1つは、上記の記事にあるように、クラスの概念ではなくCIDR(Classless Inter-Domain Routing)を使って、各組織に割り当てるIPアドレスを極力少なくしていこうというものである。そして、もう1つのアプローチが、CIDRによって割り当てられた(もしくはダイヤルアップや専用線接続によってISPから割り当てられた)数少ないアドレスを、NAT(Network Address Translation)NAPTNetwork Address Port Translation:もしくは「IPマスカレード」とも呼ばれる)によって、複数のホストで共有するものである。

 通常、企業や家庭のプライベートなネットワークにおいては、プライベートIPアドレスを用いて相互に通信を行い、外部との通信を行う場合には、NAT/NAPTによってグローバルIPアドレスへとアドレスの変換を行っている。NAT/NAPTの出現は、企業ネットワークに2つの大きなメリットをもたらした。1つ目は、1つのグローバルIPアドレスを使って、複数の(企業内の)ホストからの外部への同時通信を実現したこと。特に現状において、企業内にあるホストの数だけグローバルIPアドレスを取得するのは無理であることから、NAT/NAPTはなくてはならないソリューションとなっている。2つ目は、NAT/NAPT機能を提供する機器(通常はルータ)から内側にあるネットワークを、外部のアクセスから保護することである。NAT/NAPTの存在により、外部からは内部ネットワークは隠ぺいされた形で見えるため(外部からはルータの存在しか分からない)、内部のホストを特定できないためである。だが最近になり、この2番目のメリットが、新たなアプリケーションの出現を妨げている問題も出てきた。

 現在主流のインターネット・アプリケーションといえば、Webブラウザやメーラなどが思い浮かぶ。これらについては、NAT/NAPTが途中に介在しても、アプリケーションの動作には大きな影響を及ぼすことはない。だが、いま話題のIP電話やPtoPといったアプリケーションなどでは、ホスト同士を特定した通信が前提となるため、NAT/NAPTが介在するネットワークでは非常に使いにくい。各ホストにグローバルIPアドレスを割り当てることが可能なIPv6に注目が集まるのは、こういったアプリケーションの登場や発展を期待していることにもある。

新技術「NATS」とは?

 「NAT/NAPTを介してもホストを特定した通信方法を提供」する技術に対するアプローチは、いろいろ行われてきた。そのなかで最近登場してきたのが、「NATS(Network Address Translation with Sub-Address)」と呼ばれる技術だ。IIJの近藤邦昭氏を中心に開発され、現在IETFにドラフトが提出されている段階である。

 NATSでは、IPアドレスとは別に16bitsのサブ・アドレスを定義し、1つの(グローバル)IPアドレスに対して16bitsのサブ・アドレスを割り当てることで、NAT/NAPT内のホストを特定する手段を提供している。NATSの特徴としては、

  • IPレベルの低いレイヤで動作するため、アプリケーションを選ばない
  • ルータだけの実装で済み、ホストやアプリケーションにほとんど変更が必要ない

などが挙げられる。アプリケーション層などの上位レイヤの通信でホストを特定することは比較的容易だが、その代わり、利用できるアプリケーションを限定するなどの弊害が生じる。NATSでは、IPパケットのオプション・フィールド、もしくはIPヘッダとデータの間にNATSのヘッダを埋め込む形で動作するため、上位レイヤに影響を与えない。

 また、NATSはルータへの実装だけで済むことが考慮されている。ルータ側にサブ・アドレスのテーブルを持っておき、必要に応じて内部のホストへとパケットを転送する。これらの仕組みにより、NATSに対応したプロトコル・スタックを搭載しないPCでも、ほぼ問題なく通信が行える。この点は大きく、ルータのリプレースやソフトウェアのアップデートで対応可能なため、導入が容易である。

画面1 NATSプロジェクトのWebサイト(http://www.nats-project.org/)。現在、IETFに提案中のドラフトを見ることができる(画面をクリックするとWebサイトにジャンプします


NATSの仕組み

 NATSの仕組みを、もう少し詳しく見ていこう。NATSには、2種類の実装がある。1つが、IPパケットのオプション・フィールドにNATSヘッダを埋め込むもので、「Option NATS」と呼ばれる。もう1つが、IPヘッダとデータ部分(トランスポート層のパケット)の間にNATSヘッダを埋め込むもので、「Capsuled NATS」と呼ばれる。Option NATSのほうが実装が容易だが、オプション・フィールドを用いる分、バックボーン・ルータのパフォーマンスに負荷をかけてしまう。一方のCapsuled NATSのほうは、パフォーマンスの問題は大丈夫だが、Option NATSに比べ実装がやや難しいというデメリットがある。基本ベースはCapsuled NATSを中心として、両者を使い分けていく形になると思われる。

 そして、NATSで特徴的なのが、NATS未対応ホストでもNATS機能を提供することを実現する、「DNS Query Hook」と呼ばれる仕組みの存在である。NATS対応ルータでは、NATS内部のホストのDNS検索要求をフックし(取り出し)、NATSルータが代理でDNSに対してAレコードとHINFOレコードのクエリを発行する。NATSルータは、DNSからクエリの応答を受け取り、HINFOレコードの情報から該当ホストがNATS対応ホストかを判断する。この際、該当ホストがNATS未対応ホストだった場合、DNS検索要求を行ったホストに対して仮想のIPアドレスを返答し、該当ホストはこの仮想IPアドレスをDestinationアドレスとして接続を行う。この接続はNATSルータによって適切なIPアドレスに変換され、サブ・アドレス付きのNATSパケットとして、外部に対して送信が行われる。接続先ホストからのパケットをNATSルータが受け取った場合も、同様の動作が行われ、NATSルータ内のホストを特定して通信を実現している。

 これまで、NAPTにおいて外部から内部のネットワークにアクセスする場合、接続ポートに応じて特定のホストに振り分けを行う、Static NAPTと呼ばれる仕組みがあったが、アプリケーションによっては対応できなかったり、ポートの衝突が起きる可能性があった。NAPTでは、ポート変更で同一IPアドレスでの複数ホストの同時接続を実現していることが原因なのだが、サブ・アドレスをベースとしたNATSにより、こういった問題は回避できる。

NATSをどう見るか

 企業LAN内のホストを特定する技術という意味では、次世代プロトコルとして注目を集めるIPv6の対抗という考えもあるだろう。だが、IPv6がIPアドレスの問題の根本的な解決策であるならば、NATSはその途上にある過渡期の技術の1つである。IPv6への完全移行までにかかる期間は未知数であり、それまでの間、これから登場するであろう新世代の(例えばPtoPなどの)アプリケーションが利用できないのでは困る。その間をつなぐソリューションとして、NATSは存在する。

 先ほど、「実装が容易」という話をしたが、NATSの大きなアドバンテージはそこにあると思う。NATS自身はまだドラフト段階であり、実装を表明しているのはIIJから販売されているSEILというルータ製品だけである。各社が、自社ルータへのNATSの搭載を検討するようになれば、IETFに標準技術として採用されるなど、今後の展開が面白くなってくるだろう。


本稿は、Network Magazine(アスキー刊)との共同企画です。Network Magazineの2002年5月号において、NATS開発者のIIJ近藤氏へのインタビュー(p.210〜211)が掲載されています。日本発の技術が標準となるのか!? NATSの開発秘話が分かります

 

「Master of IP Network総合インデックス」

 



Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間