CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > IPv6 Ready への道 〜FreeBSD, NetBSD編〜

IPv6 Ready への道 〜FreeBSD, NetBSD編〜

since 2010.02.01 / CORY

「IPv6 Ready への道」などと大層な題が付いていますが^^;、KAME project の軌跡を辿ろうなどという壮大な意図は無くてですね、あくまで備忘録として、IPv6 を使えるようにするまでの設定方法を簡単にメモ書きしたものです。くれぐれも過度な期待は無用で願います:-)。

そんなわけで、まずは FreeBSD から。FreeBSD 4系列より IPv6 に対応しており、現在稼働しているシステムでは概ね心配なく使うことができるのではと思います。 また、NetBSD もだいたい同じなので、ここに一緒に書いておきます。 Mac OS X と Windows XP の話はまたの機会に。

目次

IPv6アドレスとは 自分のアドレスを確認する IPv6アドレスをインターフェイスに設定する ルート設定 /etc/rc.conf に設定する DTCPクライアント 外に出てみよう 参考文献

IPv6アドレスとは

ここをご覧の方なら IPv4アドレス(192.168.0.1 のようなもの)の設定をされたことはあるかと思いますが、何かしらのIPアドレスを設定しないと通信できないんだぞ、という感覚はお持ちかと思います。

これは IPv6 でも同様で、やはり通信には IPアドレスが必要になるのですが、IPv6 ではインターフェイス (I/F) が立ち上がると自動的にリンクローカルアドレス(リンクローカルユニキャストアドレス)が生成されまして、これが使えるようになります (RFC 4489)。

ルータ越えを考えず LAN の狭い範囲で使うだけならばこれが使えるので、とりあえず機器の設定をしたい、といった場合には便利な機能なのですが、このアドレスはルーティングが禁止されていまして、このまま外に出ていく(または外からの接続を受け付ける)ことはできません。

また、IPv4 では LAN 内はとりあえずプライベートアドレスを割り当てておいてルータでアドレス変換 (NAT) する使い方が一般的になっていますが、IPv6 では基本的にアドレス変換はしませんので、インターネットにつながる端末には原則としてグローバルアドレスを割り振ります(この上リンクローカルアドレスも有効なので、2つ以上のアドレスを持つことになります)

ここで察しのよい方はお分かりのように、後述の手順を踏んで IPv6 アドレスを割り当てると、それはグローバルアドレスになり、外からのアクセスが可能になります。セキュリティ確保の観点から、v6アドレス割り当て前に不要なサービスを止めるなどの準備をしておくことをお勧めします(自動的に割り当てられているリンクローカルアドレスは前述のようにルータを越えないので、これだけで外からアクセスされることはありません)

参考リンク:

IPv6アドレスをもらうには

そんなわけで、外部のネットワーク(インターネットはもちろん、フレッツ・ドットネットフレッツ・スクウェア ネクストなども含む)につなぎたい場合はグローバルアドレスの割り当てを受ける必要がありますが、IPv6 アドレスも IPv4 と同様、ルーティングを円滑にするため、アドレスの割り当ては一般に接続プロバイダ経由で行われます。 利用中の接続サービスがすでに IPv6 に対応している場合はそのプロバイダから割り当てを受けます(プロバイダによって申し込みや料金が必要な場合があります)が、未対応の場合は残念ながら使えません

……と言うとそこで終わってしまいますが(苦笑)、フリービットというプロバイダが、現在利用中のプロバイダにかかわらず利用できる Feel6接続サービスを無料で提供しているので、ここでは、その無料サービスを使って試してみます。

▲目次に戻る▲

自分のアドレスを確認する

Feel6接続サービス 「登録情報の変更・確認」ログイン直後の画面 (14KB)
Feel6接続サービス 登録情報確認画面 (17KB)

プロバイダから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:: は同じです。詳しいことはこちらから。


▲目次に戻る▲

IPv6アドレスをインターフェイスに設定する

前置きが長くなってしまいましたが、ようやくここまで来ました。自分が使えるネットワーク・プレフィクスが決まって初めて、グローバルアドレスを設定することができます。IPv4のプライベートアドレス+NAT利用に慣れているとむしろ少々面倒にも感じてしまいますが、まぁこれが本来の姿なのだと思っておくことにしましょう:-)。

IPアドレスの書式が変わっているので少々戸惑う面があるかもしれませんが、基本的には IPv4 の割り当てと同様です。まずは試しに、現在起動中のシステムに IPv6 アドレスを追加してみましょう。

以下の例ではインターフェイスに fxp0 を使っています。今回は prefix 48 で IPv6 アドレスの割り当てをもらっていますが、その一段下にネットワークアドレスを追加し、prefix 64 のアドレスを使っています(前半 2001:03e0:xxxx:1 がネットワークで、後半 0:0:0:1 がインターフェイス)。ネットワークは必要に応じてもっと細分化(prefix を大きく)できますが、特に分ける必要が無ければ、とりあえず下記の例のように試してみましょう。

なお、斜字が入力する部分です。ただし下線部は利用環境に合わせて書き換えが必要な部分。他、細かいところは適宜変えてください。以下同様。

# 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
        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 などに設定します。

FreeBSD

/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クライアントで外部とつなぐ場合など)

NetBSD

/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 が無効になっている場合は、設定後に再起動しておきます。

▲目次に戻る▲

DTCPクライアント

プロバイダが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 projectFreeBSD のホームページ・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
書き換えが必要な部分に下線を入れる。他細かい修正。
2010.02.07
初版掲載
2010.02.01
下書き作成
▲目次に戻る▲

更新日 : 2011年06月10日 (7602)

CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > IPv6 Ready への道 〜FreeBSD, NetBSD編〜


« 短絡線 »
[ CORY's twilight zone | PC-98, FreeBSD(98), Mac OS X, Android | 鉄道・街 | 自然 | flickr | twitter (log) | YouTube | Contact ]

Copyright © 1996-2024 CORY / ISAKA Yoji. Some rights reserved:
Creative Commons Attribution-Share alike 2.1 Japan.