[wireguard-apple] [iOS] 464xlat networks and On-demand roaming issue

Kristof Mattei kristofmattei at outlook.com
Sun Oct 3 22:15:25 UTC 2021

I have an issue with the wireguard-apple on 464xlat connecting to a DNS endpoint with both an A and an AAAA record.

The following line: https://git.zx2c4.com/wireguard-apple/tree/Sources/WireGuardKit/DNSResolver.swift#n81 causes WireGuard to prefer the IPv4 address.

Is there any reason why WireGuard prefers the IPv4 address? 

Why is this causing trouble? But this is what happens: 

When connecting to IPv6 the IPv4 address gets mapped to an IPv6 address which then acts as an IPv6->IPv4 proxy. The IP looks like [2607:7700:0:1a::17f3:f750]:51820.

This causes issues when roaming from my home WiFi (on which WireGuard is disabled) to cellular (on which WireGuard is set to on-Demand).

The initial connection that is set up for some reason does not work. There are reports about this on Reddit, e.g. https://www.reddit.com/r/WireGuard/comments/nk2o7m/anyone_got_it_working_with_tmobile_lte/

I can fix it by setting the endpoint to the actual IPv6 address, and then it works like a charm, but that fails when I connect to a non-IPv6 network.


More information about the WireGuard mailing list