VMware NAT接続仮想マシンをLinuxホスト、またはWindowsホストでは一つのNAT接続仮想LinuxマシンでDNSサーバを運用しようとすると、VMwareホストからDNSを引くことができない。

まず、当初の私の目論見は、VMware Workstation/Player/Serverが提供しているNAT用のDHCPサービスを停止させ、Windowsホストなら専用の仮想マシンを一台作成、Linuxホストならホスト自身でNAT内でDynamic DNSサービスを実行させ、NAT内の相互マシンどうし、またはVMwareホストからNAT内の仮想マシンDNSを利用して、hostsファイルを利用せずにホスト名によってアクセスしたい、ということであった。これが実現できれば、VMwareホストからアクセスしたいマシンを必ず静的アドレスで作成し、そのアドレスをホストOSのhostsファイルに記述する、という面倒から解放されると考えたのだ。ところが、残念ながら実際には、このようなことは不可能であることがわかった。

VMware Workstation/Player、またVMware Serverも同様の考え方になると思われるが、VMware NATサービスは、VMware NATネットワークxxx.xxx.xxx.2のアドレスにルータとDNS Proxyが存在する。NAT内の仮想マシンは、これを利用してとホスト外部のネットワークにアクセスする。このDNS Proxyは、(VMwareの実装はわからないが、少なくとも論理的には)VMwareホストOSのネームサービスを利用しているはずである。

そして、私の目論見のように、VMware NATに接続されている仮想マシンDNSサービスを、VMwareホストがWindowsならばNAT上の仮想マシン、またLinuxホストの場合はホスト自身もDNSサーバとして動作させることができるので、いずれかの方法でセットアップしたとする。そして、VMwareホストOSから、このDNSサーバを参照しようとすると、、、

ホストOSはNAT用のDNSサーバを参照しにいく。そして、そのDNSサーバは、(NAT内のマシンをVMwareホスト外ネットワークにアクセスさせることために、)xxx.xxx.xxx.2なアドレスのVMware NAT DNS Proxyを参照しにいく。このDNS ProxyはホストOSのネームサービス、つまり今回のケースではホストOSのDNSを参照しにいく。ところが!ホストOSはNAT内の仮想マシンのためのDNSサーバを再び参照しにいき、DNS参照のループが発生してしまうようなのである。

論理的にも納得のいく話だが、実際試したところ、やはりうまく行かなかった。

NAT内の仮想マシンDNS Proxyを通してVMwareホスト外のネットワークにアクセスする構造となっている以上、私の目論見はうまくいかないはずだ。。。

NAT内のマシンからVMwareホスト外部ネットワークへのアクセスのためのDNS参照とNAT内のDNS参照を分離して、NAT内マシンが外部ネットワークへアクセスする時にはホストのDNSのみを利用するが、NAT内マシンどうし、また、VMwareホストからこのDNSサーバを参照した時には、DNS Proxyへの参照(xxx.xxx.xxx.2の参照)を行わず、NAT内のDynamicDNS/DHCPによるDNS情報のみを参照するような工夫ができれば、私の期待することが可能となるのだが。。。

DynamicDNS/DHCPサーバを、NAT内完全ローカルで動作するようにセットアップし、NAT内のマシンは全て、第一優先DNSサーバとしてはこのサーバを参照、次にDNS Proxyアドレスをサーバとして参照すればよいのかもしれないが、これはこれで、NAT内の仮想マシンのセットアップで、せっかくDynamicDNS/DHCPサーバが配布してくれているDNSサーバアドレスがあるのに、おそらくはそれを利用せず手作業でDNSサーバを指定し、加えてその次の優先度でDNS Proxyサーバも参照するよう、全てのDynamicDNS/DHCP管理マシンをセットアップしなければならず、少々おっくうだ。。。

残念。