動かざることバグの如し

近づきたいよ 君の理想に

UbuntuにdnsmasqをインストールしてDNSキャッシュサーバーとして運用

dnsmasqを使ってサクッとDNSキャッシュサーバーを作ろうじゃなイカ

環境

インストール

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