I am experiencing hit-or-miss connectivity through wireguard when connected to a specific, unsecured, public WiFi from iOS devices. Meaning, I first connect to the public WiFi at which point, wireless works fine, websites load, etc. but when I subsequently initiate a wireguard connection, most of the time, the traffic flows stops due to a connectivity issue. If I fiddle with toggling the WG connection off then on several times, it eventually works.
This is true for:
- my OW home router running wireguard
- a totally separate OW router running wireugard
- a commercial VPN provider also running wireguard
The fact that the the issue is present on all VPN providers (my own and a commercial VPN), is suggestive that something on the public WiFi to which I am connected is misconfigured or their hardware is just flaky, etc.
In googling, some suggestions about lowering the MTU value to improve stability are mentioned. I tried lowering the MTU size on the interface to 1440 and then again to 1280 but neither made a difference. Wondering if more experienced people here have some suggestions or thoughts.
For reference, relevant bit of /etc/config/network
:
config interface 'wg0'
option proto 'wireguard'
option listen_port '4500'
list addresses '10.200.200.200/24'
option private_key 'xxx'
option delegate '0'
option mtu '1440'
...
For reference, here is what I see in the iOS wireguard logs:
wireguard logs
[NET] peer(UDe2…Jcno) - Retrying handshake because we stopped hearing
back after 15 seconds
[NET] peer(UDe2…Jcno) - Sending handshake initiation
[NET] peer(UDe2…Jcno) - Handshake did not complete after 5 seconds,
retrying (try 2)
[NET] peer(UDe2…Jcno) - Sending handshake initiation
[NET] Network change detected with unsatisfied route and interface
order [en0, utun2, pdp_ip0]
[NET] DNS64: mapped 75.xxx.xxx.xxx to itself.
[NET] UAPI: Transition to peer configuration
[NET] peer(UDe2…Jcno) - UAPI: Updating endpoint
[NET] Routine: receive incoming IPv4 - stopped
[NET] Routine: receive incoming IPv6 - stopped
[NET] Routine: receive incoming IPv4 - started
[NET] Routine: receive incoming IPv6 - started
[NET] UDP bind has been updated
[NET] peer(UDe2…Jcno) - Sending keepalive packet
NET] peer(UDe2…Jcno) - Failed to send data packet write udp4
0.0.0.0:49729->75.xxx.xxx.xxx:51820: sendto: network is unreachable