« Parallels Desktop for Mac build 3036 Betaの新機能。コヒーレントモードが面白い! | トップページ | GmailのMIDP版Javaアプリが702NKでも動くようになってた »

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タブをクリックした画面で参照または変更することができます。

Parallelsnetworkpreferences

上図の例では、共有ネットワークのネットワーク・アドレスは、10.211.55.0/24であることが分かります。

また、Mac OS Xの「環境設定...>ネットワーク」を見ると、Mac本体には2つの仮想ネットワークデバイスが用意されており、10.211.55.0/24の共有ネットワークに対しては、10.211.55.2のアドレスが割り当てられていることが分かります。

Parallelsosxnetworkpanel

さらに、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

以上をまとめると、共有ネットワークの構成は以下の図で表されます。

Parallelssharednetwork_2

後は上記の構成に基づいて、それぞれの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を設定します。

Parallelsosxdnssettings

設定通りホスト名の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ですから、これを設定します。

Parallelsgestossettings

先ほどと同じように、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」カテゴリの記事

コメント

すごく参考になりました。
ありがとうございました!

投稿: tk84 | 2008年5月20日 (火) 19時34分

tk84さん、
コメントありがとうございます。
まったりとした更新ですが、今後ともよろしくお願いします。

投稿: javaflavor | 2008年5月21日 (水) 00時11分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/181807/13061826

この記事へのトラックバック一覧です: ParallelsのゲストOS用にDNSサーバ(BIND)を設定しよう:

« Parallels Desktop for Mac build 3036 Betaの新機能。コヒーレントモードが面白い! | トップページ | GmailのMIDP版Javaアプリが702NKでも動くようになってた »