pfでv6NATしてみる

Posted on 2011/02/21(Mon) 21:22 in technical

今までv6ってほらグローバルだし!の妄想にとりつかれていたので、pfでv6NATしてフレッツ・スクウェアv6に抜けていくことを、ちっとも考えていなかった。

そろそろv6NAT使いたい状況ってのも増えてくるはずだし…と、思っていたら、手元の環境はフレッツ・スクウェアv6にproxyで抜けてた。NATしろよ俺。

設定を書き散らかそうと思ったけど、実はpf.confに以下を書き足しただけだった。:

#-----------------------------------------------
# IPv6 NAT
#-----------------------------------------------
#binat on $ra_if inet6 from 2001:380:e08:f7::/64 to 2001:c90::/32 -> 2001:c90:XXXX:XXXX::/64
nat on $ra_if inet6 from 2001:380:e08:f7::/64 to 2001:c90::/32 -> 2001:c90:XXXX:XXXX::3

あとは pfctl -f /etc/pf/pf.conf

ISPを変更した場合のことを考えておくと、アドレス部分を変数で表現したほうがいいと思うけど、

NAPT後のアドレスは($eth0)みたいな表記をすると、fe80::のアドレスにラウンドロビンし始めたりするから、静的にアドレス範囲を設定しておく方がいいと思うのですよ。

あ、#binatの行はおまけなので不要です。

で、割とこんなんなる。:

# pfctl -sn \grep inet6
nat on eth0 inet6 from 2001:380:e08:f7::/64 to 2001:c90::/32 -> 2001:c90:XXXX:XXXX::3
# pfctl -ss \grep c90
all tcp 2001:c90:ff:1::1[80] <- 2001:380:e08:f7:d14b:87cc:5a4e:4f5c[4837] ESTABLISHED:ESTABLISHED
all tcp 2001:380:e08:f7:d14b:87cc:5a4e:4f5c[4837] -> 2001:c90:XXXX:XXXX::3[56357] -> 2001:c90:ff:1::1[80] ESTABLISHED:ESTABLISHED
all tcp 2001:c90:ff:1::1[80] <- 2001:380:e08:f7:d14b:87cc:5a4e:4f5c[4838] ESTABLISHED:ESTABLISHED
all tcp 2001:380:e08:f7:d14b:87cc:5a4e:4f5c[4838] -> 2001:c90:XXXX:XXXX::3[55163] -> 2001:c90:ff:1::1[80] ESTABLISHED:ESTABLISHED

当然なんだけど、戻ってくるパケットのNSに応えるために、ルータのIFにNAPTしたアドレス振っておかないといけない。

安易にBINATの設定入れると、行きはいいんだけど帰りにNSがウロウロして終わる。

これだからRAは...って知ったかぶりしてみるよ!

今日はここまで。