6to4 on MacOS X

基本的に,ip6configというスクリプトで設定できます.手動で設定しても,それほど手間はかかりませんが….

IPv6

IPv6が無効になっている場合は,ip6コマンドで有効・無効を設定できます.デフォルトで有効だったような気もするので,あまり気にする必要は無いでしょう.

これも,ip6configで出来るようです.

6to4

FreeBSD等と同じようにstfインターフェイスが用意されています.手動で設定しても良いですが,ip6configというPerlで書かれたスクリプトが用意されているのでこれを使いましょう.

/etc/6to4.confで設定します.v6_netは0にしておいた方が,::でたくさん省略できるので嬉しいかもしれません.

# /etc/6to4.conf

$ip6mode="autohost";
$in_if="en0";                   # LAN側のインターフェイス

$v6_net="0";                    # 2002:x:x:v6_net::
$v6_innernet="2";               # 2002:x:x:v6_innernet::
$v6_prefixlen=16;               # Change for more
$hostbits6=":1";                # should be determined via MAC of $in_if

$peer="kddilab.6to4.jp";        # 最寄のリレールータ(国内ならkddiの試験サービスがお勧め)

あとは,ppp0に振られているグローバルアドレスを6to4に使うなら,

ip6config start-stf ppp0

で,stfインターフェイスを設定できます.

ip6configのスクリプトに問題があるので,場合によっては失敗するかも知れません.具体的には,グローバルアドレスのチェックで「grep -v "10.*.*.*"」なんてやってるので,X10.XXX.XXX.XXXというIPを持っていると正常にIPv6アドレスを生成しません.というわけで,「grep -v " 10.*.*.*"」という風にスペースを入れて修正.

GUIでも6to4の設定は出来ますが,細かい設定は出来ないようです.

rtadvd

MacOSサーバをルータにして,LANをインターネットに接続しているときは,ルータ広告デーモンを起動すればLAN内でもIPv6が使えるようになります.

これも,ip6configスクリプトで起動できます.en0というインターフェイスに繋がったLANにルータ広告を流したいなら,

ip6config start-rtadvd en0

とすると,forwardingを有効にしても良いかと聞かれるので,確認してyesと答えると起動します.

毎回,確認するのが面倒な場合や,スクリプト中に書きたい場合は,

echo 'yes' | ip6config start-rtadvd en0 > /dev/null

というふうな感じに.

ip6configを使いたくない場合は,

sysctl -w net.inet6.ip6.forwarding=1
rtadvd en0

でいけると思います.

??

ここまで書いておいてアレですが,どうもMacOS Xをルータにしておくと,LAN側から,とあるパケットを送りつけると,ネットワークが全部落ちて,OSの動作がおかしくなるバグが存在する気がします.ちゃんと調べてはいませんが,何度か試した限りだとそのマシンでは再現率100%…….

この文書の履歴

Copyright © 瓶詰堂 all rights reserved.