Feel6 を使って自宅を IPv6 Ready にしてみた その1

いつか試してみようと思っていたものの、全然手を付けていなかった自宅ネットワークの IPv6 対応をやってみることにしました。

今回はフリービットが提供している Feel6 を利用して IPv6 ネットワークへ接続します。
環境構築手順は以下のサイトが参考になりました。

Feel6でIPv6化をやる | guro_chanの日記

ともあれ、まずは Feel6 のアカウントを取得します。

FB Feel6接続サービス| お申し込み

そうすると 2001:03e0::/32 から固定で 48 ビットのプレフィックスが割り当てられる。 2 の 80 乗個…広大すぎる………。

次に DTCP クライアントを用意。今回は Ubuntu 12.04.1 LTS (64-bit) を利用しました。

DTCP クライアントは USAGI Project の成果物の中に含まれる dtcpc を利用します。
公式サイトからはうまくダウンロードできなかったので、適当なミラーからダウンロードすることに。

$ wget ftp://ftp.kddlabs.co.jp/IPv6/usagi/usagi/snap/kit/usagi-linux26-s20060918.tar.bz2
$ tar jxvf usagi-linux26-s20060918.tar.bz2

このまま dtcpc をビルドしようとすると stdio.h に定義されている getline() と衝突するようで、これを対処。
参考にしたサイトでは stdio.h 側に一時的に手を入れてますが、ソースを追いかけたところ、そんなに数が多くなかったので getline を適当な別名に変更することで対処しました。

また、このままだと dtcpc 実行時に “can not create tunnel” とエラーが出てダメでした。これについてググったところ、以下のサイトが参考になりました。

Ryo’s diary(2010-05-07)

調べていくと、レスポンス値計算がミスっているようで、原因はmd5.hのUINT4の定義と判明。

ということで調べると、 md5.h で

/* UINT4 defines a four byte word */
typedef unsigned long int UINT4;

と定義されてますが、今回は 64-bit 環境なので、ここが long int だと 8-byte になってしまいます (Linux は LP64) ので、

/* UINT4 defines a four byte word */
typedef unsigned int UINT4;

と修正。

ということで、上記修正の patch を置いておきます。

あとは参考にしたサイトと同じ手順でビルド&インストール。

$ cd usagi
$ make prepare TARGET=linux26
$ cd usagi/libnetlink/
$ ./configure
$ make
$ cd ../dtcp
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

早速接続してみる。

$ sudo dtcpc -u [USERNAME] -t network -n eth0 dtcp.feel6.jp
DTCP Account Password > [PASSWORD]
$ ifconfig eth0
(略)
          inet6アドレス: 2001:3e0:xxxx::1/64 範囲:グローバル

繋がったっぽい。

早速テスト。 Google の IPv6 サイトへ ping してみる。

$ ping6 ipv6.google.com
PING ipv6.google.com(2404:6800:4005:c00::93) 56 data bytes
64 bytes from 2404:6800:4005:c00::93: icmp_seq=1 ttl=51 time=65.1 ms
64 bytes from 2404:6800:4005:c00::93: icmp_seq=2 ttl=51 time=67.5 ms
64 bytes from 2404:6800:4005:c00::93: icmp_seq=3 ttl=51 time=64.5 ms
64 bytes from 2404:6800:4005:c00::93: icmp_seq=4 ttl=51 time=66.9 ms
^C
--- ipv6.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 64.517/66.033/67.527/1.266 ms

おお、問題なく通信できている模様。

あとはこの IPv6 接続できたマシンを中継して、自宅 LAN 内の各端末から IPv6 接続できるようにするわけですが、久々に長文書いたら疲れたのでまたそのうちに。

まあ、参考にしたサイトを見れば問題なく出来ると思いますが……。


コメント

タイトルとURLをコピーしました