Android エミュレータの DNS 設定 — その2

前回の記事に書いた Android エミュレータにおける DNS 設定の件で、さらに理解できたことがあったのでメモ。プライマリの DNS サーバが落ちて名前解決が出来ていないときの状況では、net.dns1 の値が 10.0.2.3 になっているものの、net.dns2 には何も値が設定されていなかったことは前回にも書いた。

$ adb shell
# getprop net.dns1
getprop net.dns1
10.0.2.3
# getprop net.dns2
getprop net.dns2

#

たまたま入手した「ANDROID HACKS」(オライリー・ジャパン)によると、ここに出てくる 10.0.2.3 から 10.0.2.6 までの IP アドレスは、ホストマシンが参照している DNS サーバのエイリアスになっていることが分かった。したがって上記の状態ではホストマシンのプライマリに設定してある DNS しか参照しないことになり、該当する DNS サーバが落ちていたりすると名前解決が出来なくなってしまう。しかし net.dns2 に 10.0.2.4 を設定しておけば、ホストマシンのセカンダリ DNS 設定を参照するようになり、結果的に名前解決が可能になる。

#setprop net.dns2 10.0.2.4
setprop net.dns2 10.0.2.4
#

実際にこの手順で問題が解決したことを確認できた。ただしこのままだとプライマリの DNS が落ちているときは常に手動での設定操作が必要になり煩わしい。net.dns2 の値を恒常的に設定しておく方法を探す必要がある。