概要
おうちDNSを整備した話
作ったアプリをラズパイサーバで動かしているのだけど、ローカルからの名前解決をクライアントのhostsで設定している。Androidに至ってはhostsに該当する機能がないので、おうちからの接続は諦めていた(どうしてもの時はIP直打ち)。そこまで対応必須な内容ではないが、ようやく重い腰をあげて対応したというお話。
ツール
- dnsmasq dnsmasq
サーバ設定
/etc/dnsmasq.confに以下を追加
bind-dynamic
listen-address=127.0.0.1,ラズパイのIP
no-resolv
server=1.1.1.1
server=1.0.0.1
/etc/hostsに以下を追加
ラズパイのIP ドメイン
dnsmasq.serviceの起動
systemctl start dnsmasq.service
LAN内の簡易DNSリゾルバーとして動作し、上流はCloudflareに転送する。
ポイントはsystemd-resolvedとの共存。systemd-resolvedは127.0.0.53:53で待ち受けているため、dnsmasqのリッスンIPを127.0.0.1とラズパイのIPに限定することでポート競合を回避している
※bind-dynamicを指定しているのは、ラズパイのIPがDHCP等で後から付与されても動的にbindできるようにするため。固定IPなのでいらないとは思う。保険の保険
クライアント設定
pc側、android側でdns設定をラズパイのIPに向ける
まとめ
これでクライアント依存することなくおうちアプリを使えるようになった。やっぱりアンドロイドへの恩恵がでかい。いい仕事をした