オルタナティブ・ブログ > mtaneda ブログ >

中小企業の開発者は会社で何をしているのか

Mountain Lion で OCN IPv6

»

フレッツ光ネクストにより、続々とPPPoEでIPv6が利用できるようになっている中、

我が家のIPv6は、未だにOCN IPv6というトンネルサービスを利用しています。
そういえば、しばらく使っていなかったと思って、MacBook Air で接続を試みたところ、繋がらなくなってしまったので、調べてみました。
#Snow Leopard の頃は、こんなスクリプト  で接続していました。
Mac OS Xは正式サポートされていないので、
  • OS標準のpppd
  • WIDE DHCPv6 client
を組み合わせて使っていましたが、どうやら Mountain Lion は、en0 にIPv6アドレスを付与して、
デフォルトゲートウェイをpppインタフェースとしても、ルーティングしてくれないようです。
元からだっけ・・・?
解決方法は簡単で、en0にIPv6アドレスを付与せず、pppインタフェースにIPv6アドレスを付与すればいいだけです。
しかし、pppインタフェースはリンクレイヤアドレスがないため、
WIDE DHCPv6 client が動いてくれません。
そもそも Mountain Lion ではコンパイルすら通らないので、いい加減な改造をしました。
まずコンパイルできない件は、2箇所の修正が必要です。
./configure 後の Makefile のCFLAGSに-D__APPLE_USE_RFC_2292を付けて、pktinfo関連のエラーが出ないようにします。
それから、dprintf()がstdio.hとぶつかるので、dprintf_()と名前を変更しました。
これで普通に動くようになります。
次に、リンクレイヤアドレスがなくても動くように非常に滅茶苦茶な改造です。
wide-dhcpv6-20080615のconfig.c:1219の下に、sdl->sdl_alen=6; と追加しました。
もう一点、
prefixconf.c:211からの6行をコメントアウト。
滅茶苦茶強引ですね。
そして、/usr/local/にでもWIDE DHCPv6をインストールしておきます。
あとは、次の手順で OCN IPv6 が利用できるようになります。
1./etc/ppp/options を作る
#
debug
dump
noauth
updetach
novj
plugin L2TP.ppp
+ipv6
l2tpnoipsec
l2tpmode connect
remoteaddress サーバのアドレス

plugin /System/Library/SystemConfiguration/PPPController.bundle/contents/PlugIns/PPPDialogs.ppp
user ユーザ名
password パスワード
2./usr/local/etc/dhcp6c.conf.hostmode を作る
interface ppp0 {
        send ia-pd 0;
};

id-assoc pd 0 {
        prefix-interface ppp0 {
                sla-id 1;
                sla-len 0;
        };
};
3.接続
sudo pppd nodetach
sudo /usr/local/sbin/dhcp6c -c /usr/local/etc/dhcp6c.conf.hostmode -dD -f ppp0
sudo route add -inet6 default -interface ppp0
4.チェック
http://www.kame.net/ にアクセスして、亀が泳いでいればOK!
Comment(0)