~nabeken/diary/

Gentoo Linux(6年くらい)とFreeBSD(1年くらい)とOpenBSD(新参者)を使う日々。


IHANet BGP peering overview

Debian GNU/Linux で OCN IPv6 へ接続する

Posted on Sun Apr 12 21:52:51 +0900 2009 by nabeken

この記事は http://www.v6.tknetworks.org/ の再構成です。現状では、個人でも安価に接続できる商用 IPv6 ネットワークは無料、有料含めいくつかあります。

表題は Debian を使っていますが、どの Linux でも手順はほぼ変わりません。

feel6

DTCP を使ったトンネリングサービス。RT57i も DTCP をしゃべるため、個人で箱物を使うなら非常によかったが…

2009/04現在、障害対応は行われていますが、抜本的な対応(SSLの証明書期限切れなど)は今後も期待できないでしょう。

6to4.jp

6to4 リレールータを日本国内に置く実験。非常におしまれつつ、2006年に実験が終了。これについては、以前考察しましたが、おそらく今後も再開されることはないでしょう。

tokyo6to4 http://tokyo6to4.net/

6to4.jp の後継(?)として、2009年から始まったサービス。OCN配下では、すでに peering が完了しており、非常に快適に 6to4 が利用できます。IPv6への機運が高まりつつあるこの時期に、国内で手頃に 6to4 経由で IPv6 の検証ができるようになったのは大変素晴しいことだと思います。

参考: OCN 配下のマシンで relay router への ping

nabeken@nagisa ~ % ping 192.88.99.1
PING 192.88.99.1 (192.88.99.1) 56(84) bytes of data.
64 bytes from 192.88.99.1: icmp_seq=1 ttl=54 time=9.70 ms
64 bytes from 192.88.99.1: icmp_seq=2 ttl=54 time=10.2 ms
64 bytes from 192.88.99.1: icmp_seq=3 ttl=54 time=8.45 ms

--- 192.88.99.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 8.455/9.452/10.201/0.738 ms

このサービスも実験目的であるため、2年程度で終了予定。(参考: http://tokyo6to4.net/index.php/Tokyo6to4:Tokyo6to4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)

OCN IPv6

L2TP + PPP で NAT を越えることができるトンネリングサービス。NTT Com が展開する商用 IPv6 ネットワークに接続できるため、品質は個人向けと言えど高い。

しかし、L2TP をしゃべれる箱物が個人向けだと少なく、あっても Corega に…。しかし、日本国内で常用に耐えられ、かつ安価な IPv6 接続サービスはこれしかないのが現状です。現在、NTTの地域網(NGN)を使ったIPv6インターネット接続サービスが検討されています。

お金に糸目を付けない(固定IPアドレス向けのサービスなので高価)のであれば、 IIJmio のトンネリングサービス などが鉄板。

振り替えったところで、設定。

作業にあたり

  • mkdir -p /usr/local/OCN_IPv6; cd /usr/local/OCN_IPv6
  • ソースコードは /usr/local/OCN_IPv6/src 以下に展開する
  • ./configure は基本的にデフォルトを使用する

ppp

git から最新バージョンを取得し、インストールする。

 # aptitude install git-core make gcc
 $ git clone git://git.ozlabs.org/~paulus/ppp.git
 $ cd pppd
 $ ./configure
 $ cd pppd
 $ vi Makefile
// INET6 系を有効にする
 $ cd ..
 $ make
 # make install

ppp の設定は以下の通り。

 $ cat /etc/ppp/peers/OCN_IPv6
nodefaultroute
noip
+ipv6
usepeerdns
user your-username
noipdefault
default-asyncmap
nopcomp
noaccomp
noccp
novj
nobsdcomp
nodeflate
lcp-echo-interval 30
lcp-echo-failure 2
lock
noauth
persist

ユーザ名とパスワードの設定は /etc/ppp/chap-secrets で行います。簡単なのでここでは解説しません。

rp-l2tp

cvs から最新バージョンを取得し、インストールする。

// cvs からもってくる http://sourceforge.net/cvs/?group_id=63352
 $ cd rp-l2tp
 $ ./configure
 $ make
 # make install

rp-l2tp の設定

固定、非固定prefix、どちらに接続するかでトンネリング先が異なります。ホスト名は OCN のページで確認できます。固定と非固定の違いは以下の通りです。

  • 固定: ppp 上からRAが流れてこない。アドレス設定は DHCPv6-PD で行う。
  • 非固定: ppp 上からRAが流れてくる。DHCPv6-PDでも固定らしき prefix は払い出されるが、仕様外と思われる。

また、同時に2つ使う場合、非固定のトラヒックを固定のpppに流してもルーティングされるようです。

非固定での設定は以下の通り。固定の場合は peer 先のホスト名を修正するだけで動きます。lac-pppd-opts で unit 666 とすると、ppp666というインターフェースができます。

# Global section (by default, we start in global mode)
global

# Load handlers
load-handler "sync-pppd.so"
load-handler "cmd.so"

# Bind address
listen-port 1701

# Configure the sync-pppd handler.  You MUST have a "section sync-pppd" line
# even if you don't set any options.
section sync-pppd
#set-ppp-if-name 1
pppd-path "/usr/local/OCN_IPv6/sbin/pppd"
lac-pppd-opts "call OCN_IPv6 unit 666"

section peer
peer v6tfpa1.ocn.ne.jp

port 1701
lac-handler sync-pppd
lns-handler sync-pppd

section cmd

Linux ルータで2つ同時に使う場合の設定は以下の通り。

# Global section (by default, we start in global mode)
global

# Load handlers
load-handler "sync-pppd.so"
load-handler "cmd.so"

# Bind address
listen-port 1701

# Configure the sync-pppd handler.  You MUST have a "section sync-pppd" line
# even if you don't set any options.
section sync-pppd
pppd-path "/usr/local/OCN_IPv6/sbin/pppd"
lac-pppd-opts "call OCN_IPv6 unit 666"

section peer
peer v6tfpa1.ocn.ne.jp
port 1701
lac-handler sync-pppd
lns-handler sync-pppd

section peer
peer v6tfff1.ocn.ne.jp
port 1701
lac-handler sync-pppd
lns-handler sync-pppd

section cmd

少し解説しておくと、 section peer が2つあります。lac-pppd-opts はpppのインターフェース名を固定にしたいところに追加し、それ以外は動的に設定するため、lac-pppd-optsを省略しています。

これら ppp, l2tp の設定が完了すると

 # /usr/local/OCN_IPv6/sbin/l2tp-control "start-session v6tfpa1.ocn.ne.jp"

でセッションを開始できます。

wide-dhcpv6

DHCPv6 の実装の1つである wide-dhcpv6 を cvs から最新バージョンを取得し、インストールします。

 # aptitude install bison flex
// cvs からもってくる http://sourceforge.net/cvs/?group_id=153668
 $ cd wide-dhcpv6

ここで、取得した prefix に自分の MAC アドレスを足さずに prefix::1/64 というアドレスにするパッチを当てます。必要のない人は飛ばしてください。

 $ wget https://projects.tsuntsun.net/~nabeken/wide-dhcpv6.patch
 $ patch -p0 < wide-dhcpv6.patch
 $ ./configure
 $ make
 # make install

設定は以下の通りです。

interface ppp1 {
        send ia-pd 0;
};

id-assoc pd {
        prefix-interface eth1 {
                sla-id 1;
                sla-len 0;
        };
};

prefix-interface は受け取った prefix をつけるインターフェースです。OCN IPv6 では /64 のサイズになるため、 sla-len は0にします。

以上で DHCPv6 の設定は完了です。

 # /usr/local/OCN_IPv6/sbin/dhcp6c ppp1

とすれば、 prefix-interface で指定したインターフェースにアドレスがついているはずです。

以上で Linux で OCN IPv6 を使用することができるようになります。応用としては、Linux ルータで非固定のppp接続をしたのち、配下の RT57i で非固定prefixをRAしなおすことで、クライアントも IPv6 化、などがあります。(後日解説予定)

更新履歴

  • 初稿 (Sun, 12 Apr 2009 21:52:51 +0900)