Dnsmasq の代わりに CoreDNS を使う
最近 CoreDNS を使っていてプラグインによる柔軟さがとても気に入ったので、VM のインスタンスなんかに入れている Dnsmasq も全て CoreDNS に置き換えてしまうことにした。Dnsmasq は Consul を使った内部ドメインの解決のために使ってきたので、同じことを CoreDNS でやると以下のような設定になった。
. {
# ローカルからの問い合わせのみ
bind 127.0.0.1
# .consul なドメインは Consul に問い合わせる
proxy consul 127.0.0.1:8600
# 通常のドメインに対する名前解決は resolv.conf に従う
forward . /etc/resolv.conf {
except consul
}
# Prometheus メトリクスを出力
prometheus
# エラーをログに出力
errors
}
問い合わせの結果をキャッシュするために cache プラグインを追加したり、アクセスログの記録に log プラグインを使ったりするのもいいと思う。DNS over TLS にも対応しているので、以下のような設定をして少し前に話題になった 1.1.1.1 と組み合わせて使うのもよさそうだ。
. {
forward . tls://1.1.1.1 tls://1.0.0.1 {
tls_servername cloudflare-dns.com
}
cache 30
errors
log
}