MacOS X で DHCPv6 を使った動的 IPv6アドレスの割り当て

Windows では、Vista 以降、DHCPv6クライアントが内蔵されていて、DHCPv6サーバが存在するネットワークに繋げば、
すぐにアドレスを取得することができるのですが、どうも MacOS X は対応していない様子です。

そこで、ISC の DHCPクライアントを自動起動するようにして、MacOS X でも DHCPv6 を使っちゃいましょう。
MacOS X もちゃんと ra では IPv6アドレスをもらえるので、ネットワーク内でDHCPv6サーバが動いている特殊な環境人向けの設定ですね ;-)

ISC DHCPのダウンロード


% wget http://ftp.isc.org/isc/dhcp/dhcp-4.2.0.tar.gz

ISC DHCPコンパイル


% tar xzf dhcp-4.2.0.tar.gz
% cd dhcp-4.2.0
% ./configure
checking for a BSD-compatible install... /usr/bin/install -c



config.status: executing depfiles commands
% make
Making all in bind



make[1]: Nothing to be done for `all-am'.

ISC DHCPのインストール


% sudo make install

自動起動設定


% sudo mkdir /Library/StartupItems/dhclient/
Password:
% sudo cp client/scripts/macos /Library/StartupItems/dhclient/
% sudo -i
# cat > /Library/StartupItems/dhclient/StartupParameters.plist




Description
dhclient
Messages

restart
restarting dhclient
start
Starting dhclient
stop
Stopping dhclient

OrderPreference
Late
Provides

dhclient

Requires

Network

Uses

Network



^D
# cat > /Library/StartupItems/dhclient/dhclient
#!/bin/sh

. /etc/rc.common

StartService() {
/usr/local/sbin/dhclient -6 -d -nw en0 -sf /Library/StartupItems/dhclient/macos &
/usr/local/sbin/dhclient -6 -d -nw en1 -sf /Library/StartupItems/dhclient/macos &
}

StopService() {
killall dhclient
sleep 2
killall -9 dhclient
}

RestartService() {
StopService
StartService
}

RunService "$1"
^D
chmod 755 /Library/StartupItems/dhclient/dhclient

スクリプト修正

/Library/StartupItems/dhclient/macos の 133行目、151行目、176行目、186行目、の ifconfig を /sbin/ifconfig にする。


あとは再起動すれば、DHCPv6でアドレスが取得できるとおもいます。