インターネット中央集権化の元凶?「NAT」という名の原罪について
Internet centralization and the original sin of NAT
Internet centralization and the original sin of NAT
インターネットが当初の分散型という理想から遠ざかり、特定の大手プラットフォームに依存する「中央集権化」が進んでしまった背景には、実はNAT(ネットワーク・アドレス・トラバーサル)の存在が大きく関わっています。本来、すべてのデバイスが直接通信できるはずだったインターネットにおいて、IPアドレス枯渇問題を解決するために導入されたNATが、結果としてエンドツーエンドの通信を阻害し、中央サーバーを経由せざるを得ない構造を作り出してしまいました。この技術的負債とも言える「NAT」が、Webの進化にどのような足かせをはめてきたのか、改めて深く掘り下げてみましょう。
NATやSSLが登場する前の頃を思い出すよ。確かにいろいろ簡単にシェアできたけど、誰でも簡単にハッキングできたし、かなり標的にもされやすかったね。NATが出てきてからも、海賊版アプリやNATパススルー付きのメッセンジャーが多くてシェア自体は簡単だった。昔も今も、結局は技術的な知識が必要だよ。コンピュータに詳しくない人にFTPサーバーを立てろなんて頼めないし、仮にできたとしても悪夢だし、ドライブの中身を全部さらけ出しちゃうのがオチだ。他の何についても同じことが言える。とりあえず、IPv6でNATなしの世界がどうなるか、お手並み拝見といこうか。
NATを諸悪の根源と呼ぶのは大げさすぎるよ。CGNAT(キャリアグレードNAT)はユーザーの自由を制限する本当に邪悪な概念だけど、普通のNATは自分で制御できる限りは問題ない。ポート開放なんて面倒なことはしたくないっていうのは、要はホームゲートウェイ側のUXがクソなのと、プロバイダが怠慢なだけだ。UPnPも同じこと。むしろNATのおかげで、パッチも当たっていない古いWindowsを動かしている何百万台もの無防備なデバイスが、ネットに繋いだ瞬間に乗っ取られることから守られてきたと言えるんじゃないかな。
インターネットの設計者たちは、現実世界の規範をサイバー空間にそのまま当てはめるという根本的なミスをしたんだ。「現実世界」ならそこまでセキュリティを気にしなくていい。なぜなら、凶悪犯はすでに収監されているし、大抵の犯罪予備軍は刑務所行きを恐れているから。万が一犯罪が起きても、犯人は捕まってまた悪さをするチャンスを失う。現実世界のセキュリティの多くは事後検知(アラームや監視カメラなど)が基本だけど、それは検知と予防が表裏一体だから成り立つんだ。でも犯罪者が地球の裏側にいるサイバー空間では、この仕組みは通用しない。だからこそインターネットには確実なセキュリティが必要で、NATはまさにその役割を果たしている。もしNATがなかったら、全員が個別にファイアウォールを立てる必要があって、結局今と同じような状況になっていたはず。現実世界の「鍵は正直者を縛るためのものだから、基本はオープンにしておく」っていう戦略は、インターネットじゃ通用しないんだよ。
オープンなインターネットを殺した要因はいろいろあるけど、NATはその最初期のひとつだと思う。昔はサーバーを立てるのなんて簡単で、実行ファイルを動かしてアドレスを教えれば終わりだった。あれはみんなに「クライアント・サーバー」が当たり前だと刷り込んだよね。「自分のデバイスがクラウドに繋いで、そこから他のデバイスと通信する」のが普通に感じるのは、結局アドレス不足という問題の副産物なんだ。この手の話は、インターネットに「高度なスキルを持つ層」しかいなかった時代への鎮魂歌に聞こえる。ほとんどの人は「使いやすい」ソリューションに流れるものだよ。Gmailのような管理されたメールサービスが普及したのは、PCの電源を切ったり、サーバーのHDDが壊れたり、PCをアップグレードしたりしてもサービスが止まらないからだ。一般の人にURLやメールアドレス(AOLのキーワードとか懐かしいね)を教えるだけでも大変なのに、IPアドレスのランダムな数字を教えたり、ドメイン名を買うように説得したりするのは現実的じゃなかった。確かにNATは、本来みんなを繋ぐはずのネットワークにフェンスを築いた。でも、仮に最初からIPv6だったとしても、結局は同じようなサーバー・クライアント型のクラウドアーキテクチャに行き着いていただろうね。ISPはきっと、市販のルーターに制限の強いファイアウォールを標準搭載して売るだろうし、結局同じフェンスの中にいたはずさ。
ISPやデバイスメーカー、クラウド事業者が、IoTデバイスを使ってユーザーの「自宅」に直接繋がるようなことを許すと思っているのが面白いね。絶対ありえないよ。彼らは月額9.99ドルを請求して、クソみたいなアプリをクソみたいなクラウドに繋がせ、「どこからでもアプリを使えるようにする」ことで儲けたいんだから。
NATはファイアウォールでもあるんだよ。みんな忘れがちだけど、NATが普及する前はWindowsをインストールしてネットに繋いだ瞬間、ウイルスに感染する前に必死でアップデートを適用しなきゃいけなかった。90年代のOSは、WANに直接さらしておけるほどセキュアじゃなかったんだ。
申し訳ない。実はLinuxの現在のNATシステムを実装したのは自分なんだ。特にポート予約を避けて、リモートアドレスで識別できる限り1つのIPアドレスに大量の接続を詰め込むようにした。その結果、別のアドレスからの着信トラフィックがルーティング不能になった。つまり「パブリックエンドポイントを失う」ことになったんだ。これは「貧者のファイアウォール」だけど、昔のようなサーバー運営をできなくしてしまった。当時の自分は、全体像なんて考えずに、目の前の特定の問題を解決しようとしていた若いエンジニアだった。これが唯一の要因ではないにせよ、確実にインターネットをクライアント/サーバー構造に追いやり、ある種の平等を失わせた一因だと感じているよ。
「NATは1994年のRFC 1631で初めて正式に提案された」そうだけど、ゲームサーバーやFTPサーバー、ウェブサーバーを自分の部屋から動かしたいっていうニーズは、ネットができてからずっとあったわけで、みんなすぐに問題に気づいていたはずだよね。TCP/IPが使われ始めてから13年以上経ってようやく一般向けの「商用ISP」が登場したんだ。1994年時点でWebが一般公開されてから1年も経っていないし、米国の家庭でネットを使えていたのは1100万世帯ほど。当時、米国の世帯数は9700万以上あったから、ほとんどの家庭にはネット環境なんてなかった。この掲示板を見ているみんなは持っていたかもしれないけど、それがマジョリティじゃない。ある意味、状況はほとんど変わっていない。大学や政府、大企業は「NATなし」でネットを使えるけれど、それ以外の人は後回し。そして今でも、ほとんどのネットユーザーは自宅からサーバーを公開するなんて興味がないんだよ。