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%…….
この文書の履歴
- 2005-10-16 公開