地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【dnsmasq】入門する

背景

Dnsmasqを久しぶりに使ってみたのでついでに入門的にまとめてみた。小規模の内部用(プライベート)用のDNSをお手軽に立てたいので、dnsmasqを使用してみたい程度での使用で業務用途では特にないです。

ホストファイル(形式のファイル)でDNSの設定ができる、設定がお手軽というメリットで選んでます。

thekelleys.org.uk

最新版は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を設定

キャッシュ保有期間/TTLに関する設定もできます。

  • 否定応答のキャッシュ時間指定: neg-ttl=で秒で指定。
  • 肯定応答のキャッシュ時間: 保持可能な最大時間をmax-cache-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とかで制限して使ってました。