Android DNS固定 - eiichiromomma/CVMLAB GitHub Wiki

(Android) DNS固定

ルータによって名前解決に失敗する問題の解決法 (要rooted)

自動取得(dhcp)環境でtwidroyd等で名前解決出来ない事がある。やる事はDNSをGoogleの8.8.8.8と8.8.4.4にするだけの話

※froyoで確認

20-dns.conf

/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すれば使える。

⚠️ **GitHub.com Fallback** ⚠️