それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

3分で出来る、偽DNSサーバーをつかってテストとデバッグを簡単にする方法

DNSをフェイクして、偽のWEBサーバーに誘導する方法。(あくまでテスト用。)

嘘のDNSサーバーを使って、テストとデバッグ情報を集めたいときがある。

デバッグしていると、アプリケーションが外部サイトにアクセスすることがよくあります。HTTP通信であればプロキシを挟むことで、通信内容を見ることが出来ます。アプリケーションがホスト名の変更を受け付けてくれないときや、ハードコーディングされていて動作を見たい時に困ります。
 本番環境用のテストで嘘のドメインをローカルに作りたいときもありますね。

dnsmasq を使えば簡単にできます。

DNSで嘘をつくことは、本当はやっちゃいけないんだけど。自宅内や責任を持った環境内であれば便利です。
dnsmasqは/etc/hostsに書かれたエントリを返してくるので便利です。とても簡単ですので知っておいて損はないと思います。

インストール方法を紹介します。

dnsmasqのインストール

takuya@mai:~$ sudo aptitude install dnsmasq

/etc/hostsを編集してファイルを書き換える。

takuya@mai:~$ sudo vim /etc/hosts

を編集用に開いて、FakeしたいDNSエントリを追記する。

/etc/hosts
192.168.21.1 example.jp
192.168.21.1 www.example.jp

dnsmasqを再起動し設定反映します

takuya@mai:~$ sudo /etc/init.d/dnsmasq restart
 * Restarting DNS forwarder and DHCP server dnsmasq                                          [ OK ]
takuya@mai:~$

他のホストから動作を確認します

takuya@cook:~$ dig @192.168.21.20 example.jp

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 <<>> @192.168.95.56 example.jp
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55686
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.jp.                   IN      A

;; ANSWER SECTION:
example.jp.            0       IN      A       192.168.21.1

;; Query time: 2 msec
;; SERVER: 160.193.95.56#53(160.193.95.56)
;; WHEN: Mon Mar 15 11:20:29 2010
;; MSG SIZE  rcvd: 45


見事に置き換わってくれました。これで○○を見たら○○に強制誘導が出来ますね。取扱には十分注意して運用した方が良いでしょう。