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