Rethink-app: DNS over HTTPS, firewall, and connection tracker for Android
github.com
github.com
In the dns-only mode, IPv6 should work.
The reason for not supporting IPv6 in the firewall-mode is two fold:
1. Firewall today simply stores classless IP address rules as strings in a sqlite table fronted by a lfu cache backed by a typical hash-map. With IPv6, I'd imagine, this won't scale. So, we need a more economical in-memory data-structure (like a crit-bit trie [0] or an art tree [1]).
2. Apparently LwIP has problems with HappyEyeballs (I personally never saw it, but got a couple of reports from users about it that it was an unrecoverable error once the connectivity was lost, and the firewall had to be restarted to get internet back up). We're in the process of replacing LwIP with gvisor/netstack now [2], just to get IPv6 support back on track.
---
That said, I'd imagine the app should work just fine over IPv6-only networks thanks to 464xlat [3]. I may be wrong, because I've never tested it on a IPv6-only network with support for it.
[0] https://github.com/agl/critbit
[1] http://www.hariguchi.org/art/art.pdf
In my case I don't use any app for that but GrapheneOS (on my Pixel device) which makes Android's Internet permission user-facing, meaning that I get to choose for every app.
One thing that I am curious of, is using this in conjunction with a separate VPN with 'Always-on-VPN', as it seems it is not compatible (asks me to disable 'Always-on-VPN').
The app can forward TCP over SOCKS5 to other installed apps that support SOCKS5 proxies (like Orbot).
That said, since half our code-base is in Golang, we plan to embed wireguard-go once we figure how to do so [1].
Currently I use NextDNS and have been looking at adding a more advanced firewall to my Android phone (mainly to block common DNS resolver IP's so apps can't go direct and then use encrypted DNS and bypass my settings)
The RethinkDNS android app is comparable to Glasswire / LittleSnitch / LuLu firewalls that are OS-specific and can help keep tabs on the network activity of installed apps and services.