ipアドレスの構成とipv6専用ddnsの試供（v6プラス）

# きっかけ
無料のDNSで遊びたかった
ipv4のDNSは申請の敷居が高いし，ぶっちゃけv6プラスだと実質固定ipで面白くないし，なのであんまり乗り気になれなかった

と思ったらipv6専用ddnsが試供されていた，なるほどなぁ…


#### リンク
[概要](https://i.open.ad.jp/)
[HTTP(S)なAPI](https://i.open.ad.jp/api/)
[NTPやpingで動かす場合](https://i.open.ad.jp/config/misc.aspx)
[採用事例](https://i.open.ad.jp/config/)



# HTTP(S) API
フレッツ網内かipv6インターネットから呼び出すのが前提
それ以外は`ddnsapi-v6`を`ddnsapi-v4`に書き換える
`http://`は`https://`でもOK

### dnsを新規設定

```
http://ddnsapi-v6.open.ad.jp/api/new/?[HostName]
```

+ 返却されるCSVの中にKeyが含まれる
+ KeyとHostNameが対応するので大事に取っておく

### 同一HostNameのアドレスを更新

```
 http://ddnsapi-v6.open.ad.jp/api/renew/?[Key]
```

+ このAPIを叩いたマシンのipv6アドレスが反映される
+ Keyは必須，HostNameは不要

### Host Nameのみ更新

```
http://ddnsapi-v6.open.ad.jp/api/changehostname/?[Key]=[NewHostName]
```

+ これもKeyは必須
+ ipv6アドレスは反映されない

### dnsそのものを削除

```
http://ddnsapi-v6.open.ad.jp/api/delete/?[Key]
```

+ これもKeyは必須

### 状況確認

```
http://ddnsapi-v6.open.ad.jp/api/status/?[Key]
```

+ [Key]を[HostName]にすると返却される情報の一部（機密なやつ）がhiddenされる

## Keyを紛失する時のための対策
新規設定時に

```
http://ddnsapi-v6.open.ad.jp/api/new/?[HostName],[MailAddress]
```

しておくと紛失時に

```
http://ddnsapi-v6.open.ad.jp/api/recovery/?[MailAddress]
```

することでメアドに結びつけられたdnsとKeyの一覧が届くらしい
ここでKeyの再設定がされることはない



## 利用例
まだやったことないけどブラウザから手で打ったら本当に動作したので間違いではなさそう





# 追記・ipアドレスの構成について
~~こっちがほんへ~~
ipv6のアドレスの構成は，一般的なネットワークであれば[rfc4291](https://datatracker.ietf.org/doc/html/rfc4291)によるところで

+ 上位，プレフィクス
  + 通常は64bitそのままサブネットプレフィックスとする
  + もしくは以下のように分割したものを合体
     + n bit，グローバルルーティングプレフィクス
     + 64-n bit，サブネット識別子
+  下位，サフィクス
  + 48bitのMACアドレスをModified EUI-64で64bitに変換して申告し，そのままインターフェース識別子として使う
     + ↑実際はセキュリティ的な観点で現在は非推奨
  + もしくはDHCPv6サーバが64bitをランダムに生成して配布する

と規定されている．
NTTのNGN網でも通常のIPv6 IPoE接続であれば上記に従い，光電話を使用する場合は，NGNからONUにグローバルルーティングプレフィクスが48bitもしくは56bit（わからんけど[ここ](https://www.ntt-east.co.jp/info-st/katsuyou/h24/temp24-1.pdf)のp.56にある通りなら）で渡され，その下のHGWにはONUからサブネット識別子が16bitもしくは8bit（本体設定のDHCPv6サーバ払い出し状況を見るに下位4bitを割り当てて残りは0埋め？標準HGWに0を割り当て？）で渡され，残りの64bitを端末MACアドレスから生成（同上のp.26より，これは[rfc3315](https://datatracker.ietf.org/doc/html/rfc3315)によるもの）する．
ちなみに光電話を使用しない場合はONUのサフィクスが最初から64bitで降ってくるらしく，すなわちHGWの追加構成や自家構成ができない．

v6プラスオプションを申し込んだ上で光電話を使う場合も，ネイティブなIPv6インターネット機能を使うなら，上と同様のIPv6 IPoE接続を利用することになる．手元の環境を確認したところ，同じプレフィクスと異なるランダムなサフィクスを持つ2アドレスが振られていら．
しかしIPv4接続をする場合は，[ここ](https://booth.pm/ja/items/913273)のp.42にある通りに，v6プラスが採用しているMAP-Eの仕様である[rfc7597](https://datatracker.ietf.org/doc/html/rfc7597)によるところで

+ 上位，プレフィクス→以下を結合して64bitに成形
  + VNE事業者が持つIPv6プレフィクス，上位n bits
  + MAP-Eで与えられるIPv4サフィクス，上位p bits
     + 要はIPv4アドレスの末尾がIPv6プレフィクスにくっつく
  + 同上のポート番号から得られるPSID，上位q bit
     + ポート番号の一部を用いて生成される
  + サブネットID
     + 64 - n - p - q > 0 の時に発生
     + 基本的に0埋め（HGWの複数使用は想定されていない？）
     + もし64 - n - p - q < 0なら後者の処理に影響する
     + これ，厳密にはプリフィクスとは呼ばないらしいです
+ 下位，サフィクス→以下を結合して64bitに成形
    + PSID（同上），下位q bit
    + MAP-Eで与えられるIPv4アドレス，下位32bit
    + 0パディング，下位から
       + 64 - q - 32 = rビットだけ埋まる
       + プレフィクス64 bitよりデカいとココが削られる

と規定されている．つまりインターフェースのMACアドレスが関与することなく4to6および6to4のNAPTが実現できており，これは一般ユーザには見えない（完全にIPv6で実装されたNTTのNGN網内でのみ使われるため，要するにHGWからVNEの間でのみ4to6 NAPTで得られるアドレスが使われる）ものとなる．

前述したが，DHCPv6サーバ払い出し状況の項目については，HGWがONUからセグメントを預ったルーターに関するもので，ONU・HGW一体型1つで利用する一般人は何も表示されないのが正解である．
そしてv6プラスオプションが有効な場合はMAP-Eの機能がHGW側に必要であるため，接続した時点で専用のソフトウェア（例の http://192.168.1.1:8888/enabler.ipv4/main ）がオートに降ってくる．もし別のルータをONU・HGW一体型の配下に置いてMAP-Eの機能をさせたいのならば，v6プラスに対応するルータが先取してこのソフトウェアを入れないといけないし，ONUだけならもしかしたら沢山HGWもどきを設置できる…のかも知れない．固定IP取ったv6プラスでも契約しなきゃメリットなさそうだけど．


環境設定のネットワークのTCP/IPのIPv6の設定のルーター欄に恐らく`fe80::`で始まるアドレスがあるが，それは`192.168.1.1`と同じ意味を持ちHGWにアクセスできるローカルIPv6アドレスである．

##### 参考
+ https://www.jpne.co.jp/books/v6plus/
    + 徹底解説v6プラス（いつもの）
    + しかしNGN網でのDHCPv6-PDに関しては割愛されていた
        + **プロフェッショナルIPv6**というものには書いてあるらしい
        + https://booth.pm/ja/items/913273
        + pixivのboothから読めるのだが，400ページ越えは荷が重い，無理
+ https://www.seil.jp/blog/10.html
  + これがいちばんわかりやすいかも
  + ONU配下にHGWもどきを自前で追加してしまう実装例がある
+ https://www.allied-telesis.co.jp/support/list/router/ar3050s_ar4050s/rel/5.4.7-2.3/613-002107_Q/docs/overview-288.html
  + 上と同じようなもの
+ https://network.yamaha.com/setting/router_firewall/ipv6/v6plus
  + 上と同じようなもの
+ https://kokura.hatenadiary.jp/entry/2018/07/04/185645
  + 上と同じようなもの

ちなみにNURO光やその他の非NGNなipv6対応の光回線はさらに仕様が違うらしい，なのでここでは扱わない




## ipv6アドレスとVNEの関係
これでプレフィクスを取得できるらしいな？

```
$ curl -H 'Host:route-info.flets-east.jp:49881' -H 'Accept:*/*' -H 'Connection:close' --http1.1 http://route-info.flets-east.jp:49881/v6/route-info
0000,2020/09/17 09:23:31
1111,2404:01a8:7e00:0000:0000:0000:0000:0000/40 --NTT東日本
1211,2404:01a8:0000:0000:0000:0000:0000:0000/32 --NTT東日本
1212,2001:0c90:0000:0000:0000:0000:0000:0000/33 --NTT東日本
1311,2408:0210:0000:0000:0000:0000:0000:0000/30 --NTT東日本
1411,2400:2410:0000:0000:0000:0000:0000:0000/30 --BBIX-IPv6
1412,2409:0010:0000:0000:0000:0000:0000:0000/30 --MF-Transix-E-1
1413,240b:0010:0000:0000:0000:0000:0000:0000/30 --JPNE
1414,2404:7a80:0000:0000:0000:0000:0000:0000/30 --BIGLOBE
1415,2405:6580:0000:0000:0000:0000:0000:0000/30 --朝日ネット
1416,2400:4050:0000:0000:0000:0000:0000:0000/30 --OCN
1417,2401:4d40:0000:0000:0000:0000:0000:0000/30 --フリービット
1418,2001:0f70:0000:0000:0000:0000:0000:0000/30 --アルテリア・ネットワーク
1419,240b:c0c4:0000:0000:0000:0000:0000:0000/30 --楽天モバイル
```

4連続のNTT東日本を除けば現在は9社でVNEをやっているらしい，確認してみよう
https://www.ntt-east.co.jp/info-st/ipoe_menu/


##### 参考

+ https://blog.goo.ne.jp/rabbit5151/e/aa53215cd67113a72db2193f5e04169c
+ https://blog.goo.ne.jp/rabbit5151/e/d6b6917d02aa69da9d1a6c5455d4df6e
    + 超有能謎個人ブログだ…