ParallelsのゲストOS用にDNSサーバ(BIND)を設定しよう
Parallels Desktop for Mac(以下、Parallels)を使用しているとVM上のゲストOSのホスト名がDNSで引けるようにしたくなってきます。特にSolaris 10のコンテナ機能を使用すると少ないメモリでいくつも仮想サーバを作れるので、DNSでホスト名を一元管理できるととても便利です。
ここでは、ParallelsのゲストOS向けに、ホストOSとなるMac側でDNSサーバを設定する例を紹介します。尚、以下の説明はMac OS X 10.4.8、Parallels Desktop for Mac 3036を対象としていますので、OSのバージョンによっては若干設定方法が異なりますのでご注意を。
Mac OS Xを含めUNIX系OSのDNSサーバは、ほとんどの場合ISCのBIND (Berkeley Internet Name Domain)が使用されます。Mac OS Xには予めBINDが含まれていますので(Mac OS X 10.4.8では比較的新しめのBIND 9.3.2が含まれています)、ここではこれを設定します。
Parallels共有ネットワーク(NAT)の仮想ネットワーク構成を知る
BINDを設定するには、対象とするネットワークの構成を知る必要があります。Parallelsのネットワークは、
- 共有ネットワーク
- ブリッジド・ネットワーク
- ホスト・オンリー
の3種類から選ぶことができますが、ここでは最も一般的な共有ネットワーク(NAT)を前提にBINDを設定します。
共有ネットワークはParallelsのデフォルト設定であり、Parallels VM内に仮想ネットワークが出来上がるため、Mac本体が物理的ネットワークに繋がっていなくても、仮想ネットワークを利用してホストOS⇔ゲストOS間で双方向のアクセスが可能です。また、Mac本体がインターネットに繋がっていれば、Parallelsが持つNAT機能により、ゲストOSからもインターネットにアクセスできます。
Parallels共有ネットワークには組み込みのDHCPサーバも動いていますが、この設定は、ParallelsのPreferenceメニュー画面を開いてNetworkタブをクリックした画面で参照または変更することができます。
上図の例では、共有ネットワークのネットワーク・アドレスは、10.211.55.0/24であることが分かります。
また、Mac OS Xの「環境設定...>ネットワーク」を見ると、Mac本体には2つの仮想ネットワークデバイスが用意されており、10.211.55.0/24の共有ネットワークに対しては、10.211.55.2のアドレスが割り当てられていることが分かります。
さらに、ParallelsのゲストOSとしてWindowsを立ち上げ、ipconfigコマンドを実行してみると、共有ネットワーク上には仮想NATルータがIPアドレス10.211.55.1で繋がっていることが分かります。
$ ipconfig /all
:
Ethernet adapter ローカル エリア接続:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Parallels Network Adapter
Physical Address. . . . . . . . . : 00-3F-CE-7F-07-C1
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.211.55.4
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.211.55.1
DHCP Server . . . . . . . . . . . : 10.211.55.1
DNS Servers . . . . . . . . . . . : 10.211.55.1
Lease Obtained. . . . . . . . . . : 2006年12月14日 21:43:50
Lease Expires . . . . . . . . . . : 2006年12月21日 21:43:50
以上をまとめると、共有ネットワークの構成は以下の図で表されます。
後は上記の構成に基づいて、それぞれのIPアドレスに好みのホスト名とドメイン名を決定します。今回は以下のようなホスト名を設定することにします。
IPアドレス | ホスト名(FQDN) | 補足 |
---|---|---|
10.211.55.1 | gateway.example.com | Parallelsの組み込みNATルータ |
10.211.55.2 | macbook.example.com | Mac本体(ホストOS) |
10.211.55.3 | solaris10.example.com | ゲストOS |
10.211.55.4 | win2k.example.com | ゲストOS |
/etc/named.conf ファイルの修正
Mac OS Xには、BINDの設定ファイル/etc/named.confが予め用意されていますが、予め設定されているのはlocalhost=127.0.0.1のマッピングだけです。これに、仮想ネットワーク・ドメインexample.comのための正引きマッピングと逆引きマッピングの定義を追加します。参考のため、オリジナルの/etc/named.confからの変更箇所を赤字で示しています。
//
// Include keys file
//
//include "/etc/rndc.key";
// Declares control channels to be used by the rndc utility.
//
// It is recommended that 127.0.0.1 be the only address used.
// This also allows non-privileged users on the local host to manage
// your name server.
//
// Default controls
//
controls {
// inet 127.0.0.1 port 54 allow {any;}
// keys { "rndc-key"; }; }; options { directory "/var/named"; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */ // query-source address * port 53; forwarders {
// 物理ネットワーク側のDNSサーバ。このDNSサーバで解決
// できなかったIPアドレスを従来通り検索できるようにする
192.168.1.1;
};
allow-query {
127.0.0.1; // ローカルからのアクセスを許可する
10.211.55.0/24; // 共有ネットワークからのアクセスを許可する
}; }; // // a caching only nameserver config // zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; // example.com の正引きの設定
zone "example.com" {
type master; // Master DNS Serverであることを明示
file "example.com.zone"; // ファイル名
};
// 10.211.55.* の逆引きの設定
zone "55.211.10.in-addr.arpa" {
type master; // Master DNS Serverであることを明示
file "example.com.rev"; // ファイル名
}; logging { category default { _default_log; }; channel _default_log { file "/Library/Logs/named.log"; severity info; print-time yes; }; };
/var/named/example.com.{zone,rev} ファイルの追加
先ほどの/etc/named.confで指定した正引きファイル/var/named/example.com.zoneと逆引きファイル/var/named/example.com.revを用意します。
まずは、/var/named/example.com.zone の内容です。
$TTL 1D
@ IN SOA macbook.example.com. root.macbook.example.com. (
2006121301
3H
1H
1W
1D )
IN NS macbook.example.com.
gateway IN A 10.211.55.1
macbook IN A 10.211.55.2
solaris10 IN A 10.211.55.3
win2k IN A 10.211.55.4
dns IN CNAME macbook ; macbookの別名
次は、/var/named/example.com.rev の内容です。
$TTL 1D
@ IN SOA macbook.example.com. root.macbook.example.com. (
2006121301
3H
1H
1W
1D )
IN NS macbook.example.com.
IN PTR example.com.
IN A 255.255.255.0
1 IN PTR gateway.example.com.
2 IN PTR macbook.example.com.
3 IN PTR solaris10.example.com.
4 IN PTR win2k.example.com.
上記、2つのファイルを追加するとディレクトリ/var/named/の中は以下のようになります。
$ sudo cp example.com.zone /var/named/
$ sudo cp example.com.rev /var/named/
$ ls /var/named/
example.com.rev localhost.zone named.local
example.com.zone named.ca
/usr/sbin/namedの起動
ここまでのBINDの設定は他のUNIX系OSとなんら変わりはありません。後はDNSサーバのデーモン・プロセス/usr/sbin/namedを自動起動するように設定するだけですが、このデーモン・プロセスの管理はMac OS X独自のlaunchdにより管理されています。launchdが/usr/sbin/namedを自動起動するように設定するにはlaunchctlコマンドを以下のように実行します。
$ sudo launchctl load -w org.isc.named.plist
launchctlのサブコマンドloadに-wオプションを指定すると、/System/Library/LaunchDaemons/org.isc.named.plistファイルのDisabledフラグを削除し、このplistファイルに設定してある/usr/sbin/namedも同時に起動してくれます。psコマンドで正しく起動されたか確認してみましょう。
$ ps -ax|grep named
15935 ?? Ss 0:01.47 /usr/sbin/named -f
上記のように表示されれば、正しく起動されています。もし、/usr/sbin/namedが正しく起動しなかった場合は、/var/log/system.logか、/Library/Logs/named.logを参考にBIND設定ファイルを見直します。
もし、/usr/sbin/namedを起動しない元の状態に戻すには、以下のコマンドを実行します。
$ sudo launchctl unload -w org.isc.named.plist
unloadサブコマンドに-wオプションをつけることで、/System/Library/LaunchDaemons/org.isc.named.plistファイルのDisabledフラグが書き込まれ、/usr/sbin/namedも停止します。
Macのネットワーク環境設定でDNSサーバの変更
MacがDNSクライアントとしてアドレス解決をするときは/etc/resolv.confの設定に基づいて行われますが、このファイルはMacが再起動する度に環境設定の内容で上書きされてしまいます。そのため、ネットワーク環境設定からDNSサーバの欄に127.0.0.1を、検索ドメインの欄にexample.comを設定します。
設定通りホスト名のIPアドレスが解決できるかを、hostコマンドかnslookupコマンドで確認します。
$ nslookup
> win2k
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: win2k.example.com
Address: 10.211.55.4
> 10.211.55.4
Server: 127.0.0.1
Address: 127.0.0.1#53
4.55.211.10.in-addr.arpa name = win2k.example.com.
また、外部のホスト名も同じように解決できるかも確認しておきます。
> www.google.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
Name: www.l.google.com
Address: 66.249.89.104
Name: www.l.google.com
Address: 66.249.89.99
>
ゲストOSのDNS設定を変更(オプション)
ParallelsのゲストOS側でもDNSの設定を変更します。共有ネットワーク上では、DNSサーバが動いているMacの内向けIPアドレスは10.211.55.2ですから、これを設定します。
先ほどと同じように、nslookupコマンドなどで、ゲストOSからも正しくアドレス解決できることを確認します。
【追記】Mac側のネットワーク環境設定でDNSサーバが変更されていれば、ゲストOS側のDNSサーバの変更は必須ではありませんでした。Parallelsの組み込みDHCPサーバが返す組み込みDNSサーバ(10.211.55.1)はDNSキャッシュ・サーバになっているため、Parallels組み込みDNSサーバ(10.211.55.1)→Macで設定したBINDサーバ→外部のDNSサーバの順で名前解決されます。
| 固定リンク
« Parallels Desktop for Mac build 3036 Betaの新機能。コヒーレントモードが面白い! | トップページ | GmailのMIDP版Javaアプリが702NKでも動くようになってた »
「mac」カテゴリの記事
- Core 2 Duo Mac上のVMWare Fusionで32bit Solaris 10を動作させるTIPS(2008.03.23)
- MacBook 2.4GHz Core 2 DuoのSATAホストアダプタはSATA-150(2008.03.23)
- MacBook 2.4GHz Core 2 Duoがやってきた!(2008.03.21)
- rsyncでリモート・バックアップ・サーバの構築(Time Capsuleの代替案)(2008.02.16)
- Mac OS X 10.5.2 Update: X11.appの日本語環境問題なども改善(2008.02.12)
コメント
すごく参考になりました。
ありがとうございました!
投稿: tk84 | 2008年5月20日 (火) 19時34分
tk84さん、
コメントありがとうございます。
まったりとした更新ですが、今後ともよろしくお願いします。
投稿: javaflavor | 2008年5月21日 (水) 00時11分