(My phone is rooted and runs Android 5.1)
How can one change the DNS addresses of mobile data (and persistently, if possible) without the requirement of an app?
Android Enthusiasts Stack Exchange is a question and answer site for enthusiasts and power users of the Android operating system. It only takes a minute to sign up.Sign up to join this community
I did not find a way to reliably do it without an app.
I often use OpenDNS Family Shield, but sometimes it blocks me to visit some particular hacking site and then I need to quickly and easily change the DNS servers.
I used to use Set DNS but it stopped to work in Android 4.3 and further, so I created Override DNS, a new app which mimics Set DNS' behaviour, but it's updated to work even in Lollipop. It has some other nice feature like a PIN protection ad a Wi-Fi SSID filter, too.
The only way I can see to do it without an app is something like an
iptables rule to redirect any traffic going to udp/53 to some other ip. A similar procedure is shown in a XDA thread.
I paste here the
iptables rules for completeness (I did not tested them)
$IPTABLES -t nat -D OUTPUT -p tcp --dport 53 -j DNAT --to-destination 126.96.36.199:53 || true $IPTABLES -t nat -D OUTPUT -p udp --dport 53 -j DNAT --to-destination 188.8.131.52:53 || true $IPTABLES -t nat -I OUTPUT -p tcp --dport 53 -j DNAT --to-destination 184.108.40.206:53 $IPTABLES -t nat -I OUTPUT -p udp --dport 53 -j DNAT --to-destination 220.127.116.11:53
Everything directed from the Android device to any IP, port UDP and TCP 53 is redirected to
18.104.22.168 which is one of OpenDNS' DNS server.
These commands should be placed in a script which is run at every device boot. That functionality depends on your specific ROM. I don't know if something similar can be done in a stock ROM without using an app. Override DNS solves this problem, too.
This info is from 2014. But it might still work. I am not in the position to test it at the moment, but since you are rooted. You could try adding the dns settings to the build.prop file and see if it sticks. Adding the following to the build.prop file should add google as your DNS server.
net.rmnet0.dns1=22.214.171.124 net.rmnet0.dns2=126.96.36.199 net.dns1=188.8.131.52 net.dns2=184.108.40.206
Taken from this post on the Nexus 5 forums over on XDA. That post can be found here. Item number 21 is the DNS settings.