EdgeRouter X でIPv6通信をしてみる(光電話なし)-EdgeRouter X設定
前回の記事では、IPv6通信って何?というのを書きました。今回は実際にEdgeRouter Xで設定してみたいと思います。
バージョン確認
EdgeRouter Xはバージョン1.9以降でないと対応しておりません。ログインするとロゴの隣にバージョンが表示されるので確認してください。今回僕がやったバージョンは v2.0.8 となります。
現在の構成
我が家の現在の構成はこのようになっております。
※画像はクリックで拡大します
- ONU
- EdgeRouter X
- Archer A2600、Google Wifi
仕事用とゲスト用でネットワークを分けている
図を見ると2つのEdgeRouter Xの下にさらにルーターがあります。これはEdgeRouter Xが無線LAN対応では無いため、無線ルーターをブリッジモード(APモード)にして自宅でもWi-Fi環境をやっているためになります。
- eth1:仕事用ネットワーク
- eth2:ゲスト用ネットワーク
となっています。仕事用とゲスト用ネットワークで分かれているため、取得するIPアドレスも違っております。
IPv6通信するポートはeth1
本当はeth1もeth2もしたかったのですが、設定を失敗したため最終的にはeth1がIPv6通信対応となります。eth2は従来のIPv4となっております。
設定はSSHで行う
GUIの画面から設定も可能かと思いますが今回はSSHで行います。
設定準備
設定をしていきます。参考サイトとして下記2サイトを参考いたしました。
firewallの設定は記述しない
ここではあくまでIPv6通信の設定のみとなるので、firewallの設定などは載せておりません。ご注意ください。
SSHの操作、VyOSのコマンドになれている前提
コマンド操作のため、コマンド操作が慣れている前提と、VyOSの知識を持っている前提となりますのでご注意ください。
では実際に設定をしていきます。
設定
IPv4 over IPv6(DS-Lite方式)の設定
今回IPv6通信はDS-Lite方式を使います。
IPv6 アドレスの自動設定 (autoconf) と割当ての確認
まずはルーター側にIPv6アドレスの自動設定をします
configure set interfaces ethernet eth0 ipv6 address autoconf commit exit
10分ほど待てばIPアドレスが取れるみたいです。自分の場合は10分も待たなくてもIPアドレスを取りました。
確認
設定の確認をしてみます
ubnt@ubnt:~$ show interfaces Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 u/u Internet (PPPoE) eth1 192.168.1.1/24 u/u Local 2 eth2 192.168.2.1/24 u/u Local eth3 - u/D Local eth4 - u/D Local lo 127.0.0.1/8 u/u ::1/128
無事にIPv6を取得しました
ipv6のルート設定
IPv6のルーティングテーブルの情報は以下のコマンドで確認できます
ubnt@ubnt:~$ show ipv6 route IPv6 Routing Table Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1, E2 - OSPF external type 2, N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2, B - BGP Timers: Uptime IP Route Table for VRF "default" K ::/0 [0/1024] via fe80::xxxx:xxxx:xxxx:xxxx, eth0, 01w0d11h #DS-Liteで使うアドレス C ::1/128 via ::, lo, 01w0d11h C xxxx:xxxx:xxxx:xxxx::/64 via ::, eth0, 01w0d11h C fe80::/64 via ::, v6tun0, 01w0d11h
ここまでで、ping6が通るはずなので確認してみます
ubnt@ubnt:~$ ping6 -c5 2001:4860:4860::8888 PING 2001:4860:4860::8888(2001:4860:4860::8888) 56 data bytes 64 bytes from 2001:4860:4860::8888: icmp_seq=1 ttl=53 time=8.65 ms 64 bytes from 2001:4860:4860::8888: icmp_seq=2 ttl=53 time=8.64 ms 64 bytes from 2001:4860:4860::8888: icmp_seq=3 ttl=53 time=8.34 ms 64 bytes from 2001:4860:4860::8888: icmp_seq=4 ttl=53 time=8.64 ms 64 bytes from 2001:4860:4860::8888: icmp_seq=5 ttl=53 time=8.62 ms --- 2001:4860:4860::8888 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4013ms rtt min/avg/max/mdev = 8.342/8.583/8.657/0.134 ms [edit]
無事通りました。
IPv4について
当サイトを既に見ている時点でIPv4は取得できているため、pingは割愛します
DNSの設定
上記までは、IPv4とIPv6でそれぞれで通信をしてpingが通るという状況でございます。また、DNSの設定もしていないので、ping6 -c5 google.com といれてもエラーとなります。ここではDNSの設定をしていきます。
Google Public DNSを使う
Googleが公開しているDNSを設定します。
configure set system name-server 2001:4860:4860::8888 set system name-server 2001:4860:4860::8844 commit save
これでping6 google.com でもpingが通ります。当サイトもIPv6通信に対応しているため、ping6でも返答があります。
ubnt@ubnt# ping6 -c5 logw.jp PING logw.jp(153.126.202.153.v6.sakura.ne.jp (2401:2500:102:3037:153:126:202:153)) 56 data bytes 64 bytes from 153.126.202.153.v6.sakura.ne.jp (2401:2500:102:3037:153:126:202:153): icmp_seq=1 ttl=51 time=40.2 ms 64 bytes from 153.126.202.153.v6.sakura.ne.jp (2401:2500:102:3037:153:126:202:153): icmp_seq=2 ttl=51 time=35.8 ms 64 bytes from 153.126.202.153.v6.sakura.ne.jp (2401:2500:102:3037:153:126:202:153): icmp_seq=3 ttl=51 time=36.4 ms 64 bytes from 153.126.202.153.v6.sakura.ne.jp (2401:2500:102:3037:153:126:202:153): icmp_seq=4 ttl=51 time=35.9 ms 64 bytes from 153.126.202.153.v6.sakura.ne.jp (2401:2500:102:3037:153:126:202:153): icmp_seq=5 ttl=51 time=35.8 ms --- logw.jp ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4013ms rtt min/avg/max/mdev = 35.811/36.863/40.210/1.703 ms
このように返ってきます。
DS-Liteの設定
IPv6でもIPv4のサイトを閲覧できるようにするには、DS-Liteという方法を使います。詳しくは参考サイトを閲覧していただくのがよいですが、簡単にいうとIPv4とIPv6を両方使える用にしている技術です。これを使って行きます。
ルーターに設定を書き込む
configure set interfaces ipv6-tunnel v6tun0 encapsulation ipip6 set interfaces ipv6-tunnel v6tun0 local-ip <eth0 global ipv6> #割り振られたIPv6アドレスをいれる set interfaces ipv6-tunnel v6tun0 remote-ip <remote ipv6> #NTT東日本と西日本でいれるIPが変わる set protocols static interface-route 0.0.0.0/0 next-hop-interface v6tun0
remote ipv6について
NTT東日本と西日本でいれる中身が変わります。以下の情報をいれてください。
NTT東日本エリア
- 2404:8e00::feed:100
- 2404:8e00::feed:101
NTT西日本エリア
- 2404:8e01::feed:100
- 2404:8e01::feed:101
どちらか一つをいれればOKです。ちなみに、僕は2404:8e01::feed:100 をいれております。
完了
参考サイトを見ると、これで設定は完了となります。
実際に確認をしてみる
実際にできているか確認をしてみます。確認方法は簡単です。GUIの場合はブラウザでルーターにアクセスをしてみてください。そこでeth0がIPv6をとっているかになります・
コマンドの場合は以下でできます。
ubnt@ubnt:~$ show interfaces Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 u/u Internet (PPPoE) eth1 192.168.1.1/24 u/u Local 2 eth2 192.168.2.1/24 u/u Local eth3 - u/D Local eth4 - u/D Local lo 127.0.0.1/8 u/u ::1/128
これでeth0がIPv6をとっていればIPv6を取得しているということになります。
外部サイトで確認
ルーターはGUIもコマンドもOKだったので、外部のサイトで確認してみます。あなたの IPv6 接続性をテストしましょう。にアクセスをしてみてください。
おそらくテストの点数は10/10が正しいのですがならないと思います。IPv6接続対応していないなどでるかと思います。
参考サイト通りにやったのに何故?
参考サイト通りに設定をしてpingも確認したのですが、何故か外部のサイトではIPv6ではないと言われてしまいました。
実はIPv6通信できていない
参考サイト通りにすると、コマンドやブラウザではIPv6通信できていると思いますが現実はできていないという状態になります。これはおそらく参考サイトが外部のサイトで確認をしていなかったからかもしれません。なぜできていないのか調べて見ましょう
EdgeRouter Xの機能の問題
調べて見ると、EdgeRouter X – 番外編4. フレッツで IPv6 / IPv4 同時使用というサイトに答えが載っておりました。引用してみます。
ひかり電話がないと
なんとルーターに RA でプレフィックス /64 の IPv6 アドレスしか降ってきません。プレフィックス /64 はこれ以上サブネットに分割できないので、ルーターは配下に IPv6 を割り当てることができません。そのためルーター配下の端末で IPv6 を使うには、ルーター配下にも RA を転送してやらなければなりません。が、しかし RA はレイヤー2のプロトコルなので、そのままではルーター配下には流れません。日本のフレッツ対応のルーターは RA パススルー機能があるようですが、 EdgeRouter にはそんな機能はなく、レイヤー2なので基本的には WAN と LAN をブリッジ接続をすることになります。が、そうすると今度は WAN – LAN 間で IPv4 のルーティングやマスカレードができなくなってしまします。困りましたね。
これになります。日本のルーター(バッファローやNEC等)はパススルー機能があるため、↑の設定でいけるみたいですがEdgeRouter X にはそのような機能がないため、ルーター配下まで流れないようです。つまり、IPv6通信ができないという事になります。
解決策
解決策としては、ONUとEdgeRouter Xの間にスイッチングハブをかませばよいという事になります。間にスイッチをいれた構成に変えて見ます。
赤枠がスイッチになります。若干わかりづらいかもしれませんが、、、スイッチとEdgeRouter Xを繋ぎ、スイッチと各無線ルーター(ブリッジモード/APモード)を繫いでみました
失敗・・・
結論いうとこれは失敗となります。IPv6通信は問題無くできますが、IPアドレスが全てeth2の192.168.2.x とゲスト用となてしまいました。これではネットワークをわけている意味がなくなってしまうのと、eth1で設定しているNASなどのネットワーク機器にアクセス出来ません。。。。
最終的な構成
最終的にはこのようになりました。スイッチを挟んでArcher A2600 のみにして、eth2のGoogle WifiはEdgeRouter Xにそのままつけるという形になりました。
eth1のみIPv6通信
eth1のみIPv6通信ができ、eth2は従来のIPv4のみとなりました。これが今できる最善でした。
メリット
このやり方はメリットがありました。自宅ではChrome Castを使っているのですが、これがIPv6に非対応のためIPv4通信になり、他の端末も全てIPv4通信となりIPv6通信ができなくなるということがありました。
IPv6非対応なのは全てeth2経由でもいいかなと思ったりしております。プリンターなどもまだ設定していないので今後どうなるか試したい見たいと思います。
まとめ
最後のスイッチを挟むというのが大事でした。
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS