ホーム » 技術 » ネットワーク » 6rdによるIPv6接続(Linux編その1)

SAKURA Internet Inc.

アーカイブ

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

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


2件のコメント

コメントは停止中です。