いつか試してみようと思っていたものの、全然手を付けていなかった自宅ネットワークの IPv6 対応をやってみることにしました。
今回はフリービットが提供している Feel6 を利用して IPv6 ネットワークへ接続します。
環境構築手順は以下のサイトが参考になりました。
ともあれ、まずは 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” とエラーが出てダメでした。これについてググったところ、以下のサイトが参考になりました。
調べていくと、レスポンス値計算がミスっているようで、原因は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 接続できるようにするわけですが、久々に長文書いたら疲れたのでまたそのうちに。
まあ、参考にしたサイトを見れば問題なく出来ると思いますが……。
コメント