HG8045D下にNVR510を接続し、IPv4とIPv6の通信設定を行う。

最近、ネットの契約を光回線に変えました。
変えた結果、今まで外部とのグローバルネットワークとの窓口だったNVR510からプロバイダ提供のHG8045Dに変える必要が出てきました。
HG8045DはONU+ルータの機器であり、必ず接続しなければならないため、ネットワークの構成を変える必要があります。
取り敢えず一通りの設定を行ったので、備忘録的な意味合いも兼ねて記事にしてみました。

# HG8045Dとは何か？
まず、プロバイダから提供されたHG8045Dについて簡単に纏めました。

* 光回線からイーサネットに変換する機能(ONU)
    * G-PON方式
* ルータ機能
    * IPv4/IPv6対応
    * 指定できるサブネットマスク(IPv4)
        * /24 (これ以上の空間はしていできない)
* 無線LAN機能
    * 2.4Ghz / 5GHz
    * IEEE 802.11a/b/g/n

指定できるサブネットマスクが異様に狭い以外は、割りかしスタンダーな性能と思われますが、少し変わっているのがG-PON方式でのONU機能です。
G-PON方式はかなりマイナーらしく、対応しているネットワーク機器は業務用を含め少ないみたいです。
（一般的にはGE-PONで、G-PONを採用しているのはNUROぐらい？　※ちなみに契約しているプロバイダーはNUROじゃないです。）

HG8045Dの代わりに別のルータを使おうとしても代わりなく、通常であれば狭いローカルアドレスで我慢するしかありません。


# 環境構築の方針

HG8045D下にそのまま繋げばアドレスの範囲は狭いままですが、NVR510を繋ぎ、その下にローカルネットワークを構築すれば問題は解決できます。
つまり、二重NAPTを構築すればいいのです。

次のような感じで構築しました。

## HG8045D
* IPv4
    * WAN
        * デフォルト（ルータ上で設定できる項目は特にないので）
    * LAN
        * 10.1.1.1/24
    * DMZ
        * 10.1.1.241
* IPv6
    * ルータ広告
        * 有効
    * DHCPv6サーバ
        * 有効
    * アドレス/プレフィックスの分割
        * SLAAC
    * その他の情報の割当方法
        * DHCPv6 
* WLAN
    * 無効

## NVR510
* IPv4
    * WAN側
        * 10.1.1.241/24
    * NAPT
    * DHCP
    * LAN
        * 192.168.0.1/16
* IPv6
    * グローバルアドレスの設定方法
        * RA
* DNSキャッシュサーバー

## 概要図

```
-----------------
- インターネット -
-----------------
        |
   -----------
   - HG8045D -
   -----------
        | 10.1.1.1/24
        |
        | 10.1.1.241/24
    ----------
    - NVR510 -
    ----------
        | 192.168.0.1/16
     -------
     - LAN -
     -------
```

基本的な方針はこんな感じです。(LANのアドレスが192.168.0.1/16なのは、前から使っていた環境を考慮してのことです)
IPv4は、DMZ機能を用いて全ての通信をNVR510に飛ばすことで、見せかけ的に多段NAPTの状態を回避しています。もちろん、HG8045Dを挟むことでNAPT変換のコストが発生するため、オーバーヘッドは避けられません。
一方でIPv6であれば通常のルーティングのみになり、オーバーヘッドを避けられます。
また、HG8045Dの負担を軽減させるためにDHCPやDNSキャッシュサーバーとしての機能は全てNVR510に肩代わりさせます。（経験上、無線LANルータは何となく不安定な印象があるので、あまり色々動かさないほうが良い気がします）


# NVR510上のIPv4の設定

次のような感じで設定すればいいと思います。

```
ip route default gateway 10.1.1.1
ip lan1 address 192.168.0.1/16
ip lan2 address 10.1.1.241/16
ip lan2 nat descriptor 1
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
nat descriptor address inner 1 auto
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.2-192.168.0.64/16
dns host lan1
dns service recursive
dns server 2620:0:ccc::2 2001:4860:4860::8888 208.67.222.222 8.8.8.8
```

DNSの設定にIPv6を指定しているのは、なんとなくです。

# NVR510上のIPv6の設定

ルータ下でIPv6のアドレス配布ができるか、分かりませんが次のように設定しました。

```
ipv6 routing on
ipv6 route default gateway dhcp lan2
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan1 mld router version=2
ipv6 lan2 dhcp service client
ipv6 lan2 mld host version=2

```

IPv6の設定は何となくしています。一応後で動作確認はしました。
MLDの設定は何となくしています。（動いている？）

# 動作確認

動作確認はNVR510下に繋いだWindows端末で行いました。

## test-ipv6.com

![image.png](https://qiita-image-store.s3.amazonaws.com/0/108558/ed0338ef-f2d2-f015-9651-19f7206afe38.png)

## sourceforge.net Speedtest(IPv4)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/108558/db305690-35b2-ce80-46d3-35e21a04bfbc.png)

## ipv6-test.com Speedtest

![image.png](https://qiita-image-store.s3.amazonaws.com/0/108558/cae34828-8904-83c2-b1e0-1a7042679032.png)

## Google スピードテスト（おそらく、IPv6）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/108558/f2c8d7ca-4196-3eac-0c8d-50d6cf65464e.png)

# まとめ

一番の懸念点だったIPv6の設定に問題はないようで、外部との通信も動作確認上問題はなさそうです。
IPv4/IPv6どちらでも十分な速度が保たれており、IPv6はIPv4よりも高速に通信できているようです。

NUROでも同じような設定でIPv6が可能か分かりませんが、試してみるのも良いと思います。