MacOS X でドメイン毎にDNSサーバを切り替える
Mac OS X(10.5) でドメイン毎に利用するDNSサーバを切り替えたい場合、/etc/resolver/ ディレクトリの中に、ドメイン名でファイルを作り、そこに resolv.conf の設定を加えれば良い。例えば、ドメイン名が「localenet.intra」というイントラネットのDNSサーバが 192.168.1.1 である場合、/etc/resolver/ ディレクトリの中に localenet.intra というファイルを作り、中身に nameserver 192.168.1.1 と書けばよい。
VPN等を使用してイントラネットにアクセスする場合、DNSサーバの設定をVPNの内側のネームサーバに設定し直すか、イントラネットのアクセスはIPアドレスで行うことになる。DNSサーバを切り替える場合、複数のVPNの場合は煩雑になるし、IPアドレスを覚えるのも限界がある。
MacOS X には、build-in でドメイン名によりDNSを切り替える仕組みがある。これを使えば、イントラネット等特定のドメイン名の名前解決には指定したネームサーバのみを指定することができる。
設定は、/etc/resolver/ ディレクトリ以下に解決したいドメイン名のファイルを作成する。ファイルの書式は /etc/resolv.conf と全く同じ。/etc/resolver/ ディレクトリがない場合は作成すれば良い。
例えば、localnet.intra というドメイン名を192.168.1.1 で解決したい場合は以下の様になる。
# mkdir /etc/resolver/
# echo nameserver 192.168.1.1 > /etc/resolver/localnet.intra
ファイルを作成した後、一旦ネットワークを接続し直すかリブートを行う。これで、localnet.intra ドメインの名前解決は、/etc/resolv.conf に書かれたネームサーバに問い合わせる前に、192.168.1.1 へ問い合わせるようになる。
この設定のドメインはhost/dig/nslookup などのユーティリテューでは名前解決できない場合もあるので、ping/ssh/telnetなどで確認した方が良い。
まとめ
- MacOS X はドメイン毎に使用するネームサーバを指定できる(10.5でのみ確認)
- 特定のドメインのネームサーバを指定するには、/etc/resolver/ ディレクトリの下にそのドメイン名と同じファイルを作成し、resolv.conf と同じ書式でネームサーバを指定する
参考