ホーム » 技術 » ネットワーク » 6to4によるIPv6接続(FreeBSD編)

SAKURA Internet Inc.

アーカイブ

6to4によるIPv6接続(FreeBSD編)

当ブログをご覧の皆様こんにちは。さくらインターネット研究所の大久保です。

弊社にて2010年9月より提供を開始した仮想化ホスティングサービス「さくらのVPS」にて、IPv6に対応しているか度々質問を受けることがあります。

開発陣に確認したところ、対応する予定はあるが時期は未定、とのことで、大変申し訳ありませんが、正式対応までしばらくお待ちいただければと思います。

しかしながら実験ベースでも良い、という方には簡単な設定で今すぐに使える「6to4」を使ったIPv6接続をお勧めします。なお、6to4はさくらのVPS以外でもIPv4グローバルアドレスの環境があれば使用することができます。

6to4とは?

6to4はRFC3056にて定義されており、IPv6をIPv4上にトンネルする技術の一つです。通常のトンネルでは、クライアントが増えるたびにトンネルサーバの設定をしなければなりませんが、6to4はトンネルサーバ(6to4ではリレールータと呼ばれる)の設定を毎回行う必要がなく、クライアント側でのみ設定すれば使えるという、いわゆる自動トンネルの機能を備えていることが特長です。

6to4のネットワーク構成を以下に示します。

6to4全体で使われるIPv6アドレス空間として2002::/16が割り当てられており、6to4クライアントが使えるアドレス空間は、2002の後にクライアントのIPv4アドレス32bitを埋め込んだ/48空間となります。6to4のアドレスフォーマットを以下に示します。

2002:xxxx:xxxx::/48
※ xxxx:xxxx  クライアントのIPv4アドレス32bitを16進数表記したもの

6to4リレールータは、IPv6インターネットから2002::/16宛てのパケットを受け取り、IPv6アドレス中に埋め込まれているIPv4アドレスを取り出し、そのIPv4アドレス宛にトンネルしたパケットを送信します。そのため、IPv4グローバルアドレスが必要となります。

FreeBSDでの設定例

今回は 61.211.224.126 のIPv4アドレスが設定されたFreeBSDのサーバを例に説明します(動作確認はFreeBSD8.1で行っています)。
設定自体は以下のように/etc/rc.confに3行書いて再起動するだけです。

  • /etc/rc.confの編集
    # vi /etc/rc.conf  (以下を追加)
    ipv6_enable="YES"
    ipv6_defaultrouter="2002:c058:6301::"
    stf_interface_ipv4addr="61.211.224.126"

    stf_interface_ipv4addrは、サーバに設定されているIPv4アドレスをそのまま記入します。
    ipv6_defaultrouterは、6to4のリレールータのIPv4アドレス192.88.99.1(RFC3068で定義されている)を示しています。
    (補足:0xc0 = 192 , 0x58 = 88 , 0x63 = 99 , 0x01 = 1)

  • サーバの再起動
    設定を反映させるために、サーバを一旦再起動します。 

    # reboot

    もしくは、以下のコマンドでサーバを再起動せずに反映することもできます。

    # /etc/rc.d/network_ipv6 restart

再起動が完了すると、stf0というインターフェイスが現れます。

# ifconfig stf0
stf0: flags=1 metric 0 mtu 1280
        inet6 2002:3dd3:e07e::1 prefixlen 16
        nd6 options=3

/etc/rc.conf に設定したstf_interface_ipv4addrより、自動的に16進数変換されたIPv6アドレスが設定されます。この例では、2002:3dd3:e07e::1というIPv6アドレスでIPv6インターネットと通信できるようになります。
(補足:0x3d = 61 , 0xd3 = 211 , 0xe0 = 224 , 0x7e =126)

ping6コマンドを用いて通信テストを行ってみます。

# ping6 www.iij.ad.jp
PING6(56=40+8+8 bytes) 2002:3dd3:e07e::1 --> 2001:240:bb42:b000::1:80
16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=0 hlim=58 time=113.763 ms
16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=1 hlim=58 time=113.194 ms
16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=2 hlim=58 time=113.372 ms
16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=3 hlim=58 time=113.369 ms
^C
--- www.iij.ad.jp ping6 statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 113.194/113.424/113.763/0.208 ms

問題なく通信できていることが確認できます。

まとめ

今回は6to4の概要とFreeBSDでの設定例を解説しました。次回はLinuxでの設定例について解説したいと思います。


1件のコメント

コメントは停止中です。