Top > ipv6ルーターを作る(feel6編)

キーワード: ipv6 ルーター radvd radvd.conf RA feel6 トンネル tunnel sit0 sit1 linux DTCPクライアント


IPv6特集記事:


必要なもの

  • ipv6トンネル(今回はfeel6を使う)
  • IPv4のグローバルIPを直接持っているLinuxサーバ(ルータ)
  • radvd

IPv6プレフィックスを貰う(feel6)

利用しているプロバイダがIPv6アドレスを配ってくれなくても IPv6を利用する方法がある.

FreeBit社は, 「FB Feel6接続サービス」を無料で公開しており, 申し込みさえすれば同社のIPv6トンネル経由でIPv6の利用を開始できる.
たとえ利用中のプロバイダがIPv6を忌み嫌っていても, IPv4グローバルアドレスさえ 持っていればIPv6難民にならずに済む.

サポート対象はWindowsXP SP1と Mac OS X 10.2 のみとなっているが, 単純なプロトコル(DTCP)でコミュニケーションするだけなので, 専用のクライアントソフトを使わずにLinuxやBSD系などで利用ができる.

利用ユーザのIPv6通信すべてがFB社のゲートウェイサーバ(回線)に掛かるので, 通信速度が気になっていたが, 一般的な混雑時間帯で 30Mbps くらい出た(2011年6月).
IPv6でなければ接続できない対向機器は今のところ少ないので, 試しに使ってみる範囲であれば問題なさそうだ.

申し込みページにて, 生年月日など何に使うのかよくわからない個人情報を 入力して登録が完了すれば, すぐに利用を開始出来る.

試しにtelnetでDTCPクライアントのふりをしてみる

環境情報(模擬情報です. 本物じゃありません.)

  • ID: princo
  • PASSWORD: passwd
  • DTCPサーバ: dtcp.feel6.jp (port 20200)
  • 自分のIPv4: 114.17.191.33

telnetしてみる

# telnet dtcp.feel6.jp 20200
     Trying 43.244.255.120...
     Connected to dtcp.feel6.jp.
     Escape character is '^]'.

RCV: +OK fb36d840767f60c63610d498d9e6d324 FBDC TunnelBroker (version 0.2) Ready. <148870>:4096
SND: tunnel princo 04609f0b693bd399df3f0f243b52897c network
RCV: +OK 114.17.191.33 43.244.255.36 240f:e:b466::/48
SND: quit
RCV: +OK tunnel server quitting

     Connection closed by foreign host.

RCVは受信, SNDは送信したものです.

通信内容

fb36d840767f60c63610d498d9e6d324 は CHAP-CHALLENGE で, これを元に CHAP-RESPONSE(04609f0b693bd399df3f0f243b52897c) 文字列を生成し, 応答してやります.

CHAP-RESPONSE は,

MD5(<username>&<chap-challenge>&<password>)

で生成するとのことなので,

$ PF=fb36d840767f60c63610d498d9e6d324 ; echo -n "princo${PF}passwd" | md5sum
04609f0b693bd399df3f0f243b52897c  -

この様に生成できる.

+OK 114.17.191.33 43.244.255.36 240f:e:b466::/48

この文字列の受信は認証の成功を示し, OKに続く文字列は順番に

  • 114.17.191.33(自分のIP)
  • 43.244.255.36(feel6のゲートウェイIP)
  • 240f:e:b466::/48(払い出されたIPv6プレフィックス)

を意味する.
このメッセージを受信した時点で,

  • 自分のIPv4アドレス(114.17.191.33)に,
  • IPv6ネットワーク(240f:e:b466::/48)のルーティングが
  • feel6側(43.244.255.36)にて

成立する.
(telnet接続を切断すると, 即座にfeel6側のルーティングが解除されるようだ)

対向側でルーティングが設定されただけでは まだIPv6通信できず, 自分のホスト側でも

  • トンネルデバイス(sit)
  • IPv6ルーティング

を設定する必要がある.

トンネルデバイス作成とIPv6ルーティングテーブル設定

# ifconfig sit0 up tunnel ::43.244.255.36"
# ifconfig sit0 add 240f:e:b466::1/48"
# route -A inet6 add ::/1 dev sit0 gw ::43.244.255.36"

これでipv6通信ができるはずだ.


Linux用 DTCPクライアントを動かす

以上のtelnetによる手動接続を踏まえた 自動接続スクリプト(DTCPクライアント)があるので, ここで公開している.

(ここ にある元ネタに, sitデバイス設定とルーティング設定を自動化するよう手を加えてあります.)

スクリプト設置

# wget http://wiki.princo.org/source/dtcp-client -O /usr/local/bin/dtcp-client
# chmod 755 /usr/local/bin/dtcp-client

設定

認証設定:

# echo 'dtcp.feel6.jp 20200 princo passwd' > /etc/dtcp.conf

環境設定:

# vi /usr/local/bin/dtcp-client
$ConfFile = "/etc/dtcp.conf";
$AddrFile = "/var/run/dtcp.addr";
$StopFile = "/tmp/dtcp.stop";
$LogFile  = "/var/log/dtcp.log";
$LocalEth = "eth1";

テスト

# /usr/local/bin/dtcp-client -d

本稼働開始

# /usr/local/bin/dtcp-client &

自動実行の設定

# echo '/usr/local/bin/dtcp-client &' >> /etc/rc.local

ルーターとして動かすためのカーネルパラメータ設定

# vi /etc/sysctl.conf
# for using radvd
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.all.forwarding = 1
# echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
# echo 0 > /proc/sys/net/ipv6/conf/all/accept_redirects
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

radvdを導入・設定する

feel6から貰ったIPv6アドレスをLAN内に再配布するには radvd を使う.

# yum -y install radvd
# vi /etc/radvd.conf
interface eth1
{
        AdvSendAdvert on;
        MinRtrAdvInterval 30;
        MaxRtrAdvInterval 100;
        AdvLinkMTU 1280;
        prefix 240f:e:b466::1/64
        {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr off;
        };

};
# /etc/init.d/radvd start
# chkconfig radvd on

参考サイト:



新規 編集 添付 名前変更 バックアップ   ホーム バックアップ リンク元   最終更新のRSS