プロバイダがPPPoEな固定IPv6サービスを始める気配がまったく無いので、久 しぶりにfeel6(http://start.feel6.jp/)を使ってみる。 ホスト環境はいつも通りArch Linux。
dtcpclientのビルド
dtcpclientのソースをダウンロードしてきてビルドする。FreeBSD用に書かれ ておりそのままではビルドできないため、オリジナルのMakefileを参考に直接 gccを叩く。
また、libbsdがインストールされていない場合は先にインストールしておく。
% wget http://www.imasy.or.jp/~ume/ipv6/dtcpclient-20060111.tar.gz % tar xzf dtcpclient-20060111.tar.gz % cd dtcpclient-20060111 % gcc -lbsd -lcrypto -Wall -DPREFIX=\"/usr/dtcp\" dtcpclient.c -o dtcpclient % ./dtcpclient usage: dtcpclient [-dDhlnU] [-b udpport] [-B naptport] [-e nickname] [-f pidfile] [-m mtu] [-p port] [-s script] [-t tuntype] [-u username] server
起動
とりあえずfeel6にDTCPでログインできるか試してみる。 今回はNAT下で利用するため、-nオプションを付ける。-lは切断時の自動再接 続、-dはデバッグモードとなる。
% ./dtcpclient -d -l -n -t network -u ユーザ名 dtcp.feel6.jp no authinfo file found password for hachune: logging in to dtcp.feel6.jp port 20200 >>> +OK xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx FBDC TunnelBroker (version 0.2) Ready. <578926>:4096 <<< tunnel hachune yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy network >>> +OK 118.1.71.38 43.244.255.37 2001:03e0:0988::/48 sleep(60) <<< ping >>> +OK pong sleep(60)
ネットワーク設定スクリプトを作成
ログインに成功しアドレスが取得できたことが確認できたので、早速ネットワー ク設定スクリプトを書きなおす。dtcpclientの-sオプションに渡すスクリプト は、ログイン完了時と切断時に引数に以下のように渡され起動されるので、そ れに合わせて記述する。
up dtcp.feel6.jp 10.39.39.37 network 118.1.71.38 43.244.255.37 2001:03e0:0988::/48
LinuxにてIPv6 over IPv4なトンネルを利用する場合は、sitインターフェース を利用する。
#!/bin/sh DEV=sit0 STATUS=${1} SERVER=${2} NLOCAL=${3} MODE=${4} LOCAL=${5} REMOTE=${6} V6PREFIX=${7} case ${STATUS} in up) ip link add link ${DEV} type sit ip link set dev ${DEV} up ip address add `echo ${V6PREFIX} | sed -e 's|/48||'`1/64 dev ${DEV} ip -6 route add default via ::${REMOTE} dev ${DEV} ;; down) ip -6 route delete default ip link delete ${DEV} ;; esac
確認
最後に、通信が確立していることを確認する。プロバイダのDNSサーバを利用 している場合、AAAAフィルタが有効になっていてv6アドレスが引けないことが あるので注意する。
% ping6 -c 4 ipv6.google.com PING ipv6.google.com(2404:6800:4004:802::1012) 56 data bytes 64 bytes from 2404:6800:4004:802::1012: icmp_seq=1 ttl=53 time=17.6 ms 64 bytes from 2404:6800:4004:802::1012: icmp_seq=2 ttl=53 time=29.9 ms 64 bytes from 2404:6800:4004:802::1012: icmp_seq=3 ttl=53 time=15.5 ms 64 bytes from 2404:6800:4004:802::1012: icmp_seq=4 ttl=53 time=15.8 ms --- ipv6.google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 15.518/19.732/29.904/5.929 ms
(参考)AAAAフィルタ
AAAAフィルタが存在する場合
miku@hachune% dig @10.39.39.1 AAAA www.kame.net ; <<>> DiG 9.9.2-P2 <<>> @10.39.39.1 AAAA www.kame.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58213 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION: ;www.kame.net. IN AAAA ;; ANSWER SECTION: www.kame.net. 71617 IN CNAME orange.kame.net. ;; Query time: 16 msec ;; SERVER: 10.39.39.1#53(10.39.39.1) ;; WHEN: Tue Apr 2 11:53:43 2013 ;; MSG SIZE rcvd: 62
AAAAフィルタが存在しない場合
miku@hachune% dig @8.8.8.8 AAAA www.kame.net ; <<>> DiG 9.9.2-P2 <<>> @8.8.8.8 AAAA www.kame.net ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47873 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.kame.net. IN AAAA ;; ANSWER SECTION: www.kame.net. 21599 IN CNAME orange.kame.net. orange.kame.net. 21599 IN AAAA 2001:200:dff:fff1:216:3eff:feb1:44d7 ;; Query time: 275 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Tue Apr 2 11:53:53 2013 ;; MSG SIZE rcvd: 90