Wireguard で v6を通す
Wireguard でv6 通信も通したい。
設定の流れ。
基本的には、v4 アドレスを足すのと同じ手順。
今回は、ルーター側がLinux(openwrt)なので、ルーター側のNAT/FW設定はiproute2/ip6tablesコマンドです。
ルーター側
ルーター側wg0に、v6ローカルアドレスを追加、接続先のv6 アドレスを追加
#v6 アドレス追加 [Interface] Address = 172.16.4.1/24, fd00::801:1/64 #v6 アドレス追加 [Peer] AllowedIPs = 172.16.4.1, fd00::801:3
PC側(クライアント側)
# v6 アドレス追加 [Interface] Address = 172.16.4.3/24, fd00::801:3/64 # v6 アドレス追加 [Peer] AllowedIPs = 0.0.0.0/0, ::/0
単純に ローカルなv6アドドレス (サイトローカル/ユニークローカル)を仕込んでいく。
これで、通信できるようになる。
ルーター側にNATを仕込み、v6 NATで出ていく。
ルーター側では、v6 NATを仕込んであげる。
LAN_IF=wg1 WAN_IF=eth1 ip6tables -I FORWARD -i $LAN_IF -o $WAN_IF -j ACCEPT ip6tables -I FORWARD -i $WAN_IF -o $LAN_IF -j ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED ip6tables -t nat -I POSTROUTING -o $WAN_IF -d ::/0 -j MASQUERADE
経路の追加
v6の経路を確認。
ip -6 route show
経路がない場合は、経路を追加してあげる(通信相手を考えて経路追加)
WAN_IF=eth1 GW=$( [[ $(ip neigh show dev $WAN_IF ) =~ (fe80[0-9a-f:]+) ]] ; echo ${BASH_REMATCH} ) echo $GW ip -6 route add from ::/0 to 2001:a7ff:ff63:1::a via $GW dev eth1 ip -6 route add from ::/0 to 2001:a7ff:ff47:101::1 via $GW dev eth1
疎通確認
フレッツ・クラブのIPアドレスを使って通信を確認しよう。
www.flets-west.jp 2001:a7ff:ff47:101::1 assv.asc.flets-west.jp 2001:a7ff:ff63:1::a
この2つが通れば通信ができるようになる。
wireguard でipv6 通信
wireguard でもv4 と同じ箇所にv6 アドレスを追記すればいいとわかった。
単純な方法で、なんとか、v6 NAT で通信ができるようになる。同じにかけるという点が大きい。
v6 nat について
むかしは、ipv6 ではNATは不要になるとか、なんとか言ってる人もいたし、それを突き詰めてv6 ではNATできないとかいうトンデモな設問を見たこともあるが。
v6 でも VPNのようなL3接続はNATでないと接続がめんどくさい(v4と同じ手法でかけない)。なので、やっぱりNATはあったほうがいい。