我想永久更改我的dns,最好使用init脚本。

到目前为止,这是我尝试过的所有方法:

setprop net.rmnet0.dns1 8.8.8.8(已过时)

ndc resolver setifdns rmnet0 8.8.8.8 8.8.4.4(这似乎也已经过时了)

这似乎是正确的方法:

ndc resolver setnetdns <netID> <domains> <dns1> <dns2>

但是我不知道如何找到rmnet0的netID,以及如何将其放入域部分?

可能有更好的方法,例如更改某些文件或应用补丁。

最佳答案

要执行的正确命令取决于所使用的Android版本。由于这个答案很晚,我假设您不再使用5.1.1(或6.0),答案是

ndc resolver setnetdns <netId> <domains> <dns1> <dns2> ...
ndc resolver clearnetdns <netId>
ndc resolver flushnet <netId>


其中<netId>就是rmnet0。可以在AFWall Wiki中的here中找到大多数版本的列表。

请注意,直到下一次从WiFi切换到移动数据(我已经尝试过)之后,单独执行第一个命令才会生效。不知道随后的两个命令是否会卡住–恐怕它像DHCP一样工作,因此在下一个连接中,无论如何该值都会被覆盖。如果是这样,则您需要在每次连接更改时都运行该脚本(即,在激活移动连接时收听广播并运行该脚本)。

08-16 12:47