Android DNS固定 - eiichiromomma/CVMLAB GitHub Wiki
(Android) DNS固定
ルータによって名前解決に失敗する問題の解決法 (要rooted)
自動取得(dhcp)環境でtwidroyd等で名前解決出来ない事がある。やる事はDNSをGoogleの8.8.8.8と8.8.4.4にするだけの話
※froyoで確認
/system/etc/dhcpcd/dhcpcd-hooks/20-dns.confがDNS取得のスクリプトなので,これを書き換える。
adb remount
adb shell
# cd /system/etc/dhcpcd/dhcpcd-hooks/
# cp 20-dns.conf /sdcard/20-dns.conf.org
# exit
adb pull /sdcard/20-dns.conf.org ./
としてから,pullしたファイルのファイル名を20-dns.confに変えてvi等のエディタで以下のように書き換える。
# Set net.<iface>.dnsN properties that contain the
# DNS server addresses given by the DHCP server.
set_dns_props()
{
case "${new_domain_name_servers}" in
"") return 0;;
esac
count=1
for i in 1 2 3 4; do
setprop dhcp.${interface}.dns${i} ""
done
count=1
# for dnsaddr in ${new_domain_name_servers}; do
# setprop dhcp.${interface}.dns${count} ${dnsaddr}
# count=$(($count + 1))
# done
setprop dhcp.${interface}.dns1 8.8.8.8
setprop dhcp.${interface}.dns2 8.8.4.4
}
unset_dns_props()
{
for i in 1 2 3 4; do
setprop dhcp.${interface}.dns${i} ""
done
}
case "${reason}" in
BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT) set_dns_props;;
EXPIRE|FAIL|IPV4LL|RELEASE|STOP) unset_dns_props;;
esac
取得したdnsのリストをループでsetpropしている所で強引に8.8.8.8と8.8.4.4にするだけ。 dnsはせいぜい2つなのでcountのループは使わない。
そしてrebootすれば使える。