当ブログをご覧の皆様こんにちは。さくらインターネット研究所の大久保です。
前回は、FreeBSDで6rdを使う方法を解説しましたので、今回は引き続きLinuxで6rd接続する方法について説明したいと思います。
対応しているディストリビューション
概要編でも紹介しましたが、当方ではUbuntu10.10とFedora14が標準で対応していることを確認しています(詳細は以下で説明)。ひとつ前のバージョン、Ubuntu10.04やFedora13は対応していません。
対応状況の確認
6rdを動作させるためには、カーネルとiproute2パッケージが6rdに対応している必要があります。対応状況は以下のコマンドで確認できます。
- カーネルの対応状況
# uname -r 2.6.35-22-generic # grep 6RD /boot/config-`uname -r` CONFIG_IPV6_SIT_6RD=y
カーネルのバージョンが2.6.33以降で、CONFIG_IPV6_SIT_6RDがyとなっていれば、カーネルは6rdに対応しています。
- iproute2の対応状況
iproute2パッケージのバージョンとip tunnelのhelpを確認します。# ip -V ip utility, iproute2-ss100519 # ip tunnel help Usage: ip tunnel { add | change | del | show | prl | 6rd } [ NAME ] [ mode { ipip | gre | sit | isatap } ] [ remote ADDR ] [ local ADDR ] [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ] [ prl-default ADDR ] [ prl-nodefault ADDR ] [ prl-delete ADDR ] [ 6rd-prefix ADDR ] [ 6rd-relay_prefix ADDR ] [ 6rd-reset ] [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ] Where: NAME := STRING ADDR := { IP_ADDRESS | any } TOS := { NUMBER | inherit } TTL := { 1..255 | inherit } KEY := { DOTTED_QUAD | NUMBER }
バージョンがss100224以降で、helpに6rdに関するオプションが表示されれば、インストールされているiproute2パッケージは6rdに対応しています。
以下では、この2つのディストリビューション、Ubuntu10.10とFedora14での設定方法を説明します。
Ubuntu10.10での設定方法
今回もComcast社の6rd Border Relayを経由してIPv6インターネットに接続してみます。Comcast社の6rdのパラメータを以下に再掲します。
6rdプレフィックス | 2001:55c::/32 |
埋め込むIPv4アドレス | 32bit全て |
Border Relayアドレス | 69.252.80.66 (6rdアドレス=2001:55c:45fc:5042::) |
委譲空間 | /64 |
参考:Comcast 6RD Configuration Instructions for IPv6
設定手順は以下の通りです。ここでは、61.211.224.125のIPv4アドレスをもったUbuntuサーバでの設定例を紹介します。
- IPv6アドレスの算出
上記の通りカーネルとiproute2は対応していますが、initスクリプトは正式に対応していないため、IPv6アドレスは手動で算出することになります。以下のように、IPv4アドレスをスペース区切りで引数に指定します。# printf "2001:55c:%02x%02x:%02x%02x::1\n" 61 211 224 125 2001:55c:3dd3:e07d::1
- /etc/network/interfaces ファイルの編集
viでファイルを開き、以下の内容を追加します。青文字の部分はそれぞれの環境に合わせて書き換えてください。# vi /etc/network/interfaces (以下を追加) auto tun6rd iface tun6rd inet6 v4tunnel address 2001:55c:3dd3:e07d::1 netmask 32 local 61.211.224.125 endpoint any gateway ::69.252.80.66 ttl 64 up ip tunnel 6rd dev tun6rd 6rd-prefix 2001:55c::/32 up ip link set mtu 1280 dev tun6rd
- 再起動
設定を反映させるために一度再起動します。# reboot
- 設定反映を確認
起動後に設定が反映されていることを確認します。$ ifconfig tun6rd tun6rd Link encap:IPv6-in-IPv4 inet6アドレス: ::61.211.224.125/128 範囲:Compat inet6アドレス: 2001:55c:3dd3:e07d::1/32 範囲:グローバル UP RUNNING NOARP MTU:1280 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B) $ ip tunnel show sit0: ipv6/ip remote any local any ttl 64 nopmtudisc 6rd-prefix 2002::/16 tun6rd: ipv6/ip remote any local 61.211.224.125 ttl 64 6rd-prefix 2001:55c::/32 $ ip -6 route show | grep default default via ::69.252.80.66 dev tun6rd metric 1024 mtu 1280 advmss 1220 hoplimit 0
Fedora14での設定方法
Ubuntuと同様、Comcast社の6rd Border Relayを経由してIPv6インターネットに接続する方法を説明します。設定手順は以下の通りです。ここでは、61.211.224.124のIPv4アドレスをもったFedoraサーバでの設定例を紹介します。
- IPv6アドレスの算出
Ubuntu同様、initスクリプトは正式に対応していないため、IPv6アドレスは手動で算出することになります。以下のように、IPv4アドレスをスペース区切りで引数に指定します。# printf "2001:55c:%02x%02x:%02x%02x::1\n" 61 211 224 124 2001:55c:3dd3:e07c::1
- /etc/sysconfig/network-scripts/ifcfg-sit1 ファイルの作成
viでファイルを開き、以下の内容を追加します。青文字の部分はそれぞれの環境に合わせて書き換えてください。# vi /etc/sysconfig/network-scripts/ifcfg-sit1 DEVICE=sit1 IPV6INIT=yes IPV6_MTU=1280 IPV6_DEFAULTGW=::69.252.80.66 IPV6TUNNELIPV4=any IPV6TUNNELIPV4LOCAL=61.211.224.124 IPV6ADDR=2001:55c:3dd3:e07c::1/32
- /etc/rc.local ファイルの編集
上記で作成したトンネルインターフェイスsit1に対して6rd-prefixオプションを設定しなければなりませんが、ifcfgファイルでは指定できませんので、ちょっと汚いですがとりあえず/etc/rc.localに記載し、起動時にipコマンドで設定することにします。# vi /etc/rc.local (以下をファイルの末尾に追加) ip tunnel 6rd dev sit1 6rd-prefix 2001:55c::/32
- 再起動
設定を反映させるために一度再起動します。# reboot
- 設定反映を確認
起動後に設定が反映されていることを確認します。# ifconfig sit1 sit1 Link encap:IPv6-in-IPv4 inet6 addr: 2001:55c:3dd3:e07c::1/32 Scope:Global inet6 addr: ::61.211.224.124/128 Scope:Compat UP RUNNING NOARP MTU:1280 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) # ip tunnel show sit0: ipv6/ip remote any local any ttl 64 nopmtudisc 6rd-prefix 2002::/16 sit1: ipv6/ip remote any local 61.211.224.124 ttl 64 6rd-prefix 2001:55c::/32 # ip -6 route show | grep default default via ::69.252.80.66 dev sit1 metric 1 mtu 1280 advmss 1220 hoplimit 0
疎通性の確認
設定が完了したら、ping6コマンドを用いて疎通性の確認を行います。
$ ping6 www.iij.ad.jp PING www.iij.ad.jp(2001:240:bb42:b000::1:80) 56 data bytes 64 bytes from 2001:240:bb42:b000::1:80: icmp_seq=1 ttl=52 time=347 ms 64 bytes from 2001:240:bb42:b000::1:80: icmp_seq=2 ttl=52 time=347 ms 64 bytes from 2001:240:bb42:b000::1:80: icmp_seq=3 ttl=52 time=348 ms 64 bytes from 2001:240:bb42:b000::1:80: icmp_seq=4 ttl=52 time=347 ms ^C --- www.iij.ad.jp ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3000ms rtt min/avg/max/mdev = 347.571/348.009/348.987/0.713 ms
上記のようにpingが返ってくれば成功です。
まとめ
今回も設定例として、Comcast社の6rd Border Relayを使う方法をとりあげたため、IPv6アドレスにIPv4アドレスを32bit全て埋め込む方式となりました。しかし、Linuxの6rdの実装はRFCに準拠しており、IPv4アドレスの全部ではなく一部のみをIPv6アドレスに埋め込むこともできます(結果としてクライアントが使えるIPv6アドレス空間を増やすことができます)。
次回はそのあたりの設定について解説したいと思います。
[…] This post was mentioned on Twitter by Junichi Nagata and Naoto MATSUMOTO, 鷲北 賢. 鷲北 賢 said: さくらインターネット研究所ブログ 6rdによるIPv6接続(Linux編その1) http://research.sakura.ad.jp/2011/01/21/tunnel-6rd-linu […]
[…] http://research.sakura.ad.jp/2011/01/21/tunnel-6rd-linux1/ http://research.sakura.ad.jp/6rd-trial/6rd-trial-centos55/ […]