6rdによるIPv6接続(Linux編その1)

当ブログをご覧の皆様こんにちは。さくらインターネット研究所の大久保です。

前回は、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サーバでの設定例を紹介します。

  1. IPv6アドレスの算出
    上記の通りカーネルとiproute2は対応していますが、initスクリプトは正式に対応していないため、IPv6アドレスは手動で算出することになります。以下のように、IPv4アドレスをスペース区切りで引数に指定します。

    # printf "2001:55c:%02x%02x:%02x%02x::1\n" 61 211 224 125
    2001:55c:3dd3:e07d::1
  2. /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
  3. 再起動
    設定を反映させるために一度再起動します。

    # reboot
  4. 設定反映を確認
    起動後に設定が反映されていることを確認します。

    $ 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サーバでの設定例を紹介します。

  1. IPv6アドレスの算出
    Ubuntu同様、initスクリプトは正式に対応していないため、IPv6アドレスは手動で算出することになります。以下のように、IPv4アドレスをスペース区切りで引数に指定します。

    # printf "2001:55c:%02x%02x:%02x%02x::1\n" 61 211 224 124
    2001:55c:3dd3:e07c::1
  2. /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
  3. /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
  4. 再起動
    設定を反映させるために一度再起動します。

    # reboot
  5. 設定反映を確認
    起動後に設定が反映されていることを確認します。

    # 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アドレス空間を増やすことができます)。

次回はそのあたりの設定について解説したいと思います。

1 comment to 6rdによるIPv6接続(Linux編その1)

コメントをどうぞ

  

  

  

You can use these HTML tags

<a href=""title=""><abbr title=""><acronym title=""><b><blockquote cite=""><cite><code><del datetime=""><em><i><q cite=""><strike><strong><img localsrc=""alt="">

*