-
-
Notifications
You must be signed in to change notification settings - Fork 159
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
IPv4 broken on GoogleFi LTE #554
Comments
T-Mobile (Google Fi's network operator) is IPv6-only, with IPv4 support via 464Xlat (which also kind of relies on DNS64; ref). |
I have run some requested debugging commands via Some additional notes from further testing:
Logs (edited to remove private data): rethink_lte_log.txt |
Thanks for sharing the output of various We are blocked by implementing a proper ICMP gateway before we can address this issue. Regardless, it is a priority item for us.
We do have a way to capture the DNS64 prefix from the underlying DNS server, but it isn't going to be in any of the
The protos label there show the underlying network's protocols, not that of Rethink's (I mean, Rethink's protos would be exactly as chosen with the "Choose IP Version" setting, if that makes sense?).
Yep, we don't add IPv4 routes in Auto mode if the underlying network's IPv4 routes are not globally route-able. Somehow (even if it should not), rethink-app/app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt Lines 272 to 290 in adf8b89
|
That's good to know. I suspect quite a few users will run into this issue; this seems likely to be a dupe for instance: #558
Sure, I can test stuff as necessary. I did manage to get a self-signed build working with Android Studio, so if necessary I can build and test proposed patches. |
In |
We've attempted fixing this (using "connectivity probes"; code) in |
@ignoramous Nope, that's a fail here. Network mode is "auto". Sites with IPv6 addresses work, but I can't connect to any IPv4 address. Sites that are IPv4 only (e.g. twitter.com) fail. |
Sigh. Two theories:
The MTU of
Second is, Android doesn't even inform Rethink about the presence of the v4 network because the said v4 network doesn't meet the Footnotes
|
Just for clarification - this revision to the auto mode behavior is supposed to switch to IPv4 automatically when dual-stack results in a broken connection, not fully fix 464xlat?
Oops. I probably should have tested that after the upgrade, but in fact it appears to be broken for me. When I have Internet via LTE, and try to enable Rethink with IPv4 set, it hangs on "waiting" forever. If I have WiFi, enable it, and then switch off the WiFi, Rethink doesn't notice that I've switched networks (?!), so it says "protected", but I can't access anything over either IPv4 or IPv6! I didn't notice this because I've been using the auto mode for a while I think, since I'm on WiFi 99% of the time. Setting the mode explicitly to IPv6 gets me "protected" under LTE, but (unsurprisingly I think) this means I can't contact IPv4 addresses. Probably this is why your new "auto" mode is negotiating IPv6 rather than IPv4? If it would help, I could run the debugging commands while in IPv4 mode later today. Although note that the only way I'll be able to do that is to start in WiFi mode and then switch. (In fact I may have done this accidentally in the past, this might affect the debug logs in important ways...) |
Hm. In Auto mode, if you've got IPv4 connectivity, then IPv4-only servers (ex: twitter.com) should be reachable, as 464Xlat exists. In other words, you should see "protos: IPv4, IPv6" in Rethink's
I think, this is separate bug related to caching DNS responses (have you enable
This is worrying. What does "protos" say? Also, anything in the Network Log at all or nothing shows up?
What does "protos" say in this case? This scenario is even more worrying! Essentially nullifies all our theories. Does switching to System DNS help at all in these scenarios? May be DNS64 isn't working as expected. Or Rethink is breaking outgoing NAT64 (this is a possibility, but I hope not).
Looks like it, as in Rethink isn't able to ascertain IPv4 connectivity at all and hence doesn't setup routes for it. But that doesn't make sense since the 464Xlat interface should respond to ICMPv4
Since you're technical enough, you can observe packet-capture (Configure -> Settings -> Packet Capture -> Output to Logcat and I've asked @hussainmohd-a to create a test app to send across to you, so that we can get to the bottom of it before your patience wears out (: |
Edit: I'm leaving the following in case it turns out to be useful for some reason, but the issue is most likely unrelated, as I detail in the next comment.
Hmm. Two points, after some more experimenting.
I don't think this totally nullifies our theories because this is a new issue. There was a previous version of Rethink (not sure if it was the last version before the latest update or not) where I could at least get IPv4 connectivity with the IPv4 mode setting.
Nope, no change.
Not totally sure what you mean by the network log. Note that I am not using the firewall mode, only DNS, for these tests, so if this log is related to that, that explains why I don't see it. I do see a DNS log entry for sites I request, and furthermore these are successful requests (even for domains that should not be cached!).
pcap.txt doesn't look terribly useful to me, but maybe it's more obvious what is happening to you. This shows a few failed attempts to connect (hanging on "waiting"), and eventually I try Maybe I'll try downgrading Rethink to see if I can pinpoint the regression. It's possible the issue I'm facing here in IPv4 mode isn't part of the larger issue with 464xlat. |
Ugh. This may have been a wild goose chase, sorry. I ended up rebooting the phone after downgrading didn't fix it, and the issue with IPv4 over LTE went away. So what I see is:
I'm not sure what could have caused this. Maybe it's that I have another VPN app (Wireguard) that I occasionally use to connect to my home network. I don't know how this could have caused this problem, since only one VPN app is ever active at a time. I haven't succeeded in recreating the issue. |
With Configure -> Network -> Perform connectivity checks turned ON (if Choose IP version is set to Auto), one user has confirmed that both IPv6 and IPv4 work on networks that do 464Xlat: #1543 (comment) Without it, only IPv6 does (like reported above). The issue without Rethink doing its own connectivity checks (and instead relying on Android's) is documented here (where Android only reports IPv6 network but does not report the "stacked" IPv4 |
afontenot says,
This has also been known to happen with Google Fi / United States.
A couple things come to mind:
The text was updated successfully, but these errors were encountered: