WebサイトをIPv6対応するには?
IPv4アドレスの枯渇問題が騒がれてはやN年。
日本でIPv6の普及が40%を超え、スマホ利用時など、IPv6通信も身近になってきました。
とはいえ、L7 が主戦場のWebエンジニアにとって、IP技術(L3)は低レイヤー過ぎてピンときません。
『プロフェッショナルIPv6 第2版』の著者であり、Geekなぺーじでもおなじみあきみちさんが、Webエンジニア向けにIPv6をやさしく解説していたので、簡単にまとめてみました。
この動画を見ると、IPv6のテクニカルな知識無しに以下を学べます。
- WebサイトのIPv6対応とはなにか?
- IPv6対応のメリット・デメリット
- WebサイトのIPv6対応方法
WebサイトのIPv6 対応とは
- IPv6とIPv4は全く別のプロトコルで互換性がない
- IPv6対応 ≒ 既存のIPv4対応サイトをIPv6にも対応させること
互換性がないとは?
- IPv4インターネットとIPv6インターネットは全く別のネットワーク
- IPv4はIPv4と、IPv6はIPv6としか直接通信を行えない
DNSがIPv4とIPv6を繋げる
- この2つのインターネットを繋げてひとつに見せかけているのが DNS
- 多くの通信は名前解決から始まる
- 名前解決はWebのIPv6対応を理解する上で大きなポイント
名前解決用DNSレコード
- IPv4アドレス : Aレコード
- IPv6 アドレス : AAAA(クワッドA)レコード ※ IPv6アドレスはIPv4アドレスの4倍のビット数のため
wwww.example.com の場合
- Aレコード : 93.184.216.34
- AAAAレコード : 2606:2800:220:1:248:1893:25c8:1946
IPv4/IPv6のどちらのアドレスを使うか誰が判断?
- 判断するのはユーザー側
- OS/ソフトウェアが判断
- ユーザーは選択に介入しない
- サーバー側
- 選択肢を示し、待つだけ
- WebのIPv6対応 = ユーザーがIPv6で通信できるような選択肢を提供すること
IPv4/IPv6のどちらのアドレスを使うかどう判断?
- IPv4とIPv6 両方で接続を試み、先につながったほうを利用することが多い
- RFC 8305 : Happy Eyeballs Version 2 を利用すると、IPv6を優先させることも可能
IPv6化のメリット・デメリット
メリット・デメリット
- メリット
- IPv4 での通信で発生している問題を避けることができる
- デメリット
- IPv6の運用負荷
- IPv6固有の新規障害を誘発
- ユーザーはIPv4/IPv6どちらも同じように通信できるのなら、IPv6対応のコストがペイするか?
- 10年前に比べると、IPv6のコストは大幅に低下
IPv6 の利用者はどのくらいいるのか?
- GoogleがIPv6の採用状況を公開
- 2021/11/05 では世界で 34.23%
- インターネット全体の普及度ではない
- Googleを利用しているユーザー(クライアント)がどのくらいIPv6通信できるか?
- 2018/08/30 : 20.24%
- 過去3年で急激に普及している
- 増加ペースは落ちていない
- 数年後は更に増えそう
- ユーザーによるプロトコルの傾向
- 企業内LAMからはIPv4アクセスが多い
- スマホからのアクセスはIPv6が多い
IPv6 の国別採用率
2021/11/05時点
- 日本
- 42.73%
- 世界的に高い方
- 高い国
- (世界一)インド : 65.25%
- アメリカ : 45.01%
- マレーシア、ドイツ、ベルギーなども50%を超えている
- 低い
- ヨーロッパ内でも、イタリア、スペインのように、一桁の国もある
IPv4アドレス共有技術によるIPv4の劣化
IPv4アドレスの中央在庫の枯渇対策のために
- CGN(Carrier Grade NAT)
- IPv4 over IPv6
- DS-Lite
- MAP-E
- IPv4とIPv6の変換
- NAT64
といったIPv4アドレスの共有技術が採用されている。
『IPv4の劣化』 は、このようなパケットの処理が複雑化に伴い、 ユーザーの通信品質が低下 する(している)という意見。
さらには、共有技術により、数十・数百の契約者が一つのIPv4アドレスを共有し
- 情報発信者の特定困難
- アクセス制限が無関係のユーザーにも影響
といった課題もある。
WebサーバーをIPv6対応すると、IPv4の劣化した通信やIPアドレス共有問題を回避できる。
IPv6 で速くなる?
- IPv4・IPv6のプロトコルレベルでは、通信品質が変わる要素はない。
- NTTフレッツ網ではIPv4 PPPoEのNTE(終端末装置)で通信品質が悪化することがある。
- IPv4 PPPoEのかわりにIPv6 IPoEを経由して通信品質の悪化を避ける
- NTTフレッツ網固有の問題
- 参考 JANOG42「フレッツIPoE方式の理想と現実」
理解度チェック
動画の最難関パートは 16:38 頃にいきなりやってきます。
ユーザー側が IPv4 over IPv6 に関連するサービスだったり、 NAT64 のサービスを利用している場合は IPv4アドレス共有技術 を経由した通信になるかもしれませんが、 IPv4 PPPoE は経由せず、 IPv6 IPoE を経由した IPv4 Over IPv6トンネル などを利用することになるので、 ウェブサイトが IPv6対応 をしていなかったとしても、そのユーザーとの通信が IPv4 PPPoE を経由しません。
キーワード満載です。
通信の流れをイメージできたでしょうか?
ダウンタウンの漫才「誘拐」を思い出してしまいました。
正解はこちらです。
図にある VNE(virtual network enabler) は、フレッツネクストにIPoE方式で接続し、他のISP事業者に対し、エンドユーザーへのIPv6接続機能を提供する事業者です。
参考 : https://www.janog.gr.jp/meeting/janog42/application/files/8015/3238/7118/janog42-IPoE-vne_toyama.pdf
WebサーバーをIPv6対応するには?
1. Webサーバーを直接IPv6対応
- 各WebサーバーをIPv4兼IPv6対応させる
- 権威NDSサーバーにAAAAレコードを追加
2. IPv4とIPv6で別のWebサーバーを利用
- AとAAAAが同じ機器を示している必要はない
- IPv4 対応の既存サーバーとは別にIPv6専用サーバーを用意
3. リバースプロキシを利用
- 既存のIPv4対応サーバーには変更を加えない
- 既存サーバーの前段にIPv6対応したリバースプロキシを用意
- 権威NDSサーバーにプロキシサーバーをAAAAレコードで追加
4. CDNを利用
- #3 リバースプロキシの派生
- IPv6対応したプロキシサーバーの代わりにIPv6対応したCDNをかぶせる
IPv6シングルスタックのデータセンター
- データセンター内をIPv6のシングルスタックで運用するケースもある
- 10.0.0.0/8 ではアドレス空間が足りない
- IPv4/IPv6のデュアルスタックは運用負荷が大きい
- 参考 : IPv6 Operational Guidelines for Datacenters
プログラムやコンテンツをIPv6対応するには?
- アクセス制限
- IPv4でアクセス制限している箇所を修正
- .htaccessのような設定ファイル
- ファイアウォール
- IPv4形式のリンク
- DNSを経由しないと、IPv4/IPv6対応できない
- HTML文にDNSを経由しない http://203.0.113.9/ のような IPv4 アドレスがべた下記書きされている箇所を修正
- その他
- アクセス解析、データベースなどがIPv4形式のIPアドレスの箇所を修正
まとめ
- IPv6 対応
- 既存のIPv4サイトをIPv6対応させることが多い
- DNSがポイント
- IPv4とIPv6は互換性がなく、直接通信できない
- ホスト名はIPv4/IPv6で同じ物を使う
- 名前解決で分岐
- マネージドサービスを利用していると簡単にIPv6対応できる
- ホスティング・クラウドサービス・CDNでは設定一つでIPv6対応できる
- IPv6の深い知識がなくても大丈夫
所感
動画のタイトル通り、IPv6やTCP/IPの深い知識を要求せずに、WebサイトのIPv6対応はどういうことなのか、どうすればよいのか、具体的に解説されています。
マネージド・サービスを利用していると、ボタン一つでIPv6対応出来ます。
その一方で、深く考えずにサイトをデュアルスタック対応し、アクセスコントロールがIPv4に限定されていたという事故も頻発しています。
お気をつけください。
同YouTube チャンネルには、他にもためになる動画が沢山上がっているので、興味に応じて閲覧すると、理解が深まると思います。
体系的に学びたい場合は、『プロフェッショナルIPv6 第2版』を読みましょう。
Discussion