うちのプロバイダは楽天ひかりなのだが、楽天ひかりはIPv6必須となっている。で、LAN内DNSとしてAGHを利用しているのだが、最近のOSだとIPv6が優先されてLAN内ドメインの名前解決がうまくいかない。多分ルータとAGHでそれぞれIPv6の設定をきちんとやればうまくいくのだろうけれど1ミリもやる気が起きない。
なのでクライアント側でWi-fiネットワークの設定からIPv6を切っているのだが、PCはそれでよくてもスマホで詰まった。IPv6切れない。どうしてそういうことするの…。
環境
- ルータ: TP-Link AX5400
- サーバ: Linux Mint Xfce 22.3
- DNS: AdGuard Home(AGH)
- リバースプロキシ: Caddy
- Android 15 (Pixel 7)
- RethinkDNS
- MacroDroid
やりたいことは、Android側でDNSをIPv4でAGH入れたサーバに向ける。
標準のDNSサーバ指定じゃいかんのか?
Androidには一応静的IPでDNSサーバを指定する機能もある。一見これでおしまいに見えるが、実際にはIPv4のサーバアドレスしか指定できないうえに、IPv6は切れないし、IPv6で名前解決失敗したらIPv4で試すとかするわけでもない、中途半端な無能。
なので標準の機能では無理。
RethinkDNSで強制する
RethinkDNSをダウンロード&インストールする。
- 最初の画面で「DNS」を選択
- 「その他のDNS」
- 「DNS 53」
- +ボタンで追加してチェックを入れる
- IPアドレスとポート番号だけ記述。ポートは普通は53
- 最初の画面に戻って「開始」
これでLAN内ドメインの名前解決できるか試す。いけたらOK。
MacroDroidでネットワークを検知してOn/Off
これだけだとネットワークから離脱したり入ったりするたびにRethinkDNS起動してOn/Offしないといけないめんどくさい。
なのでマクロアプリを入れて自動化。ここではMacroDroidをインストール&ダウンロード
まず開始のトリガを作る。
- +でマクロの追加
- トリガー
- +を長押し
- 「Wi-fi状態の変化」
- 「ネットワークに接続時」より指定
- アクション
- 「アプリ」「アプリを起動」より「RethinkDNS」を選択
- 「待機」で検索「1秒」
- 「機器の操作や動作」「UI画面操作」より「クリック」で「テキスト」の「開始」
これでネットワークに参加したとき、自動で開始したらOK。
同様に停止のマクロも作成。
- +でマクロの追加
- トリガー
- +を長押し
- 「Wi-fi状態の変化」
- 「ネットワークに切断時」より指定
- アクション
- 「アプリ」「アプリを起動」より「RethinkDNS」を選択
- 「待機」で検索「1秒」
- 「機器の操作や動作」「UI画面操作」より「クリック」で「テキスト」の「停止」
ネットワークから離脱したときに自動で停止したらOK。
なにもかも違ってますか
なにか間違っているような気がして仕方ないが、とりあえずこれで運用している。起動しながら移動していれば問題ないのだが、画面OFFにしたまま移動すると動いてない感じ。まぁでも他にやりようもなく。自分は割と外に出るときはスマホいじりながら出るので…。
以上。
コメント