The bad practise would be to entirely disable IPv6. #ShittySysAdmin
post
IPv4 and IPv6 are two different network stacks. Your IPv4 stack is hidden behind wireguard, but not the IPv6 one.
The correct way to fix your issue is to setup a second witeguard tunnel for IPv6, and route IPv6 traffic through it.
Edit: many comments advise to block outbound IPv6 traffic. Don't do that! It will add latency to all your requests as you will have to wait for them to timeout.
Unfortunately I can't change the tunnel as it is provided by ProtonVPN.
Apparently they advise to disable IPv6. I'm a bit disappointed 😞
If you disable IPv6 at the kernel level there's no extra latency as nothing even tries to connect to an IPv6 address. It's a shame to have to do it, but does fix the issue.
For me, it was rather the opposite: when dropping IPv6 packets, applications would often hang and behave weirdly. Disabling IPv6 completely would mean they'd stop trying to do anything on IPv6 and function well.
My ISP doesn't even support IPv6
Wireguard easily supports dual stack configuration on a single interface, but the VPN server must also have IPv6 enabled. I use AirVPN and I get both IPv6 and IPv4 with a single wireguard tunnel. In addition to the ::/0 route you also need a static IPv6 address for the wireguard interface. This address must be provided to you by ProtonVPN.
If that's not possible, the only solution is to entirely disable IPv6.
The true enterprise solution is to disable IPv6, if you disable IPv4 you might be surprised to see how many sites and services, even those run by large companies require IPv4.
I just disable ipv6 on my router to simply my firewall and such.... Won't use it until necessary
This is a real backwards approach to this.
You can either route IPv6 through the tunnel, or if the tunnel doesn't support it, you have to block it somehow if you don't want it going out to the Internet. You can do that by creating a firewall rule to block it on your host or network, or by disabling IPv6 entirely at the host or network level.
You can either route IPv6 through the tunnel
That's what I am trying to do with the ::/0 option but it doesn't seem to work. I am guessing because the tunnel itself doesn't have IPv6?
Add a dummy IPv6 on the WireGuard interface, like a completely random fd00::/128 address on it so it thinks it's IPv6 enabled. It'll then just go nowhere as the remote end won't accept it. You can then drop it at the firewall level before it goes into the tunnel to save some bandwidth.
Thanks for the suggestion! It gave me the idea to try setting the connection profile's IPv6 setting to either Link Local or Ignored. Both those options, along with the ::/0 in AllowedIPs, seem to work according to ipleak.net, but I am unsure what the bigger ramifications of this change are.
Using networking namespaces may be an option https://gist.github.com/zenofile/d3ada8a1becb8c88aadffa68cdb18350
I use a magisk module to disable ipv6
decreasing security for a... privacy(?) increase 🤔
We're not talking about privacy in that context here
We're trying to patch a leaking ipv6 which I gave my solution to.
Don't use it if you don't like it lmao
I suppose but my point was that rooting your device decreases security immensely via crippling the android security model.
all 45 comments