コミュファ光でRTX830を使ったIPv4/IPv6デュアルスタック接続

VPN環境を構築したい場合、標準レンタルされてくるHGWが邪魔になることが多い。
コミュファではeo光のようにオプションではなく、強制設置のため外せない。

そのため、HGWに外部ルーター(RTX830) をPPPoEブリッジで接続する。
さらにこの状態で、RTXからIPv6も通信できるようにする。
なお、コミュファによるとHGWのPPPoEブリッジでは「IPv4接続に限った利用しかサポートしていない」とのこと。

#前提
コミュファの接続方式は、PPPoE接続である。
コミュファのIPv6に関する技術仕様は、シングルセッションデュアルスタック方式である。
![スクリーンショット 2021-04-17 184835.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/75144c96-5154-0e15-eb66-84036f9d81ef.png)
![スクリーンショット 2021-04-17 185254.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/0ae0a71b-9f56-2359-e16c-3a0a827c0080.png)

#環境
回線:　コミュファ光 ホーム 1G
HGW:　Aterm WH862A
ルータ:　YAMAHA RTX830 (Rev.15.02.17)

#RTX側からHGWの管理画面を見に行けるようにしておく
例）HGW IP: 192.168.0.1
　　RTX830 IP: 192.168.1.1　の場合

HGWの管理画面から　詳細設定　→　IPv4ルーティング設定　→　追加
　宛先IPアドレス:　192.168.0.0/16
　指定方法:　インターフェース
　ゲートウェイ:　192.168.0.2
![スクリーンショット 2021-04-17 151618.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/af31494a-3fe0-87be-7826-2d32721dde30.png)

RTX側から以下のコマンドを入力する。

```
ip lan2 address 192.168.0.2/24
description lan2 HGW_access
```

以下の設定後、 http://192.168.0.2 へアクセスするとHGWの管理画面が表示される。

#ホームゲートウェイの設定
基本設定　→　高度な設定を表示
　接続モード:　要求時接続
　PPPキープアライブ機能:　チェックを外す

詳細設定　→　その他の設定
　PPPoEブリッジ:　チェックを入れる

情報　→　通信情報ログ
　接続時のlogでIDを確認してメモしておく。　__*******@v6m00.commufa.jp__
![SS2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/1d72911a-35e0-d8a4-9985-a0244facb310.png)

__IPv6機能のチェックを外す。__外さないとHGWが優先されてしまう。
![スクリーンショット 2021-04-17 151505.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/e8ea5fd8-31c6-b7c1-8e3f-36394d5c0676.png)

#RTX830の設定
まずは普通にIPv4だけで繋ぐ。
　かんたん設定　→　プロバイダー接続　→　新規
　接続インターフェース　→　WAN
　__※ここで使用するユーザーIDは、先程メモしたIDを入力する。__

次に、以下のコマンドを実行する。

``` 
ipv6 route default gateway pp 1
ipv6 prefix 1 dhcp-prefix@pp1::/64
ipv6 lan1 address dhcp-prefix@pp1::1/64
ipv6 lan1 rtadv send 1

pp select 1
ppp ipv6cp use on
ipv6 pp rip send off
ipv6 pp rip receive off
ipv6 pp dhcp service client
```

IPv6フィルタ関連

``` 
ipv6 filter dynamic 200080 * * ftp
ipv6 filter dynamic 200081 * * domain
ipv6 filter dynamic 200082 * * www
ipv6 filter dynamic 200083 * * smtp
ipv6 filter dynamic 200084 * * pop3
ipv6 filter dynamic 200085 * * submission
ipv6 filter dynamic 200098 * * tcp
ipv6 filter dynamic 200099 * * udp

ipv6 pp secure filter out dynamic 200080 200081 200082 200083 200084 200085 200098 200099
```

最低限の設定は以上だが、何故か pp disable 1 を行った後に pp enable 1 を行わないと接続できない。
そのため、 schedule at コマンドを使い、起動時に自動実行するようにしておく。

``` 
schedule at 1 startup * pp disable 1
schedule at 2 startup * pp enable 1
``` 

RTXを再起動すると自動的に繋がるようになる。
![スクリーンショット 2021-04-17 152327.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/b5f6e07a-9e89-b7e4-6fba-623231849772.png)
![スクリーンショット 2021-04-17 150605.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/95d93b2b-12f9-3aa4-26dc-b6ffe8c129b4.png)

https://test-ipv6.com/
![DNSok.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54890/38500e34-ce46-a4fa-2894-fb444fc85407.png)

また、RTX再起動時にHGWを再起動する必要はない。
さらに、この状態でHGWのみを再起動しても問題なくIPv6アドレスが降ってくる。

##パブリックDNSサービスを使う場合
DNSサーバーを使わずに、
プライマリにCloudFlare、セカンダリにGoogle Public DNSを使う例。

``` 
dns service off
dns server 1.1.1.1 8.8.8.8 2606:4700:4700::1111 2001:4860:4860::8888
``` 

##最終的なconfig
一部抜粋（ほぼ全て）

``` 
ip route default gateway pp 1 filter 500000 gateway pp 1
ipv6 route default gateway pp 1
ipv6 prefix 1 dhcp-prefix@pp1::/64
ip lan1 address 192.168.1.1/24
ipv6 lan1 address dhcp-prefix@pp1::1/64
ipv6 lan1 rtadv send 1
description lan2 HGW_access
ip lan2 address 192.168.0.2/24
pp select 1
 description pp Commufa
 pp keepalive interval 30 retry-interval=30 count=12
 pp always-on on
 pppoe use lan2
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname 00000000000000@v6m00.commufa.jp password
 ppp lcp mru on 1454
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ppp ccp type none
 ppp ipv6cp use on
 ip pp mtu 1454
 ip pp secure filter in 200003 200020 200021 200022 200023 200024 200025 200030 200032
 ip pp secure filter out 200013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
 ip pp nat descriptor 1000
 ipv6 pp rip send off
 ipv6 pp rip receive off
 ipv6 pp secure filter out dynamic 200080 200081 200082 200083 200084 200085 200098 200099
 ipv6 pp dhcp service client
 pp enable 1
ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.1.0/24 * * * *
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.1.0/24 * * *
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 200024 reject * * udp,tcp 445 *
ip filter 200025 reject * * udp,tcp * 445
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp
ip filter 200030 pass * 192.168.1.0/24 icmp * *
ip filter 200031 pass * 192.168.1.0/24 established * *
ip filter 200032 pass * 192.168.1.0/24 tcp * ident
ip filter 200033 pass * 192.168.1.0/24 tcp ftpdata *
ip filter 200034 pass * 192.168.1.0/24 tcp,udp * domain
ip filter 200035 pass * 192.168.1.0/24 udp domain *
ip filter 200036 pass * 192.168.1.0/24 udp * ntp
ip filter 200037 pass * 192.168.1.0/24 udp ntp *
ip filter 200099 pass * * * * *
ip filter 500000 restrict * * * * *
ip filter dynamic 200080 * * ftp
ip filter dynamic 200081 * * domain
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200085 * * submission
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp
nat descriptor type 1000 masquerade
ipv6 filter dynamic 200080 * * ftp
ipv6 filter dynamic 200081 * * domain
ipv6 filter dynamic 200082 * * www
ipv6 filter dynamic 200083 * * smtp
ipv6 filter dynamic 200084 * * pop3
ipv6 filter dynamic 200085 * * submission
ipv6 filter dynamic 200098 * * tcp
ipv6 filter dynamic 200099 * * udp
telnetd service off
dns service off
dns server 1.1.1.1 8.8.8.8 2606:4700:4700::1111 2001:4860:4860::8888
dns cache max entry 1024
dns server select 500001 pp 1 any . restrict pp 1
schedule at 1 startup * pp disable 1
schedule at 2 startup * pp enable 1
``` 

#参考
http://www.jp.ipv6forum.com/201311/timetable/program/20131125_yamamoto.pdf
https://www.iajapan.org/ipv6/summit/TSU2020/pdf/ishida_tsu2020.pdf
http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/schedule/schedule_at.html
https://network.yamaha.com/setting/router_firewall/flets/flets_other_service/ipv6_pppoe
http://www.paku-net.com/?p=10002