使ってみてわかった「v6プラス固定IP」の詳細

# TL;DR

* フレッツで「なんか夕方になるとand/or休日はネット重いんだよなぁ」と感じる場合に効果的
  + au 光とか NURO とかみたいな、回線から ISP まで一体のサービスを利用している場合は関係ない
  + 同じフレッツと銘打たれていても、「フレッツ光クロス」(最近出てきた 10Gbps 品目のサービス)は事情が違いそう(未調査)
  + もともとBフレッツの契約だったがいつの間にか NGN に収容替えされてた、というケースでも大丈夫(筆者のケース)
* 名前からの印象に反して、 IPv4 の通信をどうフレッツ網(以下 NGN)に通すかの方式
* 「固定IP」とつかない方のv6プラスと比べると、 IPv4 アドレス占有できる(+ これに付随する複数のメリット)という特徴がある

---
## なぜこれをまとめるに至ったか

* 宗教上の理由で、 ISP には完全に透明な L3 接続を提供してもらいたい
  + TCP や UDP だけでなく、 GRE とか色々なものを通したい
  + 当然、キャリアグレード NAT は論外
* 「v6プラス」系のパフォーマンス面におけるメリットは十分承知しているが、導入に踏み切れるだけの技術的な詳細情報にたどり着けず
  + 上記宗教上の理由をクリアできるか不透明だったためなかなか踏ん切りがつかなかった
* いざ自宅に導入してみたところ、導入を躊躇していたのが勿体無いと思えるサービスだったため、踏ん切りのつかない方への後押しになりたい

---
# 旧来の方式について 〜あるいはなぜ遅くなったのか〜

---
## そもそも、「v6プラス」登場以前はフレッツ上でどう通信していたの?

[PPPoE](https://ja.wikipedia.org/wiki/PPPoE) - PPP over Ethernet (もともと電話線などに IP 通信を乗せるためのプロトコルをイーサネットに転用したもの) で IPv4 パケットをくるんでいた。

普通に IPv4 パケットをそのままフレッツ網に乗せてしまえば良さそうに思えるが、

* NTT東西自ら ISP 事業を行うことが禁じられていた
* ISP は、接続の際にユーザー認証をしたかった

などの割と政治的な理由があったのではないかと想像。(正しくは知りません)

---
## フレッツ流 PPPoE 方式で、今問題になっていること

[JANOG42 フレッツ IPoE 方式の理想と現実](https://www.janog.gr.jp/meeting/janog42/application/files/1015/3238/7198/janog42-IPoE-overview_toyama.pdf)(外山 勝保 @ インターネットマルチフィード株式会社; 注意: リンク先 PDF) 3〜4ページによると:

> * フレッツの場合、いま現在のボトルネックは“網終端装置(NTE)”
>   + フレッツ利用者に、トンネルを利用して(PPPoE/L2TP)任意のプロバイダへの接続を可能とするための仕組み
>     ![いま現在のボトルネックは“網終端装置(NTE)”](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/314402/16af2618-825a-edc2-1ec5-309a240ef0eb.png)
> * 網終端装置の増設可否は、NTT東西の増設基準で決まる
>   + セッション数≒ユーザ数が増えなければ増設できない
>   + ユーザが増えずトラフィック量が増えただけだと増設できない

雑にまとめると: 「フレッツで PPPoE はオワコン」

---
# 「v6プラス」と「v6プラス固定IP」

* VNE 「JPNE」 が、提携 ISP を通して提供するサービス
  + 他の VNE も類似サービスを提供しているが、使用技術が違う場合があるため注意
  + 自分の契約している ISP が別の VNE と提携している場合は、このサービスは受けられない
  + 「VNE とは?」の話は面倒くさくなりそうなので他の機会or人に譲る
* 双方とも、 IPv4 のパケットを、プロトコル番号4の IPv6 パケットにくるんで IPv6 ネットワーク上に流すトンネリング技術 (IPv4 over IPv6) がベース
* トンネル構成情報の自動化とセットでサービス化
  + トンネル構成を手動でやる分には、単なる汎用の IPv4 over IPv6 そのもの
  + ISP からトンネル構成情報を教えてもらえる (n=1)
  + 誤家庭用ルーター(YAMAHA とか FITELnet とかそういうの)や、果ては Linux などで手作りも可能

---
## 「v6プラス」

* MAP-E ([RFC 7597](https://tools.ietf.org/html/rfc7597)) 方式で、1つの IPv4 グローバルアドレスを複数ユーザーで共有
  + ユーザーごとに、使用して良いポート番号の範囲があらかじめ決められている
  + その結果、事実上 TCP と UDP 以外の L4 プロトコルは使用不可
  + well-known ポートを用いた自宅サーバー等の公開は不可能
  + 家庭用ではなく例えば小規模な中小企業といった多数端末で利用する場合、ポート番号が足りなくなる可能性
* アドレス変換は、その必要がある場合にだけユーザー側の設備(ご家庭用ルーター etc.)で行う
  + ISP 側ではアドレス変換を行わない; 類似技術 DS-Lite との最大の相違点

---
## 「v6プラス固定IP」

* 「v6プラス」で使われている技術をベースに、1ユーザーごとに1つの IPv4 グローバルアドレスを割り当て
   + ユーザーは割り当てられた固定の IPv4 グローバルアドレスを占有する
   + ポート番号という概念の存在しない L4 プロトコル (GRE など)を筆頭に、あらゆる L4 プロトコルが使用可能
   + 当然 well-known ポートを用いた自宅サーバー公開も可能
     - ただし、あまりにも通信量が多くなると怒られるかも :smirk:
* アドレス変換も、固定ではない方の「v6プラス」と同じく、ユーザー側の任意

---
# 「v6プラス固定IP」実運用上のポイント

---
## ご家庭用ルーター、もしくは誤家庭用ルーターでの運用

こちらについては、 Qiita に色々記事があるようなので、紹介しません。

* 通常端末として使っているようなデバイスを IPv4 over IPv6 終端に仕立てつつクライアント的にも使い続けたい場合の tips
  + ISP から告知されたトンネル終端用の IPv6 アドレスを、そのデバイスの anycast 用アドレスとして設定してやると都合が良い
     - 普通の IPv6 通信ではソースアドレスに選択されず、それでも自着扱いにはなる

---
## ひかり電話ルーターなどの HGW での運用

我が家では誤家庭用ルーターもなく、 FreeBSD なマシンこそいくつかあるものの常時通電したくないという事情もあって、こちらの構成になっています。

> ひかり電話対応ホームゲートウェイ（ルータ機能内蔵）利用ユーザーにおいては、NTT東西が事業者向けに提供しているソフトウェア配信サービス「フレッツ・ジョイント」を使用して、対応ホームゲートウェイ(HGW)上のソフトウェア（ファームウェアの一種）をリモートアップデートし、これによりHGWがMAP-E対応CPEとして機能するようにしている。
> (引用: [Wikipedia: v6プラス#仕組み](https://ja.wikipedia.org/wiki/V6%E3%83%97%E3%83%A9%E3%82%B9#%E4%BB%95%E7%B5%84%E3%81%BF))

なんと、 HGW に MAP-E 終端用のプログラムをプッシュ配信してもらえる驚愕仕様。

「v6プラス」「v6プラス固定IP」共用の作りになっていて、割り当てられた IPv4 グローバルアドレスを管理画面から手動設定してやることで、「v6プラス固定IP」モードでの動作になる。

---
### HGW に配信されるv6プラス終端用プログラムでできること

* TCP と UDP のみ、静的 NAPT 設定可能
  + 固定IPでない場合は設定可能なポート番号に制限あり
  + 固定IPの場合も、 MAP-E 的に利用不可なポート番号で設定しようとすると警告が出るが、それはご愛嬌 (実運用上なんら問題にならない)
  + ユニキャストのみ; Wake on LAN パケットを LAN 内にブロードキャストする用途には使えない
* 他の L4 プロトコルの静的 NAT は一切不可
  + 管理画面をブラウザの要素検証で改造して無理やりねじ込もうとしても、管理画面サーバー側でなんらかのサニタイズが行われているらしく失敗
  + あれ、冒頭の「宗教的な理由」はどこ行った??
  + まあ、必要となったら誤家庭用ルーターを買うことにしよう
* HGW 上のv6プラス終端用プログラムを一時停止: こんな時に操作することになりそう (実施実績なし :sweat: )
  + 誤家庭用ルーターに切り替える
  + HGW 上の PPPoE 機能を一時的に復活させる (HGW 上のv6プラス終端用プログラムと排他なので)

---
## その他

* しばらくは、ポート 80 とか 443 とか 8080 とかのリクエストが飛んでくる
  + 割り当てられた IPv4 グローバルアドレスは、まあたいてい別のユーザーによって利用されていたわけで…
  + この辺りはどの固定 IP アドレスサービスも一緒?
* どうやら、割り当てられる IPv4 グローバルアドレスは VNE のものではなく ISP のものらしい (n=1)