EdgeRouter X でIPv6通信をしてみる(光電話なし)-EdgeRouter X設定

EdgeRouter X

前回の記事では、IPv6通信って何?というのを書きました。今回は実際にEdgeRouter Xで設定してみたいと思います。

バージョン確認

EdgeRouter Xはバージョン1.9以降でないと対応しておりません。ログインするとロゴの隣にバージョンが表示されるので確認してください。今回僕がやったバージョンは v2.0.8 となります。

現在の構成

元々の構成
我が家の現在の構成はこのようになっております。
※画像はクリックで拡大します

  1. ONU
  2. EdgeRouter X
  3. 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経由でもいいかなと思ったりしております。プリンターなどもまだ設定していないので今後どうなるか試したい見たいと思います。

まとめ

最後のスイッチを挟むというのが大事でした。

個人支援・寄付について

サイトラボではBuildreeの開発などのため、現在個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではkyashというサービスをつかっております。ビットコインでも受け付けております。