IPv6本 脱稿しました

   このエントリをはてなブックマークに登録    2018/5/10-1

2011年から書き続けていたIPv6本がついに脱稿しました。 この本は、クラウドファンディングで書きました。 完成したIPv6本の電子版は無償配布します。 サポーターの皆様、ありがとうございます! 全章のフィードバック受付版は、5月21日(月)にマクアケ経由のメッセージにてサポーターの皆様にお送りする予定です。 その後、7月中に完成した書籍をサポーターの皆様にお届けするとともに、一般公開および一般販売開始する予定です。

IPv6本電子版の無償配布を行いますが、紙版と電子版の販売も行います。 ご購入いただけると、私とラムダノート社が喜びます。

なお、有料版と無償配布版の間にコンテンツとしての違いはありません。 ご購入いただかなくても内容を読むことはできます。 幅広く多くの方々にIPv6に関する技術情報が伝われば幸いです。

長くツライ執筆でした

IANAのIPv4アドレス中央在庫が枯渇したので、IPv6に関するまとまった情報も必要になるだろうからIPv6本を書こうと思い立ってから8年目にして、やっと一通り書ききった感じです。 IPv6本の執筆だけを行っていたわけではありませんが、ずっと少しずつ書き続けてきました。 2017年から2018年現在までは、ほとんどの時間をIPv6本執筆に使っていました。

IPv6本に執筆する内容は、書き続けるうちにどんどん増えていきました。 IPv6に関する情報をまとめようと思った時、IPv6そのものだけでは足りないので、関連する様々なことをまとめようとしたこともあり、調べれば調べるほど、書けば書くほど書くべき内容が雪だるま式に増えてしまい、途中、何度もあきらめそうになりました。

でも、やっと、「これだけ書けば、まずは初版として出版しても良いだろう」と自分で思えるところまで完成させました。 個人的には、「やっとここまで来た。。。」という気持ちです。

初版完成まであと少しです。 ラストスパート、がんばります。

IPv6本の構成

IPv6本は6部構成になっています。第一部は「本書を読むにあたっての前提知識」というタイトルで、IPv6の解説をする前にインターネットそのものの解説などをしています。 ユーザ環境におけるIPv6対応とサーバ環境におけるIPv6対応とは何かを整理し、IPv4とIPv6という2つの異なるプロトコルが共存するデュアルスタックのインターネットをいままでどおり1つのイン ターネットとして利用するための鍵となるDNSについても解説しています。 スマホアプリなどでも必要になるNAT64やDNS64の概要も第一部で紹介しています。

第2部は、IPv6プロトコルとその周辺技術です。 IPv6そのものの解説をはじめとしたIPv6技術および周辺技術は、第2部にまとまっています。 IPv6本の心臓部とも言える部分です。 執筆で最も時間をかけた部分といえますが、IPv6アドレスの自動設定、マルチプレフィックスに関連する話などが個人的に注力した部分かも知れません。

第3部は、IPv6とIPv4のデュアルスタックに関する話を解説しています。 IPv4とIPv6の名前解決を両方とも同時に扱い、ユーザがIPv4とIPv6の違いを認識せずに使えるようにするため、DNSがどのように運用されているのかを見ていきます。 IPv6とIPv4の間に直接的な互換性がないため、IPv6インターネットとIPv4インターネットの異なる2つのインターネットが存在しつつも、インターネットがひとつとなっている構造を解説しています。

第4部は、IPv4とIPv6の共存技術です。 IPv6とIPv4に直接的な互換性がないため、その周辺技術として様々なIPv4/IPv6共存技術が提案されています。 IPv4/IPv6共存技術は、過去に提案されてきた各種手法が改良されながらも新しい手法が提案されています。 この章では、過去の歴史的経緯も含めて様々な共存技術を紹介しています。

第5部は、IPv4アドレス在庫枯渇問題に関連する内容です。 IPv6は、IPv4アドレス在庫枯渇問題と密接な関係があります。 IPv6を理解するうえで、必ずしもIPv4の知識は必須であるとは限らないのですが、インターネットそのものを理解するうえでは、IPv4アドレス在庫枯渇問題は避けては通れない話であるというのが私の考えなので、IPv6の本でありつつもIPv4に関しての部が含まれています。 ここでは、IPv4アドレス在庫枯渇問題そののもの話だけではなく、NATに関する解説も行っています。

第6部は付録です。 NTT NGNでのIPv6は、IPv6そのものの話ではない一方で、日本国内においては大きな要素であると言えると考えているので、NTT NGNでのIPv6を解説しています。 第6部を理解するには、第2部に含まれるデフォルトIPv6アドレス選択、マルチプレフィックス・マルチホーム問題に関する章に書かれている内容をあらかじめご覧になることをお勧めします。

初版公開後もアップデートするつもりです

本書の初版販売開始および無償配布開始後も、必要に応じてアップデートを行いたいと考えています。

まずは一区切りをつけて完成させることを優先したため、詳細な説明を割愛している部分もありますし、IPv6に関連する仕様そのものがアップデートされることも、まだまだあります。

書籍内に含まれている各種バグを修正する必要もありそうです。 説明がわかりにくいという部分もあるかも知れません。

ラムダノート社は、「アップデートし続ける技術書」を目指しているようなので、それが実現できるように、私もがんばりたいと思います。 どこまでできるのかは、やってみないとわかりませんが。。。

目次

以下、現段階における目次です。 まだ出版まで多少の微調整等が入るかも知れませんが、以下のような内容になっています。

0.1 混ざりつつも、似て非なるプロトコル
0.2 背景や経緯の説明
0.3 無償配布
第I部 本書を読むにあたっての前提知識
第1章 インターネット概要
1.1 IP はパケット交換技術
1.2 層に分かれるネットワーク
1.3 トランスポート層の役割
1.4 オープンなプロトコルとRFC
第2章 IPv6 でインターネットはどう変わるか
2.1 IPv6とIPv4の違い
2.2 IPv6対応とは
2.3 IPv6インターネットとIPv4インターネットを同時に使う
2.4 IPv6ネットワークからIPv4インターネットに接続する
第II部 IPv6プロトコルとその周辺技術
第3章 IPv6アドレスとそのテキスト表記
3.1 IPv6アドレス空間
3.2 IPv6アドレスのテキスト表記
3.3 IPv6アドレスの省略表記
第4章 IPv6アドレス体系
4.1 IPv6アドレスの種類
4.2 IPv6アドレス空間の使い方はIANAが管理している
4.3 IPv6 におけるユニキャストアドレスの構成要素
4.4 IPv6アドレスのスコープ
4.5 IPv6ノードに要求されるIPv6アドレス
4.6 リンクローカルユニキャストアドレス
4.7 スコープのゾーン
4.8 グローバルユニキャストアドレス
4.9 ULA(Unique Local IPv6 Unicast Addresses)
4.10 IPv4-Mapped IPv6アドレス
4.11 例示用IPv6アドレス
4.12 ユーザへのIPv6アドレス割り当て
4.13 IPv6 サイトリナンバリング
第5章 IPv6パケットの構成
5.1 IPv6ヘッダの各フィールド
5.2 上位層でのチェックサム計算に使う仮想ヘッダ
5.3 IPv6拡張ヘッダ
第6章 ICMPv6
6.1 ICMPv6フォーマット
6.2 ICMPv6エラーメッセージ
6.3 ICMPv6情報メッセージ
第7章 近隣探索プロトコル
7.1 近隣探索プロトコルの機能と利用するメッセージ
7.2 近隣探索プロトコルで見るIPv4とIPv6の比較
7.3 ルータとプレフィックス情報の発見
7.4 リンク層アドレスの解決と近隣不到達性の検知
7.5 Redirectメッセージ
7.6 近隣探索メッセージのオプション
7.7 IPv6におけるon-linkとoff-link
第8章 IPv6アドレスの自動設定
8.1 SLAACの流れ
8.2 小規模ネットワークにおけるSLAACの利用例
8.3 リンクローカルIPv6アドレスの生成
8.4 SLAACにおけるインターフェース識別子の生成方法
8.5 DAD
8.6 グローバルIPv6アドレスの生成
8.7 RFC 8106
8.8 デフォルトIPv6アドレスの選択
第9章 DHCPv6
9.1 IPv4のDHCPとDHCPv6の違い
9.2 IPv4のDHCP
9.3 DHCPv6の概要
9.4 DUID
9.5 ステートレスDHCPv6
9.6 ステートフルDHCPv6
9.7 DHCPv6-PD
第10章 IPフラグメンテーション
10.1 IPv4におけるフラグメンテーション
10.2 IPv6フラグメントヘッダ
第11章 Path MTU discovery
11.1 Path MTU discovery に関係するIPv4の機能
11.2 Path MTU discovery に関係するIPv6の機能
11.3 上位層プロトコルとPath MTU Discovery
11.4 Path MTU Discovery の仕組みを悪用したDoS攻撃
第12章 IPv6 マルチキャスト
12.1 IPv6のマルチキャストアドレス
12.2 マルチキャストのスコープ
12.3 IPv6マルチキャストアドレスからのイーサネットアドレス生成
12.4 Solicited-Nodeマルチキャストアドレス
12.5 マルチキャストにおけるゾーン
12.6 MLD(Multicast Listener Discovery)
12.7 ルータを超えるマルチキャスト
12.8 MRD
12.9 リンク層でのマルチキャストアドレス
第13章 IPv6エニーキャスト
13.1 IPv4におけるエニーキャスト
13.2 IPv6のエニーキャスト
13.3 IPv6サブネットルータエニーキャストアドレス
13.4 ユニキャストとしての利用を避けるべきIPv6アドレス
13.5 エニーキャストの注意点
13.6 IPv6エニーキャストとBCP 38
第14章 マルチプレフィックスによるマルチホームの問題
14.1 IPv6におけるマルチホームの3つのシナリオ
14.2 マルチホーム環境で発生する問題
14.3 送信元IPv6アドレスの選択における問題
14.4 次ホップの選択
14.5 キャッシュDNSサーバ選択
14.6 マルチホーム環境のためのIPv6 NAT
第15章 IPv6とセキュリティ
15.1 IPv6はIPv4よりもセキュアというわけではない
15.2 近隣探索プロトコルとセキュリティ
15.3 IPv6アドレスとプライバシー
15.4 IPv6 サブネットに対するスキャン
15.5 IPsec
15.6 ICMPv6を無条件に全てフィルタリングすべきではない
15.7 IPv4-Mapped IPv6アドレスに注意
15.8 トンネル技術が抱える問題
15.9 ブラックホール用IPv6アドレス
第16章 プログラマにとってのIPv6対応
16.1 Socket APIとIPv6
16.2 単なるIPv6対応では不十分な場合
16.3 Happy Eyeballs
16.4 IPv6 ソケットとIPv4-Mapped IPv6アドレス
16.5 ポリシーテーブルの実装
第III部 IPv6とIPv4のデュアルスタック
第17章 DNSの基礎とIPv6対応
17.1 DNSの仕組み
17.2 DNSサーバへの再帰問い合わせと反復問い合わせ
17.3 DNSメッセージフォーマット
17.4 IPv4とIPv6アドレスの問い合わせ例
17.5 DNSの逆引き
17.6 DNSメッセージの512オクテット問題
17.7 IPv6 環境におけるDNSの運用上の注意点
17.8 廃止された仕様
17.9 廃止されたA6リソースレコード
第18章 DNSによるデュアルスタック環境の実現と運用
18.1 デュアルスタック環境の実現
18.2 IPv6からIPv4へのフォールバック
18.3 キャッシュDNSサーバとCDNに関する問題
18.4 デュアルスタック環境におけるSRVの利用
18.5 IPv6 DNSホワイトリストとブラックリスト
18.6 アプリケーションのIPv6対応とデュアルスタック環境
第IV部 IPv4/IPv6共存技術
第19章 IPv4/IPv6 共存技術の分類
19.1 IPv4/IPv6共存技術のバリエーション
19.2 ステートフルとステートレス
19.3 IPv4/IPv6共存技術利用のパターン
19.4 今後も多くの試みが誕生する
第20章 トンネル技術
20.1 6to4
20.2 Teredo
20.3 ISATAP
20.4 6rd
20.5 4rd
20.6 6PE
20.7 トンネル技術が抱えるセキュリティ問題
第21章 IPv4/IPv6 変換技術
21.1 IPv4/IPv6変換の枠組み
21.2 SIIT
21.3 ステートフルNAT64
21.4 IPv4/IPv6変換機用IPv6アドレス
21.5 DNS64
21.6 ALG
第22章 IPv4/IPv6変換の運用形態
22.1 DS-Lite
22.2 Lightweight 4over6(lw4o6)
22.3 A+P
22.4 4rd、MAP-E、MAP-T
22.5 CGNを利用して徐々にIPv6対応していく方法
22.6 464XLAT
第23章 プロキシ方式
23.1 HTTPプロキシ
23.2 TRT方式
23.3 SIP 用IPv6プロキシ
第V部 IPv4アドレス在庫枯渇対策
第24章 IPv4アドレス在庫枯渇とは
24.1 インターネットの成長とIPv4アドレス在庫の枯渇
24.2 IP アドレス管理の階層構造とIPv4アドレス在庫枯渇
24.3 IPv4アドレス在庫枯渇の対策
24.4 IPv4アドレス移転、IPv4アドレス売買、IPv4アドレス市場
第25章 IPv4 NATとCGN
25.1 NATとNAPT
25.2 CGN
25.3 CGNが抱える課題
25.4 CGNの普及とサーバにおけるアクセスログ
25.5 ISP Sharedアドレス
第26章 STUN
26.1 STUN概要
26.2 旧STUNと新STUN
26.3 NATの分類
26.4 NAT機器に要求される挙動
第VI部 付録
NTT NGNでのIPv6
   このエントリをはてなブックマークに登録