IPoE ( IPv4 over IPv6 ) 環境に切り替える

## はじめに
COVID-19 の影響もあり、去年から在宅勤務となりました。
私は運が良かったのか、ネットが遅い、といったトラブルにはあっていないのですが、そういう話はよく見聞きします。
(私の環境は、Zoomしていて 1年間で 2～3回ほど、ネットワーク帯域幅が低くなっています、の表示がでたことがあるかな、程度です)

解決方法を探る話題の中に、IPv6 にすると速い、とか、数百Mbpsの速度が出た、などの情報があり、興味が湧きました。
そんなに速くなるのなら試してみたいと考え、実行してみたので、その過程と結果をご紹介したいと思います。


## 元の環境
まずは、自分の環境がどういう状況か、正確に把握することが重要です。
ということで、速度を確認してみました。

<img width="300" alt="p_before.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/2364cbdd-8090-6c8a-9fbb-26b990134961.png">
<img width="300" alt="s_before.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/7564dec3-6feb-6549-73c8-0733e4b1a1dd.jpeg">


有線でつないでいる PC は約37Mbps程度ということで、特に問題無いですね。
スマホは、わかっていたことですが、すごく遅いです・・・10Mbpsに届かない・・・
10年以上前に購入した [WHR-HP-G](https://www.buffalo.jp/product/detail/whr-hp-g.html) というルーターが現役だからですね！
いやーこんなにも長くがんばってくれて、感謝感謝です。
とはいえ、そろそろスマホでのデータダウンロードがつらくなっていたのは事実なので、この点だけでも買い替え時ではあります。
最後に回線契約ですね。

| 回線 | プロバイダ | プラン |
| ---- | ---- | ---- |
| Bフレッツ マンションタイプ(プラン1) VDSL方式(100Mbps) | OCN | OCN 光 with フレッツ マンション・プラン1・東日本 |

ここでとても気になるのは、 `VDSL方式(100Mbps)` であることです。
マンション共用部に NTT の設備があり、そこから部屋まで電話線で引き込んでいる形です。
これは、何をどうがんばっても、100Mbps の壁を超えることは不可能では・・・と思われました。

なおマイページで確認すると以下となっていましたが、この部分は無料で申込可能なようでした。

| IPoE提供状況 | |
| ---- | ---- |
| IPoE | 未提供 |

IPoE の申込をし、自分で対応ルーターを準備すれば、IPoE(IPv4 over IPv6)が利用可能になるようです。
(有償ですが、対応ルーターをレンタルで利用するプランもあります)


## 検討ポイント
今回やってみたいことを、整理してみました。

| 項番 | 希望 | 可否 |
| ---- | ---- | ---- |
| 1 | IPoE(IPv4 over IPv6) にしたい | 〇 |
| 2 | ルーターは CLI で設定できるものを用意したい | 〇 |
| 3 | Wi-Fi に速くなってほしい | 〇 |
| 4 | あわよくば Wi-Fi6 対応！ | × |
| 5 | 数百Mbpsの爆速！ | × |
| 6 | 10Gbpsネットワーク！ | × |

1 は申込をすれば使えるので、問題無いです。
2 は、自分もそろそろネットワーク機器を CLI で設定したり、ネットワークエンジニアっぽいことをしてみたい・・・という無邪気な希望です。
そして、自分の中ではこれが一番優先順位として高かったです。
3 は当たり前に実現しないと困ることですね。
4 については、どうせなら最新に対応できるといいな、と思いましたが、2 を満たす機器で対応しているものは無さそうでした。 Wi-Fi5 で我慢ですね。
5 は利用中の回線では無理だな、と思いましたし、かといってこれだけの目的で別の回線契約を検討するほどでも無いので、あきらめました。
6 はどうせならいっそ、とか夢を見ましたが、PC の買い替えから考えるようなことになるので、おとなしくあきらめました。


## 機器選定
ということで、第一希望である CLI で設定でき、IPoE や無線LAN が使える機器、を探しました。
これが、なかなか無いんですね・・・
通常のオフィスだと、やはりルーターと無線LANアクセスポイントは別の機器にすることが多いのか、無線LAN機能付きのルーターとなると、非常に限られたモデルしか無いことがわかりました。
かつ、[OCNバーチャルコネクトサービス対応端末](https://www.ntt.com/content/dam/nttcom/hq/jp/business/services/network/internet-connect/ocn-business/option/v-access-ipoe/pdf/bocn_vc_router.pdf) にあるものから選ぶ必要もあります。
あまりの選択肢の無さに、いっそ別々での導入も考えたりしましたが、やはり機器を分けたくない、というのが優先されました。
そこで価格面なども考慮の上、今回は NEC の [UNIVERGE WA2612-AP](https://www.necplatforms.co.jp/product/wa/product/wa2612ap.html) を選定しました！
定価は一般人が購入するような金額ではありませんが、たまたま新古品がリサイクルショップに出ていて、4万ちょっとで購入することができたので、これにした、というところです。
(FortiWiFi もかなり真剣にほしかったですが・・・)
いや、コンシューマの製品なら、1万以下で手に入るわけで、いったい何をやっているのかと言われればそのとおりなのですが、自分でカスタマイズしていろんな設定ができるんだと思うと、非常に楽しみで、自己投資と考えることにしました。
なお、あわせて USB のシリアルコンソールケーブルも購入しました。
うーんこれを持っているだけで、ネットワークエンジニア見習いになれたっぽくて、うれしくなりますね！笑


## 構成
今回の構成は、以下のようにすることにしました。
有線と Wi-Fi で同一セグメントで LAN を利用するようにしつつ、IPoE と PPPoE を併用して、ポリシールーティングで使い分ける、という形で、運用することにします。
通常は IPoE側を利用し、IPv4 のみの環境には IPv4 over IPv6 でアクセスする、という形です。
内部の PC で PPTPクライアントを使うときとか、このルーターで L2TP/IPsec のリモートアクセスVPN を使うときの経路は、PPPoE にするようにします。
DDNSサービスも利用して、動的IP でも気にせずいつでも外からリモートアクセスVPN できるようにします！

![wa_sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/07012db5-54a7-4ca5-3323-be18cd63f8e3.png)


## 設定
以下のような設定を実行しました。
なお、DDNS を使うためとか、クラウドサービス上で機器の管理ができる、という目的のために、[NetMeister](https://www.necplatforms.co.jp/product/netmeister/index.html) のアカウントも事前に作っております。
(Gmail などのフリーのメールアドレスは利用できないので注意です)
なおこの機器の設定にあたっては、[マニュアル](https://jpn.nec.com/univerge/wa/download.html)や[サンプルなど](https://jpn.nec.com/univerge/wa/support.html)がわりと充実していたので、これらを参考にしました。
ありがたいです！

* ホストネームの設定

```
hostname YOURHOSTNAME
```

* パスワードの設定

```
username admin password plain XXXXXXXX administrator
```

* WEBインターフェイス用のユーザーとパスワードの設定(初期状態のものを念のため削除してから実行)

```
no http-username admin
http-username admin password plain XXXXXXXX administrator
```

* enableのパスワードの設定

```
enable password plain XXXXXXXX
```

* PPPoE用の設定作成
    * GE0/1インターフェイスはまとめてのちほど
    * DDNSで解決される IP は PPPoE側になるようにする(外部からVPNアクセスするため)
    * デフォルトルートは PPPoE側とする(のちほどポリシールーティングで全部 IPoE側に向ける)
    * とりあえず DHCP で割当てる範囲は 192.168.11.10～.59 とする
    * PPPoEだけの動作にする場合は、それ用に GE0/1 の設定と、DNSの設定をする必要があるが、割愛

```
ppp profile pppoeprof
  authentication username XXXXXXXXXXXXXXXX
  authentication password plain XXXXXXXX

ip dhcp-server enable
ip dhcp-server profile default
  assignable-range 192.168.11.10 59
  default-gateway auto
  dns-server auto
  subnet-mask auto

interface PPPoE0
  ip address ipcp
  ip tcp adjust-mss auto
  ppp profile pppoeprof
  auto-connect
  ip napt enable
  no shutdown

nm ddns notify interface PPPoE0 protocol ip
ip route default PPPoE0
```

* WEBインターフェイスへのアクセス制限設定(内部からのみ許可。初期状態のものを削除してから実行)

```
https-server ip enable
no https-server ip permit 192.168.1.0/24
https-server ip permit 192.168.11.0/24
https-server ip redirect enable
```

* 無線LAN用の設定

```
bridge ieee enable

wireless 2g channel bgn single auto
wireless 2g powerlevel 50
wireless 5g channel anac quad auto
wireless 5g powerlevel 100

interface WirelessEthernet0.0
  ssid SAMPLESSID-A
  authentication type psk
  encryption mode wpa2 aes
  encryption wpa-key plain XXXXXXXXXX
  frequency dual
  no ip address
  bridge ieee 1
  no shutdown

interface WirelessEthernet0.1
  ssid SAMPLESSID-B
  authentication type psk
  encryption mode wpa2 aes
  encryption wpa-key plain XXXXXXXXXX
  frequency 2g
  no ip address
  bridge ieee 1
  no shutdown

interface WirelessEthernet0.2
  ssid SAMPLESSID-C
  authentication type psk
  encryption mode wpa2 aes
  encryption wpa-key plain XXXXXXXXXX
  frequency 5g
  no ip address
  bridge ieee 1
  no shutdown
```

* NetMeisterを利用するための設定

```
boot entry flash wa2600.bin
nm ip enable
nm account XXXXXX password plain XXXXXXXXXXX
```

* SSHを有効化

```
ssh-server ip enable
```

* IPoE用の設定(MAP-E)

```
ipv6 access-list block-list deny ip src any dest any
ipv6 access-list dhcpv6-list permit udp src any sport any dest any dport eq 546
ipv6 access-list dhcpv6-list permit udp src any sport any dest any dport eq 547
ipv6 access-list icmpv6-list permit icmp src any dest any
ipv6 access-list tunnel-list permit 4 src any dest any
ipv6 access-list dynamic dflt-list permit tcp src any sport any dest any dport any
ipv6 access-list dynamic dflt-list permit udp src any sport any dest any dport any
ipv6 access-list dynamic dflt-list permit icmp src any dest any

ipv6 dhcp-client profile dhcpv6-cl
  information-request
  option-request dns-servers

ipv6 dhcp-server enable
ipv6 dhcp-server profile dhcpv6-sv

interface MAPE0
  ip address map-e
  ip tcp adjust-mss auto
  ip napt enable
  map-e vne-type ocn
  map-e enduser-interface GigaEthernet1.0
  no shutdown

proxy-dns ipv6 enable
proxy-dns server default GigaEthernet0.0 dhcpv6
```

* インターフェイス(GE0/GE1)の設定
  * PPPoE用と IPoE用でまとめて記載

```
interface GigaEthernet0.0
  no ip address
  encapsulation PPPoE0
  ipv6 filter dhcpv6-list 1 in
  ipv6 filter icmpv6-list 2 in
  ipv6 filter tunnel-list 3 in
  ipv6 filter block-list 100 in
  ipv6 filter dhcpv6-list 1 out
  ipv6 filter icmpv6-list 2 out
  ipv6 filter tunnel-list 3 out
  ipv6 filter dflt-list 100 out
  ipv6 dhcp-client binding dhcpv6-cl
  ipv6 enable
  ipv6 nd proxy GigaEthernet1.0 receive-default
  no shutdown

interface GigaEthernet1.0
  ip address 192.168.11.1/24
  ip dhcp-server binding default
  ipv6 dhcp-server binding dhcpv6-sv
  ipv6 enable
  ipv6 nd send-ra
  ipv6 nd ra other-config-flag
  bridge ieee 1
  no shutdown
```


* ポリシールーティング
  * 全通信を MAPE0(IPoE)側にルーティングしている
  * この機器にリモートアクセスVPN するとき、クライアントに 192.168.11.60 を割当てるようにしているので、それは別経路(l2tppolicy0)
  * PPTP でアクセスする VPN機器が外部にいる場合に、そこと通信できるように別経路(vpcrouterpolicy0)


```
ip access-list localpolicy permit ip src any dest any
ip access-list l2tppolicy0 permit ip src any dest 192.168.11.60/32
ip access-list vpcrouterpolicy0 permit ip src any dest ***.***.***.***/32

route-map LocalPolicy permit 10
  match ip access-list l2tppolicy0
  set interface L2TPE0

route-map LocalPolicy permit 20
  match ip access-list localpolicy
  set interface MAPE0

route-map LocalPolicy permit 5
  match ip access-list vpcrouterpolicy0
  set interface PPPoE0

interface GigaEthernet1.0
  ip policy route-map LocalPolicy

```

* この機器にリモートアクセスVPN するための L2TP/IPsec の設定
  * NetMeister を利用して DDNS を使えるようにしているので、 `YOURHOSTNAME.グループ名.nmddns.jp` で、外部からアクセス可能な形です

```
ppp profile lns
  authentication request chap-pap
  user-list XXXXXX password plain XXXXXXXXX
  ipcp provide-remote-dns 192.168.11.1
  ipcp provide-ip-address 192.168.11.60

interface L2TPE0
  ip address unnumbered GigaEthernet1.0
  ip tcp adjust-mss auto
  ppp profile lns
  l2tp mode lns
  no shutdown

ike proposal ike-prop
  encryption-algorithm aes256-cbc
  authentication-algorithm hmac-sha2-256
  lifetime 28800
  dh-group 2048-bit

ike policy ike-policy
  mode main
  dpd-keepalive enable ph1 10 3
  proposal ike-prop
  pre-shared-key plain XXXXXXXXX
  nat-traversal enable keepalive 20

ipsec proposal ipsec-prop
  protocol esp enc-algo aes256-cbc auth-algo hmac-sha2-256
  lifetime 28800

ipsec policy ipsec-policy
  proposal ipsec-prop

ipsec profile ipsec
  mode transport
  ipsec policy ipsec-policy
  ike policy ike-policy
  source PPPoE0
  peer any

interface PPPoE0
  ipsec map ipsec
  ip napt reserve udp 500
  ip napt reserve udp 4500
  ip napt reserve esp

interface GigaEthernet1.0
  proxy-arp enable
```

# 完成版コンフィグ
上述のような設定を実施した、完成版のコンフィグサンプルを[こちら](https://github.com/shztki/wa2612)に置いております。
ご参考まで、ということで。
数ヶ月無事に稼働しているので、たぶん設定に問題は無いのかな、と思います。

# NetMeister での表示サンプル
以下のような感じで、機器の状況を確認できます。
NW機器を簡単にクラウド管理できる時代、ということなんですねぇ。

<img width="400" alt="nm_sample.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/8f546ce3-e856-da36-4cd2-573276f74fbe.png">


## 構築後の環境
ということで、ルーター入替後の速度は以下のとおりです。
IPv6 については、[iNoniusスピードテスト (IPv4/IPv6)](https://inonius.net/)というサイトで確認させていただきました。

<img width="300" alt="p_after.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/7926da7c-4fbe-2f3f-977a-2685d7bddc21.png">
<img width="300" alt="p_after02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/ca714a2a-15eb-e24a-e679-4f6b65b88492.png">
<img width="300" alt="s_after.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/b8805d6b-25ed-a38f-b9ff-ddb99a7eed64.jpeg">
<img width="300" alt="s_after02.png" src ="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532524/26834b64-bbf7-923d-b275-1b412f2b5560.png">


## 最後に
想定通りの速度になった感じですね。
100Mbpsの壁を超えられないのは、残念な限りでした。
有線の方はもともと不満も無かった分、劇的に変わった感じも無いですね。
(まぁ大容量のファイルのダウンロードは速くなったかなとは思いますが)
スマホは、圧倒的に速くなり、よく大容量データのダウンロードでタイムアウトしていたようなことも無くなり、かなり快適です。
まぁこの程度の結果を得るためだけなら、市販の安いルーターで十分なわけですが・・・
とはいえいろんな設定を自分自身でいじれる、というのは、楽しくて充実した時間でしたし、市販の機器で細かな設定ができないと、PPTP での VPNクラアイント利用は諦めるしか無かったり、検証などいろいろとできなくなったであろうことを考えると、よかったかなと思います。
そのために支払った金額としてはかなり高い部類ですが、満足です！！
こんなことする人はなかなかいない気もしますが、この情報が何かしらご参考になれば幸いですし、なんせはじめてさわったので、アドバイス等あれば、いただけるとうれしいです。
それでは、みなさまどうぞよいインターネットライフを！