Webサイト管理者のための2020年版“IPv6対応入門”第6回
“IPv4 over IPv6”環境下で通信ができない条件とはどんなものか
「IPv4/IPv6共存環境」の増加でWeb管理者/開発者が注意すべきこと
前回記事ではIPv6ネットワークを経由して、IPv4インターネットで公開されているWebサービス(IPv4コンテンツ)へのアクセスを可能にする“IPv4 over IPv6”の技術がなぜ必要となっているのか、その背景と仕組みの概要(主にJPNE「v6プラス」が採用するMAP-E方式)を説明した。そのまとめで述べたとおり、IPv4 over IPv6環境からのアクセスには、旧来のIPv4ネットワーク(IPv4ネイティブ環境)からのアクセスとは少し違う部分がある。
それではこうした特性が、Webサービスやアプリの開発や運用にどんな影響を与えるのだろうか。今回もMAP-E方式を例にとり、IPv4ネイティブ環境との違いを具体的に確認したうえで、注意すべき点をまとめてみたい。
TCP/UDPポート番号の扱いにおける注意点
IPv4ネイティブ環境とMAP-E環境は実用上でどう違うのか。まずはその“ヒント”から見てみよう。
v6プラスサービスを提供するISPのWebサイトを見ると、「v6プラスでは一部利用できないサービスがある」という注意書きが掲載されている。たとえばGMOインターネット「とくとくBB」のWebページにある注意書きは、次のようなものだ。
順不同で書かれているので少しわかりにくいが、これらはそれぞれに「利用できない」理由が異なる。
まずは、IPv4アドレスを共有しているという理由だ。前回も説明したとおり、MAP-EはグローバルIPv4アドレスの枯渇状況に対応し、複数のユーザーで効率的に「1つのIPv4アドレスを共有する」ための仕組みである。そのため固定IPサービスや、IPv4アドレスを1ユーザーが専有しなければならないようなサービスは利用できない(そもそも固定IPサービスは、ISPが別のサービスメニューとして提供していることが多い)。
もうひとつ、MAP-Eでは個々のユーザーに対し、グローバルIPv4アドレスと共に一定のTCP/UDPポート番号範囲を割り当て、ユーザー宅のルーター(MAP CEルーター)がそれを使ってNAPT処理を行う。上述した「グローバルIPv4アドレスの共有」を実現するためだ。
そのため、通常のWebアクセスのようにユーザー側からアウトバウンド方向の通信を始める場合は問題ないが、インターネット側から通信を始めたい場合には影響が出ることがある。前述した注意書きの残りの項目は、こうしたポートの扱いに関する制約から生じるものと言える。
たとえば、特定のポート番号を使ってインターネット側からの通信を待ち受ける、公開サーバーのような使い方の場合だ。IPv4ネイティブ環境のように、HTTP=80番、HTTPS=443番といったポート番号の“決め打ち”では、MAP-E配下のサーバーにはアクセスできない※注。
※注:MAP-Eにおいても、ISPから割り当てられるポート番号範囲がわかっていれば、そのポートを使ってインターネット側からのアクセスを待ち受けること(サーバーを公開する、いわゆる“ポート開放”)自体は可能だ。ただしv6プラスでは、ポート番号範囲の固定は保証されておらず、時間が経つと変動する可能性がある。
これはサーバーに限らず、ユーザーアプリケーションでも同じだ。外部からのアクセスを待ち受けるポート番号を、変更できない“決め打ち”の形でアプリケーション開発をしてしまうと問題が生じる。この点は、アプリケーション開発者に注意しておいてほしいポイントだ。