続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

dnsmasqでお手軽DNS

サーバー管理者の立場で、WindowsにあってLinuxにないものは、なかなか見当たりませんが、クライアントPC側にDNSキャッシュがWindowsにしか無いということを最近知りました。最近のルーターならば、キャッシュDNSつまりnameserverとしてはルーターにお任せできるので、ルーター配下のサーバーがわざわざISP指定のnameserverを指すこともないと思いますが、ローカルキャッシュがないとは、意外にLinux(Unixも?)、エコじゃない。

そこでdnsmasqという、DNSキャッシュだけで無く、DHCPもできるという多機能ツールを使ってみました。とても簡単に使えるので、ローカルでBIND建てるのめんどくさいという人にもおすすめです。

さくっと yumでインストールできます。

$ yum install dnsmasq

設定無しでも動きますが、自分専用のキャッシュで使いたいなら /etc/dnsmasq.confをの #listen-address=127.0.0.1 のコメントを外せばOK。あとは、/etc/resolv.confを下記のように編集します

; generated by /sbin/dhclient-script

search ap-northeast-1.compute.internal

nameserver 127.0.0.1

nameserver 8.8.8.8

元々のnameserverは残しておいてください。今回は例として、8.8.8.8の外部DNSを指して、問い合わせ時間の短縮を確認します。

$dig goga.co.jp

;; QUESTION SECTION:

;goga.co.jp. IN A

;; ANSWER SECTION:

goga.co.jp. 86400 IN A 173.45.234.63

;; Query time: 22 msec

$dig goga.co.jp

;; QUESTION SECTION:

;goga.co.jp. IN A

;; ANSWER SECTION:

goga.co.jp. 86398 IN A 173.45.234.63

;; Query time: 0 msec

1発目の問い合わせは 127.0.0.1は当然知らないので、 8.8.8.8 に聞きに行きます。ですので、 22msecかかってます。 2発目は 127.0.0.1のキャッシュが効いてるので、 0 msecとなります。なお、AWSを含め、DHCPを使用している場合は、/etc/resolv.confが再起動時に変わらないように、/etc/sysconfig/network-scripts/ifcfg-eth0を変更しましょう

PEERDNS=no

ローカルキャッシュとしての役目はこのぐらいですが、ローカルのお手軽DNSとしても活躍できます。dnsmsgが動いているサーバーに対して、別サーバーがレゾルバで指します。そうすると、/etc/hostsに記載してあるものが、そのままAレコードとして問い合わせ出来ます。すごい楽!

dig imaoka.imadomain

;; QUESTION SECTION:

;imaoka.imadomain. IN A

;; ANSWER SECTION:

imaoka.imadomain. 0 IN A 172.31.66.4

;; Query time: 0 msec

新規インスタンスが追加された場合は、hostsに書き足せばいいだけなので、お手軽です。consulなどのツールと組み合わせるのがよいです。