はじめに
今までv6ってほらグローバルだし!の妄想にとりつかれていたので、pfでv6NATしてフレッツ・スクウェアv6に抜けていくことを、ちっとも考えていなかった。
そろそろv6NAT使いたい状況ってのも増えてくるはずだし…と、思っていたら、手元の環境はフレッツ・スクウェアv6にproxyで抜けてた。NATしろよ俺。
pfのv6NAT設定
設定を書き散らかそうと思ったけど、実はpf.confに以下を書き足しただけだった。
1
2
3
4
5
|
#-----------------------------------------------
# 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
で適用するだけ。
これで宅内の端末に割り当てられたIPv6アドレスは、フレッツの閉域網内にアクセスする時だけルーターが持っている閉域網アドレスにNAPTされる。
ISPを変更した場合のことを考えておくと、アドレス部分を変数で表現したほうがいいと思うけど、
NAPT後のアドレスは ($eth0)
みたいな表記をするとfe80::のアドレスにラウンドロビンし始めたりするから、静的にアドレス範囲を設定しておく方がいいと思うのですよ。
あ #binat
の行はおまけなので不要です。
で、割とこんなんなる。
1
2
3
4
5
6
7
|
# 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は…って知ったかぶりしてみるよ!
今日はここまで。