IPv6 つかいはじめ

こんにちは。デジタル技術部次世代技術課の菊地です。
今回は、当ブログでは珍しくネットワークネタです。次世代インターネットプロトコルと言われる IPv6 プロトコルについてお話してみたいと思います。

IPv6ってどうなの?

現在のインターネットプロトコルの主流はまだ IPv4 であり、皆さんが今、当サイトをご覧になるために使っているプロトコルも IPv4 ではないかと思います。
1980 年代から使われてきた IPv4 ですが、実は世界的には大元の IPv4 アドレスプールはすでに2011 年に枯渇しています。

そのため、現在はいろいろな延命措置によって、なんとかやっているような状況なわけです。細かな状況は各国で違うようですが、日本においては、企業や個人宅などの NAT の利用拡大や、組織内で必要なくなったグローバルアドレスの返却や、ISP レベルの大規模な NAT (CGNAT といいます)の導入などによって、なんとか IPv4 インターネットが保たれれています。そういった背景もあり、新たなプロトコルである IPv6 への期待が寄せられています。
SCSK の社内ネットワークをみてもまだ IPv6 は流れてきていないようですが、世の中的には少しづつ IPv6 の普及が進んできています。

日本における IPv6 普及状況

それでは、IPv6 はどの程度普及しているのでしょうか。普及を測る尺度はいろいろ考えられますが、ここでは、 Google が公開しているデータから、検索リクエスト元アドレスに占める IPv6 の割合を見てみましょう。これは、ユーザー手元のネットワークの IPv6 化の状況を計る参考になると思います。

ipv6_2

2019 年時点ではだいたい 3 割くらいの普及ですね。このまま右肩上がりで普及が進めばあと 1 年で 4 割くらいになりそうな感じです。日本での IPv6 利用を進める要因のひとつとしては、NTT東西のフレッツ光ネクストの普及が挙げられると思います。フレッツ光ネクストは、インターネット(ISP)まで光回線で接続するためのいわゆる足回り回線サービスという位置づけですが、フレッツ光ネクストのネットワーク自体が IPv6 の閉域ネットワークで構成されています。フレッツ光ネクストには、多くの IPv4 ユーザがいますが、その人達は、IPv6 ネットワーク上で PPPoE トンネル を張り、その上で IPv4 を流しています。なんか無駄ですね。

最近では、フレッツ光ネクストの IPv6 ネットワークと IPv6 インタネットを直接(トンネルなしで)接続した、高速な IPv6 サービスや、その IPv6 サービスから IPv4 のインターネットへのアクセスを行う技術やサービスも広がりつつあるのですが、紙面が足りなくなるのでこのあたりにしておきます。

とりあえず IPv6 を試してみよう

フレッツ光ネクストや、その他の ISP の IPv6サービスを用いて IPv6 をすでに自宅などで使っている方もいるかと思いますが、まだ IPv4 を使っている方のほうが多いのではないかと思います。今回は、IPv4 ユーザがとりあえず IPv6 を簡単に試してみる方法をご紹介します。その方法とは、トンネルブローカーと呼ばれるものです、簡単にいうと、IPv4 インターネットを通じて IPv6 インターネットにアクセスできるサービスです。トンネルブローカサービスにはいくつかありますが、今回は TUNNELBROKER.CH というサービスを使ってみることにします。

TunnelBroker を利用するためにはWebサイトでアカウント登録した後、CREATE TUNNEL の画面に国名(Japan)を選択してこちら側グローバル IPv4 アドレスを入力します。そうすると、トンネルエンドポイントが作成され、以下の情報が得られます。

TunnelBroker

この画面では次の情報が得られます。

  1. Server IPv4 Address: トンネル設定のためのあちら側(TunnelBroker)のエンドポイントアドレス
  2. Client IPv4 Address: トンネル設定のためのこちら側のエンドポイントアドレス
  3. Server IPv6 Address: 相手側のエンドポイントアドレス
  4. Client IPv6 Address: こちらがわのエンドポイントアドレス
  5. Routed Prefix: ルーティングされる Prefix アドレス

ここからは、こちら側の機器設定作業です。今回は Ubuntu18.04 をインストールした Raspberry PI を IPv6 接続してみます。上記の情報をもととして、下の yaml を /etc/netplan/v6tun.yml として作成します。

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - "2a0c:3b80:7b01:1d::/64"
  tunnels:
    he-ipv6:
      mode: sit
      remote: 80.82.221.245
      local: 122.208.x.x
      addresses:
        - "2a0c:3b80:7b01:1c::2/64"
      gateway6: "2a0c:3b80:7b01:1c::1"

そして、

$ sudo netplan apply

とすると、設定が反映されて IPv6 通信のためのトンネルが確立します。

インタフェースを確認してみましょう。 he-ipv6 トンネルインタフェースが作成されて、 IPv6 アドレスが設定されているのがわかります。

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 122.208.x.x  netmask 255.255.255.224  broadcast 122.208.x.x
        inet6 2a0c:3b80:7b01:85::  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::ba27:ebff:fec4:106f  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:c4:10:6f  txqueuelen 1000  (Ethernet)
        RX packets 60767  bytes 59485810 (59.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22369  bytes 1880835 (1.8 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
he-ipv6: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1480
        inet6 2a0c:3b80:7b01:84::2  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::7ad0:3455  prefixlen 64  scopeid 0x20<link>
        sit  txqueuelen 1000  (IPv6-in-IPv4)
        RX packets 151  bytes 113165 (113.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 287  bytes 24454 (24.4 KB)
        TX errors 1  dropped 0 overruns 0  carrier 1  collisions 0

ping を打ってみます。

$ ping www.cisco.com
 
PING www.cisco.com(2001:f61:11:291::b33 (2001:f61:11:291::b33)) 56 data bytes
64 bytes from 2001:f61:11:291::b33 (2001:f61:11:291::b33): icmp_seq=1 ttl=50 time=515 ms
64 bytes from 2001:f61:11:291::b33 (2001:f61:11:291::b33): icmp_seq=2 ttl=50 time=515 ms
64 bytes from 2001:f61:11:291::b33 (2001:f61:11:291::b33): icmp_seq=3 ttl=50 time=515 ms
64 bytes from 2001:f61:11:291::b33 (2001:f61:11:291::b33): icmp_seq=4 ttl=50 time=515 ms
64 bytes from 2001:f61:11:291::b33 (2001:f61:11:291::b33): icmp_seq=5 ttl=50 time=515 ms
 
--- www.cisco.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 515.237/515.593/515.886/0.691 ms

ちゃんと IPv6 で通信できました。

おわりに

2002年7月、パシフィコ横浜で日本で最初の IETF Meeting(第54回IETF会議) が開かれました。IETF というのは Internet Engineer Task Force の略で、インターネットのプロトコルの標準化を行っている団体です。第 54 回 IETF 会議では多くの技術テーマの発表が行われましたが、中でも、IPv6 関連技術の発表がたくさん行われました。IPv6 プロトコル関連のプロトコル開発は多くの日本人も参加して進めらており、日本人による初めての OSS IPv6 プロトコルスタック を実装した KAME Project をはじめとして、たくさんの IPv6 関連発表がありました。まだ IPv6 に関する技術情報が少ない中で、それらを貪るように聞きに行ったことを思い出します。

IPv6 関連プロトコルは、開発初期のころと比べていろいろと変わってきた部分もありますがいまはもう安定しています。また、IPv6 を本格的に使うための技術や環境も整ってきたというのは前述のとおりです。今回は書ききれませんでしたが、IPv6 に関連する技術項目はたくさんあり、使う必要が生じたときになってからの対応では結構大変ではないでしょうか。とりあえず使える環境を整備して、習うより慣れろというのが良いかもしれません。

PAGE TOP