L2TP/IPsecを使うので、Kernelのパラメータを修正してbuild。これはIPsecを使おうとしたときには毎度おなじみの話なので、ここでは省略。詳しくは、[FreeBSD] L2TP/IPsecサーバを立てる | 雑記帳などを参照。
次。mpd5の話。インストールについては、L2TP/IPsecをやるときと同じなので、略。IPv6をばら撒くための、設定について。IPv6 Part 6: Configuring An IPv6 Network Assigned Over PPPoE Using FreeBSD » mmacleod.caがとても参考になる。
/usr/local/etc/mpd5/mpd.conf の内容。
startup:
set user kanri irnak admin
set console self 127.0.0.1
set console open
log +ipcp +ipv6cp +lcp +link +auth +ecp +ccp
set console enable logging
default:
load l2tp_server
l2tp_server:
create bundle template B4
set bundle enable ipv6cp
set iface idle 1800
set iface mtu 1454
set iface enable tcpmssfix
set iface up-script /usr/local/etc/mpd5/mpd.linkup
set iface down-script /usr/local/etc/mpd5/mpd.linkdown
create link template L4 l2tp
set link action bundle B4
set link enable multilink
set auth enable system-acct
set link keep-alive 10 60
set link disable chap eap
set link enable chap-msv2
set link mtu 1454
set link mru 1454
set link enable incoming
ポイントは、ipv6cpを有効にしていること。IPv4の割り当ては行わないので、ipcpは記述しない。つながったらroutingやfirewallの設定の変更が必要になるので、それらは up-sciptで指定した /usr/local/etc/mpd5/mpd.linkup に書く。
1つ目の引数がInterface(ng0とかng1とか)なので、
/sbin/ifconfig $1 inet6 割り当てるアドレス prefixlen 割り当てるprefix alias
とかしてあげればOK。ルーティングは適当に。例えば、P2Pだからってprefixを長くしてあげると、アドレスが一番マッチしたルートを使おうとするので、ルーティングを意識しなくてもよきに計らってくれたりする。同様に、切断されたときの処理を down-scriptで指定した /usr/local/etc/mpd5/mpd.linkdown に書く。
クライアントのMac OSX側。こちらは、Hiroaki's blog: LinuxのVPN ServerでIPv6をバラまくと同じ。
Wifiスポットなど、まだIPv6を割り当ててくれないサービスも多く、6to4が通らないことも多いので、こういう無理やりな方法がまだまだ必要。