【トレンド解説】
IPv4からIPv6への
移行期に登場した「NATS」とは?
鈴木淳也
アットマーク・アイティ 編集局
2002/2/27
|
■NAT/NAPTがもたらす弊害
先日@ITにおいて公開したニュース記事「Interview:IPアドレスの枯渇は、いつやってくるのか?」にあるように、IPv4のグローバルIPアドレス枯渇が懸念されるようになってから、IPアドレス節約のための、いくつからの試みが行われてきた。代表的のものの1つは、上記の記事にあるように、クラスの概念ではなくCIDR(Classless Inter-Domain Routing)を使って、各組織に割り当てるIPアドレスを極力少なくしていこうというものである。そして、もう1つのアプローチが、CIDRによって割り当てられた(もしくはダイヤルアップや専用線接続によってISPから割り当てられた)数少ないアドレスを、NAT(Network Address Translation) /NAPT(Network 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に標準技術として採用されるなど、今後の展開が面白くなってくるだろう。
|
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|