私はMacBookProのユーザなのですが、移動先でインターネット接続する必要も頻繁にあり、通信デバイスは必須です。現在はSoftBankのC01HW(E-MobileのD25HWの同型機ですね)を使用しています。
上記の様な環境でIPv6の通信(お金が無いのでFeel6を利用)を行おうとしたのですが、一筋縄では行きませんでした。
Feel6への接続には本来BitBasket6というソフトウェアで行うのが正道なのですが、MacOS X用の同ソフトウェアはバージョンが古い為か正常に動作しません。
さてどうするか、ということでNetBSDでもお世話になっているdtcpclientを利用することを試みました。
コンパイル/インストールは例によってpkgsrc頼みという事で、特に問題は無し。
ドキュメントとWebページを斜め読みしながら、適当に:)セットアップ。
/usr/pkg/etc/dtcpclient.auth:
dtcp.feel6.jp:username:password
/usr/pkg/etc/dtcpclient_script.conf:
# Set gif interface name to be used for tunnel. # FreeBSD: If tunif is not set, gif will be created dynamically. # MacOSX: If tunif is not set, interface will be determined # automatically. When you set it explicitly, make sure having # specified gif interface beforehand. # Other: default is gif0 tunif='gif0' # # Set to static route. (default: default) #static_routes='default' # # Set IPv6 address if you wish to add it to gif interface. (default: '') tunif_addrs='2001:3e0:70e:1::1' # # Set to "YES" if you don't want to destroy cloned interface. # (default: NO) # FreeBSD: If tunif is not defined, this will be treated as "NO". # MacOSX: This is ignored. #cloned_interface_keep="NO" # # Set definition of prefix delegation if you want to do prefix # delegation with network type tunnel. # The format is `interface/slaid/hostid/prefixlen'. # The default of `slaid' is `0'. # When `hostid' is ommitted, EUI-64 address is assumed. # The default of `prefixlen' is `64'. # If `@' is specified as interface, it is substituted with the tunnel # interface. #prefix_delegation='sis0/1' # # If you want to execute more commands at up/down, you can set # `up_command' and `down_command'.
ここまでできたら、おもむろにdtcpclientを起動します。
% sudo dtcpclient -t network -n -u username -d dtcp.feel6.jp logging in to dtcp.feel6.jp port 20200 >>> +OK 0ea3b13e5f26291f389d33b9xxxxxxxx FBDC TunnelBroker (version 0.2) Ready. <1484223>:4096 <<< tunnel timerockets02 DFE218CF29EAE8E7CB1Cyyyyyyyyyyyy network >>> +OK 114.48.81.61 43.244.255.36 2001:03e0:070e::/48 add net default: gateway ::1 sleep(60) <<< ping >>> +OK pong sleep(60) …
大丈夫かな?
% ifconfig gif0 gif0: flags=8051 mtu 1280 tunnel inet 192.168.1.100 --> 43.244.255.36 inet6 fe80::5ab0:35ff:fefe:bf60%gif0 prefixlen 64 scopeid 0x2 inet6 2001:3e0:70e:1::1 prefixlen 64
…一応大丈夫みたい。では疎通確認:
% traceroute6 -I www.iij.ad.jp traceroute6 to www.iij.ad.jp (2001:240:bb42:b000::1:80) from 2001:3e0:70e:1::1, 64 hops max, 16 byte packets 1 2001:3e0::30:230:b6ff:fedf:541b 1199.803 ms 239.941 ms * 2 feel6-gate.feel6.jp 589.596 ms 359.596 ms 518.600 ms 3 2001:3e0::c:204:4eff:fea0:7854 87.743 ms 107.973 ms 69.985 ms 4 freebit-gate.tunnel1.otemachi4.v6.dti.ad.jp 69.778 ms 79.211 ms 81.299 ms 5 2001:2e8:20:11::11 108.154 ms 271.541 ms 339.894 ms 6 2001:7fa:7:1::2497:1 772.668 ms * 428.589 ms 7 tky001bf01.iij.net 409.778 ms 407.788 ms 409.929 ms 8 tky008bb01.iij.net 409.294 ms 407.840 ms 409.368 ms 9 2001:240:bb02:b::29 409.384 ms 267.036 ms 656.536 ms 10 2001:240:bb42:b000::1:80 409.665 ms 310.176 ms 409.281 ms
うん、IIJにつながる。
% ping6 www.tkn.funabashi.chiba.jp PING6(56=40+8+8 bytes) 2001:3e0:70e:1::1 --> 2001:3e0:a01::1 16 bytes from 2001:3e0:a01::1, icmp_seq=0 hlim=61 time=84.100 ms 16 bytes from 2001:3e0:a01::1, icmp_seq=1 hlim=61 time=94.122 ms 16 bytes from 2001:3e0:a01::1, icmp_seq=2 hlim=61 time=93.587 ms 16 bytes from 2001:3e0:a01::1, icmp_seq=3 hlim=61 time=104.282 ms ^C --- www.tkn.funabashi.chiba.jp ping6 statistics --- 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 84.100/94.023/104.282/7.140 ms
自宅もO.K.
ということで、ひとまず当初の目的は達成しました。configファイルの中身やdtcpclientのkickの仕方など、もう少し練り込みたいところですが、とりあえずはここまで。
(2011/04/04追記)
こんなshell scriptを作りました。
#!/bin/sh
export PATH=/usr/local/bin:/usr/pkg/sbin:/usr/pkg/bin:/usr/bin:/bin:/usr/sbin:/sbin
dtcpclient -t network -D -n -u username dtcp.feel6.jp
-Dオプションを追加したのがポイント。これをdtcpc.shの名前で保存して、
% sudo dtcpc.sh
で起動します。これで目的を達することができました。