2013年4月2日火曜日

feel6でIPv6(on Arch Linux)

プロバイダが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

0 件のコメント:

コメントを投稿