-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
yggdrasil's IP seems unroutable when existing network interfaces contain v6 address #76
Comments
Alright, after messing around a bunch with android's wacky routing tables; it turns out that it makes heavy use of policy routing. The output from 'ip rule' changes between the "Block connections without VPN" being enabled and disabled, while the individual routing tables (shown by 'ip -6 route show table tun0' and 'ip -6 route show table wlan0' stays the same. The tun0 table looks reasonable:
The diff between "Block connections without VPN" being disabled and enabled:
I have no idea what the firewall marking stuff is (and android's iptables is.. wild). However, it does appear that adding a rule after 12000 or so to check the tun0 table is the way to go. So I tried the following (with "Block connections without VPN" disabled): 'ip -6 rule add from all lookup tun0 pref 12999' Now it appears to work. I can connect to random sites through wlan0 as expected, and also connections to 200::/7 or whatever go through tun0 as desired. I'm not sure how proper this is, though. |
On my LineageOS phone with Yggdrasil 0.1-019 from f-droid, I've run into the following problem.
Phone yggdrasil IP: 202:[...]:5131
Debian host 'hm90' (wired, on ethernet) yggdrasil IP: 200:[...]:dbd7
Phone has Yggdrasil enabled showing up as the only VPN, "Always-on VPN" enabled, and "Block connections without VPN" disabled.
There are multiple yggdrasil peers seen by the phone, and I can ping them from an android terminal (and in the other direction, ping the phone's yggdrasil IP from the other peers), but trying to contact them over TCP fails. In particular, I have an HTTP service running on a Debian host (the dbd7 IP above) called 'hm90' that is unreachable with standard routing from the phone. Again, I can use ping6 to reach it, but none of the browsers or other apps work. Here's what happens from an adb console:
Note that the IPv6 address 2607:fb91:[...]:be14 that it's attempting to use is bound to wlan0, and is a real (non-yggdrasil) routable address issued by my ISP. I'm not sure how android handles routing tables, but 'ip -6 r' is empty. So this appears to be a routing issue. If I manually specify the interface to use, it will actually work:
Unfortunately with other apps, I can't manually specify the path for a TCP connection to take. However, I can make it work by enabling "Block connections without VPN", so that all packets are routing through the tun0 interface. That is not what I want, though, as this is a private yggdrasil network and I don't have any kind of routing/tunneling through it; in other words, enabling "Block connections without VPN" allows me to make TCP connections to the yggdrasil 'hm90' host, but then I can't reach any normal internet hosts (like www.google.com). So that's not really a solution.
The text was updated successfully, but these errors were encountered: