dnsmasqでDNSキャッシュサーバを構築します。
DNSといえばBINDですが、めんどくさいので嫌いです。
nsd+dnsmasqが素晴らしいです。
dnsmasqはdnsキャッシュサーバの機能だけでなくdhcpサーバやtftpサーバの機能まであります。素晴らしい!(使わないけど。
Route53はもっと素晴らしいですけどね!!
- 環境
$ cat /etc/system-release Amazon Linux AMI release 2013.09 $ uname -a Linux ip-172-31-0-248 3.4.73-64.112.amzn1.x86_64 #1 SMP Tue Dec 10 01:50:05 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ dnsmasq -v Dnsmasq version 2.48 Copyright (C) 2000-2009 Simon Kelley
- Install
$ sudo yum install dnsmasq
- 設定 & 起動
今回はDNSキャッシュサーバとしてのみ使用します。
ローカルからの接続のみ許可します。
そのうえで/etc/resolv.confに追加してあげます。
$ sudo vim /etc/dnsmasq.conf ----------------------------------------- listen-address=127.0.0.1 bind-interfaces ----------------------------------------- $ sudo vim /etc/resolv.conf ----------------------------------------- nameserver 127.0.0.1 nameserver 172.31.0.2 ----------------------------------------- $ sudo service dnsmasq start $ sudo netstat -nlp|grep :53 tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 17586/dnsmasq udp 0 0 127.0.0.1:53 0.0.0.0:* 17586/dnsmasq
- 確認
適当にdigします。
1回目は外部サーバに聞きにいくので遅いですが、2回目以降はキャッシュから返してくれるので速いです!
dnsラウンドロビンの機能も持っているので複数のレコードを持つ場合なども順番に返してくれるので安心です。
$ dig google.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.30.amzn1 <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 300 IN A 173.194.126.238 google.com. 300 IN A 173.194.126.224 google.com. 300 IN A 173.194.126.225 google.com. 300 IN A 173.194.126.226 google.com. 300 IN A 173.194.126.227 google.com. 300 IN A 173.194.126.228 google.com. 300 IN A 173.194.126.229 google.com. 300 IN A 173.194.126.230 google.com. 300 IN A 173.194.126.231 google.com. 300 IN A 173.194.126.232 google.com. 300 IN A 173.194.126.233 ;; Query time: 44 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Feb 16 14:28:39 2014 ;; MSG SIZE rcvd: 204 $ dig google.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.30.amzn1 <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 297 IN A 173.194.126.233 google.com. 297 IN A 173.194.126.232 google.com. 297 IN A 173.194.126.231 google.com. 297 IN A 173.194.126.230 google.com. 297 IN A 173.194.126.229 google.com. 297 IN A 173.194.126.228 google.com. 297 IN A 173.194.126.227 google.com. 297 IN A 173.194.126.226 google.com. 297 IN A 173.194.126.225 google.com. 297 IN A 173.194.126.224 google.com. 297 IN A 173.194.126.238 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Feb 16 14:28:42 2014 ;; MSG SIZE rcvd: 204 $ dig google.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.30.amzn1 <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 295 IN A 173.194.126.224 google.com. 295 IN A 173.194.126.238 google.com. 295 IN A 173.194.126.233 google.com. 295 IN A 173.194.126.232 google.com. 295 IN A 173.194.126.231 google.com. 295 IN A 173.194.126.230 google.com. 295 IN A 173.194.126.229 google.com. 295 IN A 173.194.126.228 google.com. 295 IN A 173.194.126.227 google.com. 295 IN A 173.194.126.226 google.com. 295 IN A 173.194.126.225 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Feb 16 14:28:43 2014 ;; MSG SIZE rcvd: 204