それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Wireguard で v6を通す

Wireguard で v6を通す

Wireguard でv6 通信も通したい。

設定の流れ。

基本的には、v4 アドレスを足すのと同じ手順。

今回は、ルーター側がLinux(openwrt)なので、ルーター側のNAT/FW設定はiproute2/ip6tablesコマンドです。

ルーター

ルーター側wg0に、v6ローカルアドレスを追加、接続先のv6 アドレスを追加

[Interface]
Address = 172.16.4.1/24, fd00:facc:810:893::1/64
                         # ↑ v6 アドレス追加
[Peer]
AllowedIPs = 172.16.4.1, fd00:facc:0810:0893::3
                         # ↑ v6 アドレス追加

PC側(クライアント側)

[Interface]
Address = 172.16.4.3/24, fd00:facc:810:893::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はあったほうがいい。