<div>Thanks so much for setting me straight. I've gotten IPv6 working over my IPv4 tunnels to ensure that IPv6 traffic can't leak out while I'm using Wireguard. Since my ISP uses SLAAC to hand out /56s, I have a /64 pointed at the local subnet where my VPN server is. From there, the VPN clients use my ULA prefix to talk to the server. The server masquerades these ULA addresses to its global address.<br></div><div><br></div><div>For anyone interested in the config I'm using, please look below. I had to enable IPv6 forwarding on the wireguard server. In Ubuntu (and probably other distros), this disables Stateless Address Autoconfiguration based on Router Advertisements on the server, which would have prevented the server from getting a global IPv6 address from my ISP. To enable IPv6 forwarding and SLAAC, I also had to add the following to my /etc/network/interfaces file to accept router advertisements even with IPv6 forwarding turned on:<br></div><div><br></div><div>iface ens3 inet6 auto<br></div><div>        accept_ra 2<br></div><div><br></div><div><br></div><div>SERVER:<br></div><div>-----------------------------------------------------------------------------------<br></div><div>[Interface]<br></div><div>Address = X.X.X.X/24, fdXX:XXXX:XXXX:XXXX::1/64<br></div><div>ListenPort = PORT<br></div><div>PrivateKey = KEY<br></div><div><br></div><div><div>[Peer]<br></div><div># PEER NAME<br></div></div><div>PublicKey = KEY<br></div><div>AllowedIPs = X.X.X.X/32, fdXX:XXXX:XXXX:XXXX::2/128<br></div><div>-----------------------------------------------------------------------------------<br></div><div><br></div><div>CLIENT:<br></div><div>-----------------------------------------------------------------------------------<br></div><div>[Interface]<br></div><div>Address = X.X.X.2/32, fdXX:XXXX:XXXX:XXXX::2/128<br></div><div>PrivateKey = KEY<br></div><div>DNS = X.X.X.X, X.X.X.X<br></div><div><br></div><div>[Peer]<br></div><div>PublicKey = KEY<br></div><div>AllowedIPs = 0.0.0.0/0, ::/0<br></div><div>Endpoint = SERVER:PORT<br></div><div>PersistentKeepalive = 21<br></div><div>-----------------------------------------------------------------------------------<br></div><div><br></div><div><br></div><div class="protonmail_signature_block protonmail_signature_block-empty"><div class="protonmail_signature_block-user protonmail_signature_block-empty"><br></div><div class="protonmail_signature_block-proton protonmail_signature_block-empty"><br></div></div><div><br></div><div>‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐<br></div><div>On Saturday, September 15, 2018 5:41 PM, David Cowden <david.w.cowden@gmail.com> wrote:<br></div><div><br></div><blockquote type="cite" class="protonmail_quote"><div><div dir="auto">I haven't actually tried that specific scenario but I don't see why the tunnel wouldn't "come up". I mean really it's up when the interface is up and the tunnel "connection" (it's UDP) isn't actually "established" (in a NAT/firewall sense) unless data is sent. You can have an interface configured for IPv6 on an "IPv4 only" network, it just won't get responses to its router solicitations so the kernel (Linux, at least--BSDs do this in userspace) won't configure routes for IPv6 traffic. If you look at your physical interfaces, you'll probably notice they all have IPv6 link-local addresses unless you've actually turned off IPv6 support in the kernel<br></div><div><br></div><div dir="auto">The reason your IPv6 traffic goes out unencrypted on dual stack networks is because the default route for IPv6 traffic is not the Wireguard interface, but rather one of the physical ones. All you need to do to send your IPv6 traffic through the tunnel is configure the interface to be part of the IPv6 network you're trying to reach, and of course allow an IPv6 address from the client in the server config. In fact, if you configure your interface with IPv6 address(s) and a route pointing at the wg interface, you can even send IPv6 traffic on an IPv4 only tunnel provided your server can route IPv6 traffic. If you're using wg-quick, simply adding an IPv6 address to the interface and allowing all IPv6 traffic from the server peer would suffice.<br></div></div><div dir="auto"><br></div><div><div class="gmail_quote"><div dir="ltr">On Sat, Sep 15, 2018 at 11:01 AM Lane Russell <<a href="mailto:lanerussell@protonmail.com" target="_blank">lanerussell@protonmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>What is the best practice for configuring Wireguard to work over diverse networks, including IPv4-only, IPv6-only, and dual-stack?<br></div><div><br></div><div>For example, my current configuration only deals with IPv4. When I roam from an IPv4-only network to a dual-stack, my device routes IPv4 traffic over the WireGuard interface, but IPv6 traffic goes out unencrypted.<br></div><div class="m_-8819490885934413545m_-9031858115316408682protonmail_signature_block m_-8819490885934413545m_-9031858115316408682protonmail_signature_block-empty"><div class="m_-8819490885934413545m_-9031858115316408682protonmail_signature_block-user m_-8819490885934413545m_-9031858115316408682protonmail_signature_block-empty"><br></div><div class="m_-8819490885934413545m_-9031858115316408682protonmail_signature_block-proton m_-8819490885934413545m_-9031858115316408682protonmail_signature_block-empty"><br></div></div><div><br></div><div>My VPN server is IPv6-capable, so I could enable it. However, will the client tunnel fail to come up on an IPv4-only network if the config contains IPv6 addresses?<br></div><div>_______________________________________________<br></div><div>WireGuard mailing list<br></div><div><a href="mailto:WireGuard@lists.zx2c4.com" target="_blank">WireGuard@lists.zx2c4.com</a><br></div><div><a href="https://lists.zx2c4.com/mailman/listinfo/wireguard" rel="noreferrer" target="_blank">https://lists.zx2c4.com/mailman/listinfo/wireguard</a><br></div></blockquote></div></div></blockquote><div><br></div>