dnsmasqを使ってサクッとDNSキャッシュサーバーを作ろうじゃなイカ
環境
- Ubuntu 16.04/18.04
インストール
apt install dnsmasq
あとは /etc/dnsmasq.conf を編集するのみ 主に以下
# ポート番号を53にする port=53 # ドメインの無いホスト名のみ問い合わせの場合、上位DNSサーバに転送しない domain-needed # プライベートIPアドレスの逆引きを上位DNSサーバに転送しない bogus-priv # ローカルエリア内のドメインを指定 local=/local.turai.work/ # 許可するNIC interface=eno1 # interfaceを指定するとデフォルトでDHCPの機能も提供してしまうので無効化 no-dhcp-interface=eno1 # キャッシュを何件保持するか cache-size=1000 # dnsmasqを立てたマシン内の/etc/hostsで名前解決しない no-hosts # 指定したhostsファイルで名前解決できるように # addn-hosts=/etc/hosts-dnsmasq
で再起動
systemctl restart dnsmasq
ただUbuntu 18.04以降だとdnsmasqが起動できない
Ubuntu 18.04以降だとdnsmasqが起動できない理由
すでにポート53をsystemdに奪われているから
/etc/resolv.confはsystemdが管理していて、ローカルですでにDNSサーバーが起動してしまっているのである。なんと面倒な
ってことでsystemd-resolvedを無効化
systemctl disable systemd-resolved systemctl stop systemd-resolved rm /etc/resolv.conf
これでおk
キャッシュの統計を見たい
pkill -USR1 dnsmasq tail /var/log/syslog