iPhone Safari でグローバルなドメイン・ホスト名を指定したときに、ローカルネットワーク上のホストに接続したい。ということで dnsmasq を導入してみた。

標準的な設定のシステムであれば、dnsmasqを起動した時点でネットワークのDNSサーバとして稼働する準備が整っている。DNS検索の要求が来ると、dnsmasqはまず「/etc/hosts」ファイルを参照し、要求に一致するエントリがないかを調べる。一致するエントリがあれば、対応するIPアドレスを返す。
(中略)
一致するものが「/etc/hosts」になければ、dnsmasqは「/etc/resolv.conf」に記されている“本来”のネームサーバに要求を転送する。
(中略)
なお、実在する外部のドメイン名は、より優先度の高い「/etc/hosts」のエントリによってマスクできる。

dnsmasqでDNSおよびDHCPサービスを強化する - SourceForge.JP Magazine : オープンソースの話題満載

実験的に設定してみる。

ローカルネットワークの Debian GNU/Linux lenny (192.168.24.50) に dnsmasq をインストールする。


# aptitude install dnsmasq

dnsmasq と dnsmasq-base パッケージがインストールされる。

設定ファイルは /etc/dnsmasq.conf だけど何もいじらない。設定すればDHCPサーバにもなるらしい。

dnsmasq をインストールした Debian マシン (192.168.24.50) の /etc/hosts と /etc/resolv.conf に必要な内容を記述する。

bar.nilab.info で 192.168.24.50 にアクセスするような設定。


# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	foo.localdomain	foo
192.168.24.50	bar.nilab.info

bar.nilab.info 以外の名前解決は 192.168.24.1 にある DNS サーバにおまかせする設定。


# cat /etc/resolv.conf 
nameserver 192.168.24.1

dnsmasq に設定を反映させるために restart する。


# /etc/init.d/dnsmasq restart

これで、Debian マシン (192.168.24.50) を DNSサーバとして使えるようになった。

試しに、 iPhone を自宅内の無線LANに接続して(別のサーバのDHCPからIPアドレスを取得)、 iPhone の Safari から bar.nilab.info に接続したらちゃんと 192.168.24.50 につながった。 グローバルなドメイン・ホスト名を指定して、ローカルネットワーク上のホストに接続するのに便利。

Ref.
- Dnsmasq - a DNS forwarder for NAT firewalls.
- dnsmasqでDNSおよびDHCPサービスを強化する - SourceForge.JP Magazine : オープンソースの話題満載
- Dnsmasq - Wikipedia
- Linuxユーザのためのチップス: dnsmasqで簡易DNSサーバ
- Ubuntu Weekly Recipe:第20回 いろいろなキャッシュ:dnsmasq, cache proxy|gihyo.jp … 技術評論社
- DNSmasq を使うと iPhone/iPad 等で名前解決できない? - metastable blog
- Mac OS X v10.4, 10.5, 10.6:「.local」ホスト名を Bonjour および標準 DNS を介して検索する方法

tags: dns debian iphone

Posted by NI-Lab. (@nilab)