FreeBSD 4.X
FreeBSD のマシンをトンネルサーバとして、トンネリング実験に参加する場合のトンネルサーバの設定手順や確認方法について、以下に説明いたします。
実験パートナ様が利用されるIPv6アドレスや、トンネル接続用のIPv4アドレスについては以下の通 りとします。
| ご利用IPv6アドレス | 2001:218:xxx::/48 |
|---|---|
| トンネリング接続IPv4アドレス | 210.aaa.bbb.ccc |
| OCN側のトンネル接続IPv4アドレス | 210.163.36.3 |
| 実験パートナ様トンネルマシン | --- … --- | OCN側トンネルマシン |
| 210.aaa.bbb.ccc | xl0 | 210.aaa.bbb.ccc |
作業の大まかな流れは次のようになります。
- 1. グローバルアドレスの設定
- 2. アドレスの確認
- 3. トンネルの設定
- 4. トンネルのupの確認
- 5. デフォルト経路の設定
- 6. 経路設定の確認
- 7. /etc/rc.conf への記述
では、各ステップについて説明します。今回は FreeBSD 4.1-RELEASE を利用しています。
1. グローバルアドレスの設定
インターフェースに対してグローバルアドレスを設定します。今回は 3Com 3c905B ネットワークカードを用いたため、 インターフェースは xl0 になっています。ご利用のカードによって インターフェース名が違いますのでそれぞれのカードにあわせて 読み換えてください。また 2001:218:xxx:yyy::/64 の ネットワークを作成することにします。
# /sbin/sysctl -w net.inet6.ip6.forwarding=1
# /sbin/sysctl -w net.inet6.ip6.accept_rtadv=0
# /usr/sbin/prefix xl0 2001:218:xxx:yyy::
# /sbin/ifconfig xl0 inet6 2001:218:xxx:yyy:: anycast
2. アドレスの確認
ifconfig を用いて確認を行います。
# /sbin/ifconfig xl0
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 210.aaa.bbb.ccc netmask 0xfffffff8 broadcast 210.aaa.bbb.ddd
inet6 fe80::250:4ff:fea3:65d4%xl0 prefixlen 64 scopeid 0x1
inet6 2001:218:xxx:yyy:250:4ff:fea3:65d4 prefixlen 64
inet6 2001:218:xxx:yyy:: prefixlen 64 anycast
ether 00:50:04:a3:65:d4
media: autoselect (100baseTX <full-duplex>) status: active
supported media: autoselect 100baseTX <full-duplex> 100baseTX 10baseT/UT
P >full-duplex< 10baseT/UTP 100baseTX <hw-loopback><BR>
3. トンネルインタフェースの設定
gifconfig コマンドでトンネルインタフェースを gif0 を設定します。
# /usr/sbin/gifconfig gif0 inet 210.aaa.bbb.ccc 210.163.36.3
※トンネルマシンのブート時にトンネルと経路の設定が行われるように(1)、(2) で設定したコマンドを "/usr/local/v6/etc/rc.net6" などに記述しておきます。
(rc.net6 は rc.net6.sample をコピーし、ご自分の環境に合わせて設定した上でご利用ください。)
4. トンネルupの確認
トンネルのインタフェースに対して ff02::1 を宛先とした ping6 コマンドを実行します。("ff02::1" というアドレスは「当該リンク上のすべてのノード」を意味するマルチキャストアドレスです。)
以下の例のように、2種類のリンクローカルアドレスから応答があれば、トンネルが up していることになります。
% /sbin/ping6 -c 4 -I gif0 ff02::1
PING6(56=40+8+8 bytes) fe80::260:efff:fe20:9925 --> ff02::1
16 bytes from fe80::260:efff:fe20:9925@gif0, icmp_seq=0 hlim=64 time=0.207 ms
16 bytes from fe80::2c0:4fff:fe15:f4b0@gif0, icmp_seq=0 hlim=64 time=18.26 ms(DUP!)
16 bytes from fe80::260:efff:fe20:9925@gif0, icmp_seq=1 hlim=64 time=0.148 ms
16 bytes from fe80::2c0:4fff:fe15:f4b0@gif0, icmp_seq=1 hlim=64 time=17.131 ms(DUP!)
16 bytes from fe80::260:efff:fe20:9925@gif0, icmp_seq=2 hlim=64 time=0.147 ms
16 bytes from fe80::2c0:4fff:fe15:f4b0@gif0, icmp_seq=2 hlim=64 time=18.782 ms(DUP!)
16 bytes from fe80::260:efff:fe20:9925@gif0, icmp_seq=3 hlim=64 time=0.226 ms
--- ff02::1 ping6 statistics ---
4 packets transmitted, 4 packets received, +3 duplicates, 0% packet loss
round-trip min/avg/max = 0.147/8.803/18.782 ms
5. デフォルト経路の設定
デフォルト経路をトンネルに向けてスタティックに設定します。
# /sbin/route add -inet6 default -interface gif0
6. 経路設定の確認
IPv6のグローバルアドレスに対して、ping6 を実行し接続性を確認します。IPv6 OCN トンネリング実験では、接続性を確認して頂くためのアドレスとして、2001:218::1 を準備しております。
% /sbin/ping6 -c 4 2001:218::1
PING6(56=40+8+8 bytes) 2001:218:xxx:yyy:zzz:xxx:yyy:zzz --
>2001:218:0:1000::1
16 bytes from 2001:218::1, icmp_seq=0 hlim=63 time=17.96 ms
16 bytes from 2001:218::1, icmp_seq=1 hlim=63 time=15.492 ms
16 bytes from 2001:218::1, icmp_seq=2 hlim=63 time=16.035 ms
16 bytes from 2001:218::1, icmp_seq=3 hlim=63 time=18.16 ms
--- 2001:218::1 ping6 statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 15.492/16.911/18.16 ms
DNSサーバへの問い合わせができるなら、以下のようにホスト名を指定して実行することもできます。
% /sbin/ping6 -c 3 www.ocn.v6.ntt.net.
PING6(56=40+8+8 bytes) 2001:218:xxx:yyy:zzz:xxx:yyy:zzz -->
2001:218:0:1000::80
16 bytes from 2001:218::80, icmp_seq=0 hlim=63 time=16.302 ms
16 bytes from 2001:218::80, icmp_seq=1 hlim=63 time=18.441 ms
16 bytes from 2001:218::80, icmp_seq=2 hlim=63 time=16.986 ms
--- www.ocn.v6.ntt.net. ping6 statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 16.302/17.243/18.441 ms
ping6 の代わりに traceroute6 コマンドを用いることもできます。また、"netstat -r" によりdefault経路が設定されたことを確認することができます。(netstat = /usr/bin/netstat)
7. /etc/rc.conf への記述
トンネルマシンのブート時にトンネルと経路の設定が行われるように (1)、(3)、(5) の設定を "/etc/rc.conf" に記述しておきます。これまでの例を設定する場合には
#
ifconfig_xl0="inet 210.aaa.bbb.ccc netmask 0xfffffff8"
defaultrouter="210.aaa.bbb.ddd"
#
ipv6_enable="YES"
ipv6_static_routes="default"
ipv6_route_default="default -interface gif0"
ipv6_gateway_enable="YES"
ipv6_network_interfaces="xl0"
ipv6_prefix_xl0="2001:0218:xxxx:yyy"
gif_interfaces="gif0"
gifconfig_gif0="210.aaa.bbb.ccc 210.163.36.3"
#
のようにします。再起動後 gifconfig や netstat -r 等を使用して設定の確認を行います。