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

SAKURA Internet Inc.

アーカイブ

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

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

前回は6rdの概要について説明しましたので、今回は実際にFreeBSDを用いて6rdを経由したIPv6接続方法について説明を行いたいと思います。

FreeBSDのソースコードに6rdのパッチをあてる

FreeBSDはまだ標準で6rdに対応していませんが、東工大の佐藤さんが6to4のカーネルモジュールif_stfを6rdに対応させるパッチを以下のサイトで公開されています。
http://people.allbsd.org/~hrs/FreeBSD/stf_6rd_20100923-1.diff

今回は、FreeBSD8.1にこのパッチをあてて6rdをサポートする方法を紹介します。ただし、RFC5969ではIPv6アドレスに任意ビット長のIPv4アドレスの埋め込みができるように定義されていますが、こちらのパッチではその機能がサポートされておらず、IPv4アドレス全て(32bit)埋め込むような動作となります。

以下では/usr/src/配下にFreeBSDのソースコードが展開されているものとして説明します。存在しない場合は、あらかじめソースコードを展開しておいてください。

  1. パッチをダウンロード
    まずはパッチをダウンロードします。ここでは/root/以下にダウンロードします。

    # cd /root
    # fetch http://people.allbsd.org/~hrs/FreeBSD/stf_6rd_20100923-1.diff
  2. パッチをあてる
    /usr/src/以下のソースコードにパッチをあてます。

    # cd /usr/src
    # patch -p0 < /root/stf_6rd_20100923-1.diff
  3. カーネルモジュールのコンパイル、インストール
    以下コマンドで、/boot/kernel/if_stf.ko としてインストールされます。

    # cd sys/modules/if_stf/
    # make
    # make install
  4. マニュアルのインストール
    stfのマニュアルが更新されるため、インストールします。

    # cd /usr/src/share/man/
    # make
    # make install

    これでman stfとすると、6rdの説明が表示されるはずです。

Comcast社の6rd Border Relayを使う

ここでは、米国のケーブルテレビ事業者であるComcast社が提供しているBorder Relayを経由して6rdを使ってみます。Comcast社の6rdのパラメータは以下のようになります。

6rdプレフィックス 2001:55c::/32
埋め込むIPv4アドレス 32bit全て
Border Relayアドレス 69.252.80.66
(6rdアドレス=2001:55c:45fc:5042::)
委譲空間 /64

6rdプレフィックス/32の空間にIPv4アドレス32bit全てを埋め込むため、結果としてクライアントで利用可能な空間は/64となります。

参考までに、Comcast社の6rdの説明は以下にあります。
Comcast 6RD Configuration Instructions for IPv6

FreeBSDの設定は以下の手順で行います。

  1. IPv6アドレスの算出
    ここでは、61.211.224.126のIPv4アドレスをもったFreeBSDサーバでの設定例を紹介します。OS側では6rdアドレスの自動設定ができませんので、まずは、自身で使用するIPv6アドレスを算出します。以下のように引数として自身のIPv4アドレスの各オクテットをスペース区切りで指定します。

    # printf "2001:55c:%02x%02x:%02x%02x::1\n" 61 211 224 126
    2001:55c:3dd3:e07e::1
    
  2. /etc/rc.confの編集
    上記で表示されたIPv6アドレスを元に、以下のような設定を追記します。青文字の部分は上記で表示されたIPv6アドレスを記入してください。

    # vi /etc/rc.conf   (以下を追加)
    ipv6_enable="YES"
    cloned_interfaces="stf0"
    ipv6_ifconfig_stf0="2001:55c:3dd3:e07e::1/32"
    ipv6_defaultrouter="2001:55c:45fc:5042::"
  3. 設定を反映させるために一旦リブートします。
    # reboot
  4. 設定反映確認
    起動すると、以下のようにstf0インターフェイスと、デフォルトゲートウェイが設定されるはずです。

    # ifconfig stf0
    stf0: flags=1<UP> metric 0 mtu 1280
            inet6 2001:55c:3dd3:e07e::1 prefixlen 32
            nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
    
    # netstat -nr -f inet6 | grep default
    default      2001:55c:45fc:5042::    UGS        stf0
  5. 通信テスト
    米国を経由するため、遅延が非常に大きいですが、一応IPv6インターネットと通信できることが確認できます。

    # ping6 www.iij.ad.jp
    PING6(56=40+8+8 bytes) 2001:55c:3dd3:e07e::1 --> 2001:240:bb42:b000::1:80
    16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=0 hlim=52 time=353.593 ms
    16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=1 hlim=52 time=353.682 ms
    16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=2 hlim=52 time=353.739 ms
    16 bytes from 2001:240:bb42:b000::1:80, icmp_seq=3 hlim=52 time=353.614 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 = 353.593/353.657/353.739/0.058 ms

なお、弊社(さくらインターネット)でも6rdのBorder Relayを設置するべく現在準備を進めており、弊社のネットワーク内、もしくは弊社のネットワークに近いサイトからは快適に6rdを使用してIPv6接続できるようになる予定です。準備が完了しましたら追ってお知らせしたいと思います。

まとめ

今回はFreeBSDにパッチをあてて6rdを有効にする方法について解説を行いました。次回はLinuxで6rdを使う方法について紹介したいと思います。


1件のコメント

コメントは停止中です。