FreeBSDのpfで6to4

さくらインターネットVPSで6to4しようとしたが、pfに慣れていないので時間を食ってしまった。備忘のためpf.confを載せておく。

ポイントは、物理I/Fでipv6を通しつつ、トンネルI/Fで許可プロトコルを書くところにあった。

(1/12更新: sshのアタックが多かったので、rate limitを入れた)

ext = "em0"
tun_6to4 = "stf0"

set block-policy drop
set loginterface $ext
set skip on lo0


scrub in all
scrub out all random-id

block in log
pass out quick

antispoof quick for { lo0 $ext $tun_6to4 }

table <ssh_reject> persist
block in quick from <ssh_reject>

pass in on $ext inet proto icmp from any to $ext
pass in on $ext inet proto tcp from any to $ext port ssh keep state (max-src-conn-rate 3/60, overload <ssh_reject> flush global)
pass in on $ext inet proto { tcp udp } from any to $ext port domain
pass in on $ext inet proto ipv6 from any to $ext

pass in on $tun_6to4 inet6 proto icmp6 from any to $tun_6to4
pass in on $tun_6to4 inet6 proto tcp from any to $tun_6to4 port ssh
pass in on $tun_6to4 inet6 proto { tcp udp } from any to $tun_6to4 port domain