Wireguard IPv6接続が機能しません。

Wireguard IPv6接続が機能しません。

Ubuntuといくつかのクライアントで実行されている仮想マシンにWireguardサーバーを設定しました。また、同じ仮想マシンにPi-Holeをインストールし、パブリックIPアドレスを使用してクライアントでDNS解決を構成しました。 IPv4は正常に動作しますが、IPv6はそうではありません。これは私のサーバー構成です。

# Server Configuration
[Interface]
Address = 172.16.0.1/27, fc00:xxx:xxx::1/64
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ListenPort = 51820
PreUp = iptables -t nat -A POSTROUTING -s 172.16.0.0/27  -o eth0  -j MASQUERADE; ip6tables -t nat -A POSTROUTING -s fc00:xxx:xxx::/64 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 172.16.0.0/27  -o eth0 -j MASQUERADE; ip6tables -t nat -D POSTROUTING -s fc00:xxx:xxx::/64 -o eth0 -j MASQUERADE

# Laptop 1
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
AllowedIPs = 172.16.0.2/32, fc00:xxx:xxx::2/128

# Phone
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 172.16.0.3/32, fc00:xxx:xxx::3/128

# Laptop 2
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 172.16.0.4/32, fc00:xxx:xxx::4/128

私の顧客の構成は次のとおりです。

[Interface]
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Address = 172.16.0.4/27, fc00:xxx:xxx::4/64
DNS = <VM_Public_IP>, 2001:4860:4860::8888

[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Endpoint = <VM_Public_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0

したがって、WireguardサーバーのIPv6アドレスに対してpingを実行できますが、クライアントが2001:4860:4860::8888IPv6 DNSサーバーとして構成されているGoogleのIPv6 DNSに対してpingを実行することはできません()。 IPv6設定の問題のようです。次のコマンドを使用して、サーバー側でipv6転送を有効にしました。

$ sudo sysctl -p /etc/sysctl.d/wireguard.conf  
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

[編集]:明らかに、VMには別のIPv4インターフェイスとIPv6接続用の別のインターフェイスがあるので、これを行いました。ping6 ipv6.google.com -I eth0/1/2そして、eth2にはIPv6接続しかないことがわかりました。そのため、サーバーでIPv6ルールを変更し、iptablesサーバーとクライアントの両方で-s fc00:xxx:xxx::/64 -o eth2Wireguardを再起動した後、IPv6接続が機能しました。sudo systemctl stop wg-quick@wg0 && sudo systemctl start wg-quick@wg0

これが将来的に誰かに役立つことを願っています。

ベストアンサー1

おすすめ記事