概要
DS-Lite対応ルーター無しに、インターリンンクのZOOT NATIVEによるIPv4 over IPv6接続を使用する手順について説明します。
インターリンク ZOOT NATIVE
「ZOOT NATIVE」はNTT東日本・西日本の「フレッツ光」対応のサービスです。
次世代のネットワーク(IPv6 IPoE接続)の「DS-Lite(Dual-Stack Lite)」方式を採用。
「DS-Lite」はIPv6のネットワークを経由してIPv4通信を行う(IPv4 over IPv6)規格です。
IPv4、IPv6の両方で「高速で安定的な通信」ができる新しいインターネット接続サービスです。
前提
以下が契約済であること。
- フレッツ・V6オプション
- ZOOT NATIVE
IPv6アドレスの割り当て
Linux KernelでIPv6が有効になっていれば、特に設定することなくIPv6アドレスが割り当てられます。
以下はRealtekのイーサネットを使った場合の例です。
ネットワークデバイス名はeth0とします。
# /sbin/modprobe r8169
# ip link set eth0 up
しばらく待つと以下のようにIPv6アドレスが割り当てられます。
この方法ではMACアドレスを元にIPv6アドレスが構成されます。
# /sbin/ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet6 xxxx:xxx:xx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr
valid_lft 14342sec preferred_lft 12542sec
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
GoogleのIPv6のDNSサーバにpingが通ります。
# ping6 -nc1 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=0 ttl=115 time=21.004 ms
--- 2001:4860:4860::8888 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 21.004/21.004/21.004/0.000 ms
DS-Lite IPv4 over IPv6接続
DS-LiteのIPv4 over IPv6接続サービスは、LinuxではIPv6トンネリングを設定することで使用することができます。
設定に必要な情報は、自身のIPv6アドレスと、IPトンネルの対向側のIPv6アドレスです。
ZOOT NATIVEの対向側のアドレスは「gw.transix.jp」になります。
interface tunnel0 tunnel dslite gw.transix.jp
但し、IPトンネリングの設定ではDNS名ではなくIPv6アドレスが必要になります。
正しくはDNSでIPv6アドレスを取得するべきですが、ここではひとまず、現時点のgw.transix.jpのIPv6アドレスの1つである、2404:8e01::feed:100
を使用します。
ローカルのIPv6アドレスがxxxx:xxx:xx:xxxx:xxxx:xxxx:xxxx:xxxxの場合、以下のように設定します。
# ip tunnel add dslite mode ipip6 remote 2404:8e01::feed:100 localxxxx:xxx:xx:xxxx:xxxx:xxxx:xxxx:xxxx encaplimit none dev eth0
# ip link set dslite up
- dslite: IPトンネルデバイスのデバイス名です。名前は任意に指定できます。
- mode ipip6: IPv4 over IPv6用のトンネリング設定を表します。
2022/4/12追記
今までIPv4とIPv6の性能比較をしていなかったのですが、Encapsulation limitオプション(encaplimit)がとても重要なことがわかりました。
Linuxではデフォルトは4になっていますが、デフォルトのままだと、IPv4はIPv6の半分にも満たない性能になります。
制限なしの「none」にすることで、ほぼ性能劣化は発生しなくなりました。
なお、リンクアップさせていますが、以下のようにトンネルデバイスのstateはUPにならずUNKOWNとなります。問題はありません。
4: dslite@eth0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1452 qdisc noqueue state UNKNOWN group default qlen 1000
link/tunnel6 xxxx:xxx:xx:xxxx:xxxx:xxxx:xxxx:xxxx peer 2404:8e01::feed:100 permaddr xxxx:xxxx:xxxx::
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
このdsliteをデフォルトルートに設定します。
ip route replace default dev dslite
GoogleのIPv4のDNSサーバにpingが通ります。
# ping -nc1 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=119 time=18.481 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 18.481/18.481/18.481/0.000 ms
以上の通り、DL-Lite対応ルーターを使用せずに、IPv4 over IPv6の接続ができました。
課題は以下です。
- MACアドレスベースでIPv6アドレスを設定していること。
- gw.transix.jpのIPv6アドレスは変更される可能性があること。
特にgw.transix.jpのIPv6アドレスが変更されると通信ができなくなるため、変更に応じてIPトンネリング設定を再設定する必要があります。これらをDHCPv6を使用して解決します。
『IPv4 over IPv6接続その2』で説明します。