2025年1月17日金曜日

Android14 で hosts 書き換えが効かないときの対応


●いきなり結論
プライベート DNS 設定を {「OFF」か「自動」} 以外にする

●現象
スマフォの OS を crDroid (Android14) に書き換えたら,hosts 書き換えによる広告ブロックが効かなくなった.
不思議なのが,WiFi では効いているっぽいが,モバイルデータ通信では効いていない.

●Chrome の問題?
で調べてみると,chrome では独自に DNS の名前解決結果を独自にキャッシュしているようで,それをクリアしないといけないらしい.
chrome://net-internals/#dns を開くと,Clear host cache を押したが効果なし.
Lookup ボタンもあるので,hosts に記載のあるアドレスを入力してみたが,やっぱり hosts は効いていないようだった.

●Android の問題?
Chrome の問題なのか Android の問題なのか切り分けるために,Terminal emulator で名前引きしてみたところ,やっぱり hosts が効いていない.この時点で Chrome は関係なくなったが,ググってみても AI に聞いてみてもそれらしい解決策は無し.

●発見
仕方がないので,Android 設定で DNS と名のつくものを探したところ,プライベート DNS なる項目を発見.
デフォルトでは自動になっていたので,OFF にしてみたが,やっぱり hosts は効かない.
そこで,自動・OFF 以外の項目を選んでみたところ,ビンゴヽ(´ー`)ノ 無事 hosts が効いて広告がブロックされるようになった.
素性のよくわからない DNS を使うのはイヤなので,DNS 指定で dns.google を指定しておいた.

●ただし課題が...
このプライベート DNS の設定は,VPN 接続時にも有効らしく,VPN 接続アプリで指定している自宅 LAN の DNS が無視されてしまう (つまり自宅 LAN 配下の機器の名前解決ができない).この場合,プライベート DNS を OFF にすれば VPN の問題はなくなったが,VPN 接続時は手動で OFF にするしかなさそう.

このプライベート DNS,hosts,そしてネットワークから指定された DNS,の優先順位がさっぱりわからん.