背景
Dnsmasqを久しぶりに使ってみたのでついでに入門的にまとめてみた。小規模の内部用(プライベート)用のDNSをお手軽に立てたいので、dnsmasqを使用してみたい程度での使用で業務用途では特にないです。
ホストファイル(形式のファイル)でDNSの設定ができる、設定がお手軽というメリットで選んでます。
最新版は2.85で最終リリースは3ヶ月前です。リリース頻度はそこまで高くない印象でした。(ちょくちょく脆弱性のニュース見る気がするのでその対応とかですかね。)
dnsmasqとは
Dnsmasqは軽量で比較的容易に設定できるDNSサーバのフォワーダとDHCPサーバをもつソフトウェアである。
dnsmasqは主に以下の機能があります。
簡易とは言え個人的に特に困るような機能不足は何もない。サクッとやれるし小規模なお家サーバくらいなら余裕すぎるレベルで高機能です。
インストール
yum -y install dnsmasq
設定ファイル
# Port番号 port=53 #デフォルトの /etc/hosts をDNSのレコードとして使用しない no-hosts #読み込むホストファイルを指定 addn-hosts=/etc/hosts-dnsmasq #ドメイン名を自動的に付加する expand-hosts #ローカルのドメイン名を設定する domain=icebird.local #外部のDNSへ問い合わせをする場合は、ホスト名では問い合わせない domain-needed
bogus-privを有効にするとプライベートIPアドレスを上位のDNSサーバに転送しないようになります。txtレコードとかmxレコードはここのconfに書くこともできます。
ttlを設定
CNAMEを設定する
dnsmasqでcnameレコードを設定することもできます。(検証用途くらいでしか用途は思いつきませんが。。)
hostsへ以下を記載
127.0.0.1 default.example.com 127.0.0.2 default.example.com 127.0.0.3 default.example.com 127.0.0.4 default.example.com 127.0.0.5 default.example.com
dnsmasq.confへ以下を記載
cname=*.example.com,default.example.com auth-server=example.com,eth0 interface-name=example.com,eth0 auth-zone=example.com,127.0.0.0/24,eth0
dig
[root@master ~]# dig @127.0.0.1 *.example.com ;; ANSWER SECTION: *.example.com. 600 IN CNAME default.example.com. default.example.com. 600 IN A 127.0.0.5 default.example.com. 600 IN A 127.0.0.2 default.example.com. 600 IN A 127.0.0.3 default.example.com. 600 IN A 127.0.0.4 default.example.com. 600 IN A 127.0.0.1
プロダクション用途
前職で使った時はアプリサーバに入れておいてdnslookupをローカルで完結させるみたいな用途で使ってました。いわゆるキャッシュサーバです。何故か名前引くのが200msとかかかっていた時間があってローカルに入れておくみたいな感じだったはずです。ttlとかは2sとかで制限して使ってました。