IPv6ルータを作る

OpenBlockSをIPv6ルータに

これはOpenBlockS(OBS266/128/16R)をIIJのIPv6トンネリング接続でルータにするために行ったことのメモです。 Debianに入れ替えたりとかせず、SSD/Linuxをそのまま使っています。 またOpenBlockS設定メニューは使用していません(do_contrib_rc はコメントアウト)。

まずはIPv4で接続

PPPoEでIIJmio(FiberAccess/SF)に接続します。 最近のLinuxシステムではpppoe-setupコマンドで簡単にセットアップできるので 便利な世の中になったものです。

IPv6設定

ルータにするので、ルータにするのに必要な諸処の設定を行います。

# sysctl -w net.ipv6.conf.all.forwarding=1         パケット転送を行う
# sysctl -w net.ipv6.conf.all.accept_ra=0          ルータ広告を受信しない
# sysctl -w net.ipv6.conf.all.accept_redirects=0   リダイレクトを受け付けない

これと同等のことをブート時に行わせるには、 /etc/rc.confip6mode="router" と書いてOKです。

IPv6アドレス割り当て

我が家の場合はISPから 2001:x:y::/48 をもらったので、 2001:x:y::2/64 をルータのIPv6アドレスとしました。これを eth0(LAN側) に割り当てます。

# /sbin/ifconfig eth0 add 2001:x:y::2/64

ブート時に設定させるゾという場合は、/etc/ifconfig.eth0add 2001:x:y::2/64 を書き加えると良いでしょう。

トンネル掘ってデフォルトルートの設定

トンネルを掘るには、次のようなコマンドを打ちました。

# /sbin/ip tunnel add sit1 mode sit remote トンネル先IPv4アドレス local 自分のIPv4アドレス
# /sbin/ifconfig sit1 up
# /sbin/route -A inet6 add default dev sit1

トンネルが開通しているかどうかを調べるには、ping6 -I sit1 ff02::1 とやると、開通していればトンネル元、トンネル先の 2つから応答があります。 ブート時に設定するには適当な場所が /etc/rc.local くらいしか分からなかったので、ココを使いました。終わりよければ全てよし。

RAデーモンとRIPngの実行

ルータ化するのでルータ広告(Router Advertise)やルーティングの準備をしなくてはなりません。 OpenBlockSだと楽なもので、/etc/rc.conf に次のようなものをちょこっと書くだけで準備ができます。

radvd=YES
radvd_flags="eth0"    # --- eth0(LAN側)にRAすればいいので
zebra=YES
ripngd=YES

これでブート時にzebraとripngが起動されるようになりますが、再起動せずに実行するには自前でコマンドラインから立ち上げてください(そりゃ当然だ)。

Zebraの設定

/etc/zebra.conf.samplezebra.conf にコピーして パスワードとアクセスリストの設定をしたくらい。

RIPngの設定

zebraと同じように /etc/ripngd.conf.sample があるので ripngd.conf にコピーして流用しました。 そして次のものを書き加えます。

network sit1
route 2001:xxx:yyy::/64

最後に

以上でIPv6ルータの設定は完了です。 その辺のIPv6対応のウェブブラウザで KAMEのページの亀が踊っていればうまく開通しています。

管理人: あまの toshi[あっとまーく]sheela.com