Internet under tunnels (IHANet) のご紹介

私がやっているIPv6の実験に、Internet under tunnels(IHANet)ってのがあります。

元々は、伊波源太さんがBGP4の実験をするために、今はまだそんなに影響のないIPv6線+Private AS番号+GREのトンネルを使って、IPv6のプライベートピアをして遊ぶためのプロジェクトだから、IHANetって名前だったのですが、今は一応、Internetworking Hobbyist Association's Networkって名前が正式名称になったっぽいです(^^;

原理としては、IPv4アドレス同士をtunnelで接続し、その中にIPv6のトラフィックを流すという発想です。ルーティングプロトコルとして、BGP4+を使うと、擬似的にBGPの運用勉強もできるというものです。

必要なもの:
1. IPv6線
2. 自由に設定できるマシン。カーネル再構築とBGP4+のインストールが必要です。
FreeBSDなら、/usr/ports/net/quagga あたりをインストールして
options TCP_SIGNATURE
options IPSEC
device crypto
device cryptodev
を付けてカーネル再構築。
3. 固定のグローバルIPv4アドレス1個(半固定でも何とかなりそうですが、実例はないかも…)

遊び方:
1. まず、相手を見つけます。IRCの、#IHANet@irc.reicha.net で叫ぶと誰か反応してくれると思います(^^;
2. Private AS番号を貰います。
3. 相手と運用の仕方を交渉します。交渉の内容としては
自分と相手のグローバルIPv4アドレス
自分と相手のIPv6 prefixとかの確認及び、相手のPrivate AS番号の確認。これらは、IHANetのサイトに書いてあります。
4. 確認が終わったら、BGPの設定を仕込んで確認。繋がったら、オッケー。

Quaggaの設定的には、Webのサンプルを元にすればいいんだけど、紹介しておきます。
/etc/rc.conf に、
quagga_enable="YES"
quagga_daemons="zebra bgpd"
zebra_flags="-d"
bgpd_flags="-d"
とか書いて、/usr/local/etc/rc.d/quagga start として、quagga(zebra+bgpd)を実行します。

トンネルを張るインターフェースをgre0とすると、
# ifconfig gre0 tunnel (自分のIPv4アドレス) (相手のIPv4アドレス)
で、IPv4のトンネルを張り、
# ifconfig gre0 inet6 (自分のIPv6アドレス) (相手のIPv6アドレス) prefixlen 128
もしくは、
# ifconfig gre0 inet6 2001:xxx:yyy:zzz::1 2001:xxx:yyy:zzz::2 prefixlen 126
でIPv6の前者はPoint to Pointで張る場合(IPv6はこれができるそうです)、後者は/126のネットワークアドレスを使って運用する場合です。IPv6アドレスとして、/48とか/56を貰っている場合なら後者でもいいですし、/64とかだったら、相手からIPv6アドレスを貰って、必然的に後者になりそうですね。
その後、
# ping6 -I gre0 ff02::1
を実行して、2つのアドレスから返事が来ればトンネルが張れていると思います(ちなみに、Linuxの場合は返事が来ないそうです)。そうすると
# traceroute6 -n (相手のIPv6アドレス)
を実行すると、1 hopで到達するでしょう。この状態で
# route add -inet6 (相手のIPv6アドレスのプレフィックス) -interface gre0
とかをお互いにやれば、静的にルーティングができます。動的にやるには、ダイナミックルーティングプロトコルを動かします。IHANetでは、BGP4+を使います。

次に、Quaggaの設定です。最初に仕込む場合はそんなに問題ないですが、追加する場合などは、例えば以下のようにします。
% telnet localhost bgpd
Trying ::1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.12).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password: (passwordフィールドで設定したパスワード)

quagga-bgpd> enable
Password: (enable passwordフィールドで設定したパスワード)
quagga-bgpd# config terminal
quagga-bgpd(config)# router bgp (自分のAS番号)
quagga-bgpd(config-router)# neighbor (相手のIPv6アドレス) remote-as (相手のAS番号)
quagga-bgpd(config-router)# address-family ipv6
quagga-bgpd(config-router-af)# neighbor (相手のIPv6アドレス) peer-group peer
quagga-bgpd(config-router-af)# exit
quagga-bgpd(config-router)# exit
quagga-bgpd(config)# write memory
Configuration saved to /usr/local/etc/quagga/bgpd.conf
quagga-bgpd(config)# exit
quagga-bgpd#
ここで、peerとかのステータスを確認してもよいでしょう。
quagga-bgpd# show ipv6 bgp summary
とかで、peerの状態を見たり、
quagga-bgpd# show ipv6 bgp
で、来ている経路を見たりできます。その他、Cisco likeなコマンドは使えるので、AS Prependとかaccess-list とかも書けます。終わったら、
quagga-bgpd# exit
Connection closed by foreign host.
#
で抜けます。こんな感じで、BGPのお勉強をしましょう。
ちなみに、コマンドを突っ込むだけなら、vtysh コマンドってものもあるらしいですが、私は使ったことがないので、紹介はパスします(^^;

さて、ここからが私のブログを読んでいる新潟関係者の方へのご相談。
IPv4 グローバルアドレス同士でトンネルを張ってIPv6を通すと、今までみたいにIPv6接続が東京とか富山回りにならずに済むというメリットがあります。そうすると、某県央方面のプロバイダさんのIPv6線を、1 AS間のルーティングで使わせていただくことができるようになるので、IPv6アドレスください(^^; 別に、某県北方面のプロバイダさんでもいいのですが、新潟で終端するIPv6線を早く使いたいです…。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント