kai881と愉快な仲間たち

アニメの聖地巡礼報告や旅行記など。

feel6で自宅LANをIPv6化してみる

2009-02-24 21:41:02 | IPv6
フリービットのIPv6トンネリングサービスfeel6を使って自宅LANをIPv6化してみました。
別にmixi日記に書いてもよかったんですが、ネットでの情報もすくなく、同じことを考えてる人の役に立てばと思って公開BLOGに書き込みます。
参考までにご利用ください。

最近は旅行報告ばっかり書いてましたが、ひさびさのコンピューター系の話になります。

あ、この記事はあくまでLinux系OSの基本操作ができるぐらいの人を対象に書いてますので・・・。

ちなみに、以下のサイトを参考にしております。
先人たちに感謝しましょう。
http://www.tugumi.net/tips/feel6linux/
http://myct.jp/wiki/index.php?IPv6%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

----------------------------------------------------------

●まずは準備するもの。

・IPv4で接続された自宅LAN
 (あたりめーだよ)
 トンネルを張るにはポートフォワーディングを設定する必要があるので、設定可能なブロードバンドルーターを利用していること。

・feel6のユーザーアカウント
 http://start.feel6.jp/
 (feel6自体の説明は上記サイトにて。アカウント取得も上記サイトより)
 ちなみに、動作環境で「利用するPCがグローバルIPを持っていること」という記載がありますが、ポートフォワーディングでも対応できます。

・v6用ルーターを作成するため、DebianをインストールできるPC
 当方はPCを1台準備しましたが、別に仮想マシーンでもいけるはず・・・。
 ただし、VirtualPCにDebianは入らないらしい・・・・。

----------------------------------------------------------
●下準備
 とりあえず、本当にfeel6が利用できるかWindowsマシーンで確認しましょう。
 feel6申し込み時に利用できるBitBasketを利用して、本当にv6接続ができるかを確認してください。
 ここでポイントになるのは、ブロードバンドルーターで41番ポートを利用するPCに向けてポートフォワーディングを設定してください。
 当方はアライドのCentreCOM AR260S V2を利用しています。最新ファームではv6トンネリングパケットを自動的に通過させる設定があり、チェックを入れるだけでfeel6を利用できます。
 ・・・・・・が、実際には不安定だったため、ポートフォワーディングを設定しましたw。
 BitBasket利用ではあくまでPC1台だけがIPv6化されます。目標は自宅LAN全体のIPv6化ですよ。

 BitBasketにて問題なくfeel6が利用できれば次に行きましょう。

----------------------------------------------------------
●Debianのインストール。

 別にインストール方法の説明までいらないですよね・・・。
 普通にDebianの入ったPCを準備していただけばOK。
 当方はDebian5.0を利用しましたが、他のバージョンでもいいと思います。
 別に仮想マシーン上でも、Debianの入るという噂の白箱でもいけるはず。
 (ためしてないけどねw)

 ちなみに、ルーターとして利用するので、NICが二つ必要と思われる方もいるかもしれませんが、1個ついてれば十分です。トンネリングで作成した仮想のNICからリアルなNICへルーティングすることになりますので、1個でOK。

 当方は昔作ったK6-2 500MHz メモリ256MB(しかも、コンデンサがすこし膨らんだマザボw)という化石PCにIDE-CFアダプタを利用して16GBのCFをHDD代わりに使用しました。スペック的には十分すぎます。
 たぶん、ディスク容量は8GBぐらいあればOKかな。

 ってか、当方は仕事で毎日Linuxを使ってますが、VineとかCentOSなので、Debianの使い方はぜんぜんわからんかったw。
 なんかイロイロ違いますよね・・・・。

----------------------------------------------------------
●必要なソフトウェアのインストール。
とりあえず、下記の感じでインストール。

apt-get install bzip2 cc gcc make iputils-tracepath radvd

とりあえず、これで必要なものは入るはず。

----------------------------------------------------------
●USAGIのDTCPをコンパイル。

・まずはDTCPについて簡単に説明。
 v4のネットワーク上にv6のトンネリングを張るfeel6ではDTCPという標準化されたプロトコルを利用します。
フリービットよりダウンロードできるBitBasketにはDTCPクライアントソフトが含まれていて、それを利用してトンネルを張っています。
 あくまで標準化されたプロトコルなので、DTCPのクライアントソフトはなんでもOKです。
 といっても、世の中に出回っているDTCPクライアントソフトは限られていますので、参考サイトで利用してるのと同じ、USAGI Projectの配布物に付属しているクライアントソフトを利用することにします。

ってことで、ダウンロードしてコンパイルしましょう。

cd /tmp/
wget ftp://ftp.linux-ipv6.org/pub/usagi/snap/kit/usagi-linux26-s20060918.tar.bz2
tar xvfj usagi-linux26-s20060918.tar.bz2
cd usagi
make prepare TARGET=linux26
cd usagi/libnetlink
./configure
make
cd ../dtcp
wget http://www.tugumi.net/tips/feel6linux/dtcpc.c.password.diff
patch -p0 < dtcpc.c.password.diff
./configure --prefix=/usr/local
make
sudo make install


ってな感じでコマンドを叩けばOK.
詳しい解説が必要な方は参考サイトを参照いただいたほうがいいかな。

これでDTCPのインストールはできたはずなので、DTCPを起動すればv6トンネルが張れるはず。

実際に実行するまえに、ブロードバンドルーターのポートフォワーディング設定を確認しましょう。
v6ルーターとして利用するDebiaのIPアドレスに41番ポートのフォワーディングが設定されていることを確認してください。

毎度ユーザーとかパスワードを入力するのは面倒なので、以下のシェルスクリプトを作成しましょう。
ファイル名はなんでもいいかな。

#!/bin/sh

/usr/local/sbin/dtcpc -u username -P password -t network -n eth0 dtcp.feel6.jp

パスワードとか生で書かれているので、パーミッションは700に変更しておきましょう。

上記のスクリプトを実行すればv6トンネルが作成されるはずです。
ifconfigコマンドで確認しましょう。
成功していればdtcpとsit0って名前の設定があるはず。
そして、eth0にv6アドレスが出てくるはずです。
feel6の場合は”2001:3e0”で始まるIPが割り当てられるはずです。

ping6 www.feel6.jp
ぐらいでpingの疎通確認。
返事が返ってくればちゃんとv6で接続されています。

----------------------------------------------------------
●v6のIPアドレスの構造について。

自宅LANをv6化しようなんて考えてる方ならご存知だと思いますがIPv6のアドレスは128bitです。表記としては:7個で区切られた16進数の数字4つ×8個で表記されます。
当方のPCのアドレスだと以下の通り(一部伏字)
2001:3e0:xxxx:0:203:ffff:xxxx:fe61
ひとつの数字の塊が16bitです。8個で128bitになるわけですね。

で、feel6でv6のIPアドレスをもらうと、IPアドレスの先頭から48bit分のアドレスがもらえます。
残りの80bitは好きに使っていいということです。
ここがIPv4との大きな違いかと思います。
つまり、2の80乗個のIPが使い放題です。使い切れません!
上のIPアドレスで言えば、”2001:3e0:xxxx”の部分がfeel6で割り当てられる部分(プレフィックス)となり、”0:203:ffff:xxxx:fe61”の部分が自分で設定したアドレスとなります。
自分で設定したと言っても、固定のアドレスを入力したり、DHCPで割り当てたりするわけではありません。
最後の64bitはMACアドレスから自動的に生成されるものとなります。
ifconfigの結果を確認すると、MACアドレスと同じ文字列が入っているはずです。
プレフィックスの48bitと最後の64bitの間には16bitの空白があるので、そこは”0”となっています。

次項ではv6ルーターを作成しますが、v6ルーターの役割としては、自身のIPアドレスのプレフィックスをLAN内のノード(PC等)に広告(通知)する役割があります。
ちなみに、今回設定するルーターでは上記にある”空白の16bit”もプレフィックスとして処理をしますので、64bitのプレフィックスが広告されます。

PC等でv6アドレスを使うときは、ルーターから広告されたプレフィックスに自身のMACアドレスより生成した64bitを追加して128bitのv6アドレスが完成します。
この128bitのアドレスはIPv4的な表現で言えばすべてグローバルアドレスです。
ルーターさえ正しく設定されていれば、v6のネットワーク上ならば世界中どこからでも到達性があります。
LAN内PCはすべてグローバルIPを持っているということですね。

つまり、世界中のどこからでもPCに直接イタズラ可能。
セキュリティ設定には気をつけましょう・・・・。

----------------------------------------------------------
●radvdの設定。

トンネルが作成されたところで、v6のルーターを作成しましょう。
上のほうで記入したapt-getコマンドでradvdはインストールされているはずです。
入っていなければaptでインストールしてください。

設定は以下のファイルを編集します。aptでインストールしただけでは以下のファイルは作成されませんので、自分で作成します。
/etc/radvd.conf

以下の内容を書き込んでください。

interface eth0
{
AdvSendAdvert on;
prefix 2001:3e0:xxxx::1/64
{
AdvOnLink on;
AdvAutonomous on;
};
};

xxxxの部分はifconfigの結果を確認して、それと同じものを書き込んでください。
(前項で書いたプレフィックスのことですね)
ちなみに、feel6で割り当てられるIPはユーザーごとに半固定らしいので、再接続しても基本的に同じものが割り当てられるはずです。

ついでにちょっとばかり設定変更が必要なので、

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

というコマンドを実行してください。
debianを再起動したら元に戻されるらしいので、再起動したら上記コマンドは再度入力が必要。

ってことで、radvdを起動
/etc/init.d/radvd start

設定に問題がなければ起動するはずです。
ここでifconfigを実行してください。
eth0のv6アドレスは2001:3e0:xxx::1/64
となっているはずです。

これですでにv6のプレフィックスはLAN内に広告されているはずです。
WindowsXPとか、VISTAを利用している方はv6利用にチェックを入れてみてください。
ipconfigをするとv6のアドレスが表示されるはずです。
Linuxでも必要に応じてv6利用の設定をすればOK

Windowsなら
ping www.feel6.jp
と入力、v6のIPより応答があれば無事にv6で接続されています。
あと、The KAME projectにて踊る亀さんが見れれば間違いないです。IPv6用2chに書き込みしてみるもよし。

Linuxでもping6コマンドでご確認ください。
traceroute6コマンドなんかも役に立つかな。

----------------------------------------------------------
●完了

ってことで、自宅LANのIPv6化は完了です。
v6のアドレスはすべてグローバルIPと同じです。
くれぐれもセキュリティ設定には気をつけましょう。
似たような手法でv6化された勤務先の社内LANもv6で接続すれば自宅から社内サーバーに直接SSHログインできましたしねwwww

ではでは。

----------------------------------------------------------