CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > IPv6 Ready への道 〜FreeBSD, NetBSD編〜
「IPv6 Ready への道」などと大層な題が付いていますが^^;、KAME project の軌跡を辿ろうなどという壮大な意図は無くてですね、あくまで備忘録として、IPv6 を使えるようにするまでの設定方法を簡単にメモ書きしたものです。くれぐれも過度な期待は無用で願います:-)。
そんなわけで、まずは FreeBSD から。FreeBSD 4系列より IPv6 に対応しており、現在稼働しているシステムでは概ね心配なく使うことができるのではと思います。 また、NetBSD もだいたい同じなので、ここに一緒に書いておきます。 Mac OS X と Windows XP の話はまたの機会に。
◆ IPv6アドレスとは ◆ 自分のアドレスを確認する ◆ IPv6アドレスをインターフェイスに設定する ◆ ルート設定 ◆ /etc/rc.conf に設定する ◆ DTCPクライアント ◆ 外に出てみよう ■ 参考文献
ここをご覧の方なら IPv4アドレス(192.168.0.1 のようなもの)の設定をされたことはあるかと思いますが、何かしらのIPアドレスを設定しないと通信できないんだぞ、という感覚はお持ちかと思います。
これは IPv6 でも同様で、やはり通信には IPアドレスが必要になるのですが、IPv6 ではインターフェイス (I/F) が立ち上がると自動的にリンクローカルアドレス(リンクローカルユニキャストアドレス)が生成されまして、これが使えるようになります (RFC 4489)。
ルータ越えを考えず LAN の狭い範囲で使うだけならばこれが使えるので、とりあえず機器の設定をしたい、といった場合には便利な機能なのですが、このアドレスはルーティングが禁止されていまして、このまま外に出ていく(または外からの接続を受け付ける)ことはできません。
また、IPv4 では LAN 内はとりあえずプライベートアドレスを割り当てておいてルータでアドレス変換 (NAT) する使い方が一般的になっていますが、IPv6 では基本的にアドレス変換はしませんので、インターネットにつながる端末には原則としてグローバルアドレスを割り振ります(この上リンクローカルアドレスも有効なので、2つ以上のアドレスを持つことになります)。
ここで察しのよい方はお分かりのように、後述の手順を踏んで IPv6 アドレスを割り当てると、それはグローバルアドレスになり、外からのアクセスが可能になります。セキュリティ確保の観点から、v6アドレス割り当て前に不要なサービスを止めるなどの準備をしておくことをお勧めします(自動的に割り当てられているリンクローカルアドレスは前述のようにルータを越えないので、これだけで外からアクセスされることはありません)。
参考リンク:
そんなわけで、外部のネットワーク(インターネットはもちろん、フレッツ・ドットネットやフレッツ・スクウェア ネクストなども含む)につなぎたい場合はグローバルアドレスの割り当てを受ける必要がありますが、IPv6 アドレスも IPv4 と同様、ルーティングを円滑にするため、アドレスの割り当ては一般に接続プロバイダ経由で行われます。 利用中の接続サービスがすでに IPv6 に対応している場合はそのプロバイダから割り当てを受けます(プロバイダによって申し込みや料金が必要な場合があります)が、未対応の場合は残念ながら使えません
……と言うとそこで終わってしまいますが(苦笑)、フリービットというプロバイダが、現在利用中のプロバイダにかかわらず利用できる Feel6接続サービスを無料で提供しているので、ここでは、その無料サービスを使って試してみます。
プロバイダからIPv6アドレスを割り当ててもらえる場合は、それを用意します。
Feel6 を使う場合は申し込みを一通り済ませた上で、ホームページ右下にある「登録情報変更」からログインし(右上の RemoteAccess からではないので注意)、右図の画面が出てきたら「登録情報確認」リンクをたどると、IPv6アドレス(ネットワーク・プレフィクス)が表示されます(右下図)。
なお、細かい話は割愛しますが(こちらを参照)、「ネットワーク・プレフィクス」とは IPv4 のネットワークアドレスに相当するものです。
IPv6 では通例、アドレス全長128ビット(16バイト)のうち前半64ビット(ネットワーク・プレフィクス)がネットワークアドレスに相当し、後半64ビット(インターフェイスID)を端末に割り振ってゆきますが、もちろんネットワークの大きさはもっと細分化することができます。
このとき、IPv6アドレス128ビットのうち上位何ビットがネットワークアドレスかを示す数値がプレフィクスで、これが48であれば上位48ビットまでがネットワークアドレス相当であることを示します。
なお、一般利用者がプロバイダから割り当ててもらう場合はプレフィクス48のアドレスをもらえる場合と、もう少し小さな単位になる場合があるようです。右図の例 (Feel6) ではプレフィクス48で割り当てられています(つまり下位80ビットを使うことができる)。
ネットワーク・プレフィクス | インターフェイスID | |
---|---|---|
完全形→ | 2001:xxxx:xxxx:0000 | :0000:0000:0000:0000 |
省略形→ | 2001:xxxx:xxxx::/48 |
※ちなみに、2001:00ab:000c:0000:0000:0000:0000:0000 と 2001:ab:c:0:0:0:0:0 と 2001:ab:c:: は同じです。詳しいことはこちらから。
前置きが長くなってしまいましたが、ようやくここまで来ました。自分が使えるネットワーク・プレフィクスが決まって初めて、グローバルアドレスを設定することができます。IPv4のプライベートアドレス+NAT利用に慣れているとむしろ少々面倒にも感じてしまいますが、まぁこれが本来の姿なのだと思っておくことにしましょう:-)。
IPアドレスの書式が変わっているので少々戸惑う面があるかもしれませんが、基本的には IPv4 の割り当てと同様です。まずは試しに、現在起動中のシステムに IPv6 アドレスを追加してみましょう。
以下の例ではインターフェイスに fxp0 を使っています。今回は prefix 48 で IPv6 アドレスの割り当てをもらっていますが、その一段下にネットワークアドレスを追加し、prefix 64 のアドレスを使っています(前半 2001:03e0:xxxx:1 がネットワークで、後半 0:0:0:1 がインターフェイス)。ネットワークは必要に応じてもっと細分化(prefix を大きく)できますが、特に分ける必要が無ければ、とりあえず下記の例のように試してみましょう。
なお、斜字が入力する部分です。ただし下線部は利用環境に合わせて書き換えが必要な部分。他、細かいところは適宜変えてください。以下同様。
# ifconfig fxp0 ←設定前の状態を確認してみる fxp0: flags=8843metric 0 mtu 1500 options=8 ether 00:00:4c:xx:xx:xx inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255 inet6 fe80::200:4cxx:xxxx:xxxx%fxp0 prefixlen 64 scopeid 0x1 media: Ethernet autoselect (100baseTX ) status: active # ifconfig fxp0 inet6 2001:03e0:xxxx:1::2 prefixlen 64 ←IPv6アドレスを設定する # ifconfig fxp0 ←設定できたか確認する fxp0: flags=8843 metric 0 mtu 1500 options=8 ether 00:00:4c:xx:xx:xx inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255 inet6 fe80::200:4cxx:xxxx:xxxx%fxp0 prefixlen 64 scopeid 0x1 inet6 2001:3e0:xxxx:1::2 prefixlen 48 ←IPv6アドレスが追加されている media: Ethernet autoselect (100baseTX ) status: active % ping6 2001:3e0:xxxx:1::1 ←設定したアドレスに ping6 を打ってみる PING6(56=40+8+8 bytes) 2001:3e0:xxxx:1::2 --> 2001:3e0:xxxx:1::2 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=0 hlim=64 time=0.934 ms 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=1 hlim=64 time=0.696 ms 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=2 hlim=64 time=0.741 ms 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=3 hlim=64 time=0.780 ms 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=4 hlim=64 time=0.787 ms 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=5 hlim=64 time=0.766 ms 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=6 hlim=64 time=0.720 ms 16 bytes from 2001:3e0:xxxx:1::2, icmp_seq=7 hlim=64 time=0.761 ms ^C --- 2001:3e0:xxxx:1::2 ping6 statistics --- 8 packets transmitted, 8 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.696/0.773/0.934/0.067 ms
設定した自分の v6 アドレス宛に ping6 を送ってみて、返ってくればひとまず成功。
ここでもし v6 アドレスの設定に失敗する場合は、現在 IPv6 が無効に設定されているかもしれません。その場合は先に /etc/rc.conf の設定をしておきます。
IPv6 を使いたい端末が複数あれば、各々アドレスを割り振ってみて(まだルーティングの設定をしていないので同じネットワーク内にして、末尾の数値だけ変えたアドレスを割り振ってみるとよい)、相互に ping6 を投げて届くことを確認してみましょう。
IPv4 と同様に、同じネットワーク内だけの通信で事足りるのであれば設定は省略できますが、ルータを越える必要がある場合はルート設定が必要になります。 設定方法は IPv4 と同様、route(8) で追加・変更・削除できます。
インターフェイス (I/F) が1つだけの場合は単純にこれだけ(後述する defaultrouter の設定で事足ります)。 ちなみに IPv6 アドレスの :: は 0000:0000:0000:0000:0000:0000:0000:0000 と同じ(IPv4 アドレスの 0.0.0.0 に相当)です。
# route get -host -inet6 2001:abc:d:e::f ←ルートテーブル未登録の状態では route: writing to routing socket: not in table ←外のアドレスにはたどり着けない。 # route add -net -inet6 2001:3e0:xxxx:1:: -prefixlen 64 -iface fe80::200:4cxx:xxxx:xxxx%fxp0 add net 2001:3e0:xxxx:1::: gateway fe80::200:4cxx:xxxx:xxxx%fxp0 ↑LANに出るときのI/Fを指定 # route add -net -inet6 :: 2001:3e0:xxxx:1::1 ←ルータのv6アドレスを指定 add net ::: gateway 2001:3e0:xxxx:1::1 # route get -host -inet6 2001:3e0:xxxx:1::3 ←正しくルーティングされるか確認 route to: 2001:3e0:xxxx:1::3 destination: 2001:3e0:xxxx:1::3 local addr: fe80::200:4cxx:xxxx:xxxx%fxp0 interface: fxp0 flags:recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 0 0 0 0 0 0 0 0
インターフェイスが LAN と WAN(インターネット)の 2つあるホストでは、各々のインターフェイスを関連付けてやります。
# route get -host -inet6 2001:abc:d:e::f ←最初はテーブルが空です route: writing to routing socket: not in table # ifconfig -a ←OSに認識されている全てのI/Fを表示 fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:00:4c:**:**:** inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255 inet6 fe80::200:4cxx:xxxx:xxxx%fxp0 prefixlen 64 scopeid 0x1 inet6 2001:3e0:xxxx:1::1 prefixlen 64 media: Ethernet autoselect (100baseTX <full-duplex>) status: active re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC> ether 00:1d:73:**:**:** inet 210.***.***.*** netmask 0xffffff00 broadcast 210.***.***.255 inet6 fe80::21d:73xx:xxxx:xxxx%re0 prefixlen 64 scopeid 0x2 inet6 2001:3e0:xxxx:2::1 prefixlen 64 media: Ethernet autoselect (1000baseT <full-duplex>) status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280 tunnel inet 192.168.2.1 --> 43.***.***.*** inet6 fe80::21d:73xx:xxxx:xxxx%gif0 prefixlen 64 scopeid 0x4 inet6 2001:3e0:xxxx:2::1 prefixlen 64 options=1<ACCEPT_REV_ETHIP_VER> ↑fxp0 が LAN、re0 が WAN (Internet)、gif0 は後述の DTCP tunnel だとします # route add -net -inet6 2001:3e0:xxxx:1:: -prefixlen 64 -iface fe80::200:4cxx:xxxx:xxxx%fxp0 LAN(↑で指定したネットワーク)に入るときに使うI/F ↑ を指定 add net 2001:3e0:xxxx:1::: gateway fe80::200:4cxx:xxxx:xxxx%fxp0 # route add -net -inet6 :: 2001:3e0:xxxx:2::1 ←インターネット(WAN)に出るときのI/Fを指定 add net ::: gateway 2001:3e0:xxxx:2::1 # route get -host -inet6 2001:3e0:xxxx:1::2 route to: 2001:3e0:xxxx:1::2 destination: 2001:3e0:xxxx:1::2 local addr: fe80::200:4cxx:xxxx:xxxx%fxp0 interface: fxp0 ←fxp0(LAN側のI/F)が選ばれている flags:recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 0 0 0 0 0 0 0 0 # route get -host -inet6 2001:ab:cd:e::f ←こちらは WAN 側(アドレスはLANと異なるネットワークならば良い) route to: 2001:ab:cd:e::f destination: 2001:ab:cd:e:: mask: ffff:ffff:ffff:ffff:: interface: gif0 ←gif0(後述のDTCPクライアント)が選ばれている flags: recvpipe sendpipe ssthresh rtt,msec mtu weight expire 0 0 0 0 1280 1 0
このように、ルート設定も IPv4 と同じような感覚でできます。上記のように単純な構成の場合は、これも IPv4 と同様ですが、/etc/rc.conf にデフォルトルータの指定をしておく(後述)と手軽です。
ひととおり動作が確認できたら、その内容が起動時に有効になるよう /etc/rc.conf などに設定します。
/etc/rc.conf
ipv6_enable="YES"
ipv6_gateway_enable="NO" ←IPv6パケットを中継する場合※は "YES" にする
ipv6_ifconfig_fxp0="2001:3e0:xxxx:1::2 prefixlen 64"
ipv6_defaultrouter="2001:3e0:xxxx:1::1"
※このホストを IPv6 ルータにする場合(後述のDTCPクライアントで外部とつなぐ場合など)。
/etc/rc.conf
ip6mode="host" ←IPv6パケットを中継する場合は "router" にする
defaultroute6="2001:3e0:xxxx:1::1"
/etc/ifconfig.xxN※
inet 192.168.1.2 netmask 255.255.255.0 inet6 2001:3e0:xxxx:1::2 prefixlen 64 alias
※xxN の部分にはインターフェイスのデバイス名(fxp0 など)が入ります。
両OSとも、現在 IPv6 が無効になっている場合は、設定後に再起動しておきます。
プロバイダがIPv6に対応していない等の理由で Feel6 を使う場合には、DTCPクライアントを使って Feel6 の DTCP サーバに接続し、IPv4 通信を使ったトンネルを作って IPv6 通信をやり取りします。
IPv6 に対応しているプロバイダを使い、そのプロバイダから割り当てを受けたIPアドレスを割り振った方は、この手順は不要です。 また、DTCPクライアントを搭載したブロードバンドルータ(YAMAHA RT57i Rev.8.00.41〜、RT58i:こちらに動作情報)を使っている場合は、それを使う方が簡単なのかもしれませんが、筆者は使っていないのでよくわかりません:-)。
なお、DTCPについてはこちらに詳しい説明があります:
まず、Feel6 の DTCPサーバに接続するときに必要な情報(DTCPサーバ名とポート番号)を控えておきます。また、Feel6 に登録した際のID・パスワードも必要になります。
あとは手順のみ示しておきますが、まずは DTCPクライアントを入れます。 ここでは簡単に packages を使うことにします。
FreeBSD (pc98, i386):
# pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-stable/All/dtcpclient-20090812.tbz
NetBSD では、ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/dtcpclient/README.html から探して pkg_add するか、source から。
その後すぐ設定ファイルを書いても構いませんが、その前に手っ取り早く接続を確認してみたい場合はこうします:
# dtcpclient -d -t network -u (Feel6 ID) -p 20200 dtcp.feel6.jp no authinfo file found password for (Feel6 ID): (Feel6 password) logging in to dtcp.feel6.jp port 20200 >>> +OK xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx FBDC TunnelBroker (version 0.2) Ready. <671>:4096 <<< tunnel (Feel6 ID) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx network >>> +OK 210.xxx.xxx.xxx 43.244.255.xxx 2001:03e0:xxxx::/48 route: writing to routing socket: Network is unreachable add net default: gateway ::1: Network is unreachable sleep(60) <<< ping >>> +OK pong sleep(60) ... ^C<<< quit route: writing to routing socket: No such process delete net default: gateway ::1: not in table
とりあえず、Feel6 ID とパスワード、接続先サーバとポート番号が正しく設定できていて、IPv4 のインターネット接続が稼働していれば、接続までは確認できるのではと。
さて、FreeBSD ホストで起動時に自動的に DTCP 接続をする場合は、下記のようにします。
# ifconfig -a fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:00:4c:xx:xx:xx inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC> ether 00:1d:73:xx:xx:xx inet 210.xxx.xxx.xxx netmask 0xffffff00 broadcast 210.xxx.xxx.xxx media: Ethernet autoselect (1000baseT <full-duplex>) status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 # cat >> /usr/local/etc/dtcpclient.auth dtcp.feel6.jp:Feel6 ID:password ←Feel6 のサーバ名、ID、パスワードを記述しておく ^D # chmod 600 /usr/local/etc/dtcpclient.auth ←上記のパスワードを root 以外読めないようにしておく # cat > /usr/local/etc/dtcpclient_script.conf tunif_addrs='2001:03e0:xxxx:2::1/64' ↑Feel6 から割り当てを受けた IPv6 ネットワーク内のアドレスをひとつ割り当てる。 ただし、LAN側とは別のネットワークにしておくこと。 #prefix_delegation='fxp0/1/0:0:0:1/48' ↑網側からの自動割り当てを受ける場合はこちらを有効にする。 ^D # cat >> /etc/rc.conf ←自動的に起動したくない場合は省略。 dtcpclient_enable="YES" dtcpclient_server="-p 20200 dtcp.feel6.jp" dtcpclient_username="(Feel6 ID)" ^D ↓packages で入れた場合はこちら。 # /usr/local/etc/rc.d/dtcpclient start Starting dtcpclient. ↓source から入れた場合、自動起動しない場合はこちら。 # dtcpclient -t network -Dl -u (Feel6 ID) -p 20200 dtcp.feel6.jp # ps awx | grep dtcpclient 1179 ?? Is 0:00.01 /usr/local/sbin/dtcpclient -t network -Dl -u (Feel6 ID) -p 20200 dtcp.feel6.jp 1223 0 R+ 0:00.01 grep dtcpclient % ifconfig -a fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:00:4c:xx:xx:xx inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255 inet6 fe80::200:4cxx:xxxx:xxxx%fxp0 prefixlen 64 scopeid 0x1 media: Ethernet autoselect (100baseTX <full-duplex>) status: active re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC> ether 00:1d:73:xx:xx:xx inet 210.xxx.xxx.xxx netmask 0xfffffff8 broadcast 210.xxx.xxx.xxx inet6 fe80::21d:73xx:xxxx:xxxx%re0 prefixlen 64 scopeid 0x2 media: Ethernet autoselect (1000baseT <full-duplex>) status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280 tunnel inet 210.xxx.xxx.xxx --> 43.244.255.xxx inet6 fe80::21d:73xx:xxxx:xxxx%gif0 prefixlen 64 scopeid 0x4 inet6 2001:3e0:xxx:2::1 prefixlen 64 options=1<ACCEPT_REV_ETHIP_VER> # netstat -rnfinet6 Routing tables Internet6: Destination Gateway Flags Netif Expire ::/96 ::1 UGRS lo0 => default ::1 UGS gif0 ::1 ::1 UH lo0 ::ffff:0.0.0.0/96 ::1 UGRS lo0 2001:3e0:xxxx:1::/64 link#2 U fxp0 2001:3e0:xxxx:1::1 link#2 UHS lo0 2001:3e0:xxxx:2::/64 link#4 U gif0 2001:3e0:xxxx:2::1 link#4 UHS lo0 ... # route get -net -inet6 :: route to: :: destination: :: mask: default gateway: localhost interface: gif0 flags: <UP,GATEWAY,DONE,STATIC> recvpipe sendpipe ssthresh rtt,msec mtu weight expire 0 0 0 0 1280 1 0 % dig www.kame.net AAAA ... ;; ANSWER SECTION: www.kame.net. 50063 IN AAAA 2001:200:0:8002:203:47ff:fea5:3085 ... % ping6 2001:200:0:8002:203:47ff:fea5:3085 PING6(56=40+8+8 bytes) 2001:3e0:xxxx:2::1 --> 2001:200:0:8002:203:47ff:fea5:3085 16 bytes from 2001:200:0:8002:203:47ff:fea5:3085, icmp_seq=0 hlim=54 time=6.733 ms 16 bytes from 2001:200:0:8002:203:47ff:fea5:3085, icmp_seq=1 hlim=54 time=6.404 ms 16 bytes from 2001:200:0:8002:203:47ff:fea5:3085, icmp_seq=2 hlim=54 time=22.283 ms 16 bytes from 2001:200:0:8002:203:47ff:fea5:3085, icmp_seq=3 hlim=54 time=6.487 ms 16 bytes from 2001:200:0:8002:203:47ff:fea5:3085, icmp_seq=4 hlim=54 time=6.616 ms ^C --- 2001:200:0:8002:203:47ff:fea5:3085 ping6 statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 6.404/9.705/22.283/6.290 ms
こんな感じで、ping6 が無事返ってくれば完了です(^_^)。 もしうまくいかない場合は、IPv6 が無効になっているかもしれないので、/etc/rc.conf を設定した後で再起動してみましょう。
なお、packages で入れた場合は rc.d も勝手に入りますが、source から入れた場合は自分で用意する必要があります。また、DTCPクライアントを毎回手動で起動したい場合は /etc/rc.conf への設定はせず、直接起動するようにします。
せっかくなので、IPv6 でインターネットに出てみることにしましょう。
と言っても IPv6 に対応している接続先は限られますが、KAME project や FreeBSD のホームページ・ftp サーバが対応しているので、そちらに接続してみることにします。
#GUI な Webブラウザが動いている場合は、http://www.kame.net/ に接続してみるのも方法です。
自分の Webサーバに IPv6 アドレスで接続してみる場合は、v4 アドレスと同様に URL 欄に入力しますが、IPv6アドレスは http://[2001:3e0:xxxx:2::1]/ のように [] で囲みます。
% dig www.kame.net AAAA ... ;; ANSWER SECTION: www.kame.net. 86250 IN AAAA 2001:200:0:8002:203:47ff:fea5:3085 ... % telnet 2001:200:0:8002:203:47ff:fea5:3085 80 Trying 2001:200:0:8002:203:47ff:fea5:3085... Connected to orange.kame.net. Escape character is '^]'. HEAD / HTTP/1.0 Host: www.kame.net (空行) HTTP/1.1 200 OK ... Connection closed by foreign host.
% dig www.jp.freebsd.org AAAA ... ;; ANSWER SECTION: www.jp.freebsd.org. 1546 IN AAAA 2001:2f0:104:1:2e0:18ff:fea8:16f5 ... % telnet 2001:2f0:104:1:2e0:18ff:fea8:16f5 80 Trying 2001:2f0:104:1:2e0:18ff:fea8:16f5... Connected to updraft3.jp.FreeBSD.org. Escape character is '^]'. HEAD / HTTP/1.0 Host: www.jp.freebsd.org (空行) HTTP/1.1 200 OK ... Connection closed by foreign host.
% dig ftp.freebsd.org AAAA ... ;; ANSWER SECTION: ftp.freebsd.org. 180 IN AAAA 2001:6c8:6:d::2 ftp.freebsd.org. 180 IN AAAA 2001:4f8:0:2::e ... % ftp 2001:4f8:0:2::e Connected to 2001:4f8:0:2::e. 220 Welcome to freebsd.isc.org. Name (2001:4f8:0:2::e:nobody): ftp 331 Please specify the password. Password: メールアドレス 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub/FreeBSD ftp> dir ... ftp> bye 221 Goodbye.
こんな感じで、外のホストに接続してやり取りできることが確認できたら、無事完了です(^^)。
下記のページを参考にさせていただきました。この場を借りて御礼申し上げます。
なお、IPv6 の基本的な解説については本稿では割愛しています。下記のページなどを適宜ご参照ください。
IPv6 の稼働状況を見たい方はこちらをどうぞ。
NTT東西のフレッツ網を使っていて該当しそうな方はこちらもどうぞ。
更新日 : 2011年06月10日 (7602)
CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > IPv6 Ready への道 〜FreeBSD, NetBSD編〜