Home JavaScript Greasemonkey PHP

IPアドレス枯渇に対するウェブアプリの対応2008-12-24


IPアドレス枯渇で一番困るのはアプリケーション開発者だ


この問題に関して今ある情報は,もっぱら通信事業者の中の人たちに向けたものです。
デュアル・スタックのアプリケーションやシステムは,最初から作れば全然難しくありません。IPv4で作っても,IPv4とIPv6のデュアル・スタック で作っても,手間は同じです。ただし,IPv4だけに対応するものをデュアル・スタックにするのは,作り直すのと同じです。
もともと長さが決まっていないリストを作っておいて,そこにコロンかドットのセパレータがあったら順にリストに詰めて入れていくようにしておけばいいわけです。
「デュアル・スタックにするのは大したことではないんです」ということを,誰かが声を大にして言わなくてはいけないと思っています。
超ごもっともです。その通りです。
IPv4 対応と IPv6 対応を同時に行うのは大したこと無いんです。
主にネットワークに近い人だけが心配しているってのもその通りだと思います。

ですが、IPアドレス枯渇に関して、アプリケーション開発におけるもっと難しい問題は別にあります。
キャリアグレード NAT と呼ばれているものがそれです。

技術の詳細はググってもらうとして、キャリアグレード NAT が本格的に導入されると、同じプロバイダからのアクセスは、異なるユーザであっても同じ Global IP という事態が起こりえます。
(キャリアグレードNATではない) IPv4 は、IP がその瞬間において、ユニークなユーザを指しているという事実があったのですが、その大前提が崩れると言うことです。

IP アドレスはウェブアプリの中で広くユニークなユーザを指すものとして利用されています。
たとえば、アクセス解析やカウンタなどでは同一 IP からのアクセスを記録することによって、様々な制御を行うのが一般的です。
ある程度の短い期間内で同一 IP であれば、同一ユーザであると仮定する事は至極自然な事なので、同一 IP のアクセスを同一ユーザと扱って、アクセスの動線を追ったり、カウンタアップしないようにということは日常的に行われています。

ところが、キャリアグレード NAT が導入されると、同一 IP だからといって、同一ユーザと判断することが出来なくなってしまうので、これらのアプリは全て期待に反する動作をする事になります。
これは大問題ではないでしょうか?

たとえば、キャリアグレード NAT に関して何らかの規格を決めて、Global IP の他に、NAT されたローカルエリア(?)内の IP についても、IP ヘッダか HTTP ヘッダに情報を載せるというのは良案かとも思います。
この案が実現したとすれば、キャリアグレード NAT に対する対応は、IPv6 のそれとほぼ同じようにする事が可能です。

IPv4 アドレスの枯渇が現実として近づいてきている今、各 ISP ではどのように考えているのか気になります。
ISP の中の人はやっぱりネットワーク屋さんなので、アプリの事まであまり気が回ってないのでは…。



2008-12-16 追記
出来ればトラックバックを送りたかった記事にトラックバックが実装されたので、再更新。
内容に修正はありません。

カテゴリ: Development タグ: network ip nat