NAT接続のVMplayerクライアントへリモートデスクトップ接続
Cent OSマシンをホストマシンにしてWindows XPの仮想マシンをVMplayerを使って動かしている.ネットワークはNAT接続だ.この仮想マシンに対し,ホストマシン以外からリモートデスクトップ接続しようとしてハマッてしまった.結局解決したのだが,解決法は意外なところにあったので書き留めておく.
Windows XPマシン(手元のマシン)---LAN---Cent OSマシン(ホストマシン)---NAT---Windows XPマシン(仮想マシン) 192.168.xx.xx 192.168.xx.xx 172.16.97.1 172.16.97.128
Cent OSマシンにはiptablesがインストールしてある.そこでiptablesを使ってリモートデスクトップ接続のポート3389を仮想マシンにフォワーディングしてやれば良いと最初は思った.しかし,それでは動かなかった.理由はiptablesで制御するNATは/usr/bin/vmnet-natdが制御しているNATとは独立だったからだ.
仕方が無いのでOpenVPNを各マシンにインストールして誤魔化そうとしたが,OpenVPNの通信ポートを仮想マシンにフォーワーディングしなければならないので同じことだった.結局打つ手無しと諦めかけたが,ホストマシンの中を彷徨っているうちにヒントとなるファイルを見つけた.
/usr/lib/vmware/configurator/vmnet-nat.conf
だ.いかにもというファイル名だが,この中にvmnet-natdが制御しているNATのポートフォワーディングが記述できることを見つけた.
#SSH # ssh -p 8889 root@localhost #8889 = %sample%:22 #WinRemoteDeskTop 3389 = 172.16.97.128:3389
SSHの例に倣って書けばOK.
書き換えた後,
/usr/bin/vmware-config.pl
を実行すれば反映される.(VMplayerのバージョンによっては不要かも.私のはVer1.0.)
手元のマシンから仮想マシンへリモートデスクトップ接続するときは,接続先にホストマシンであるCent OSマシンのIPアドレスを指定する.ホストマシンのポート3389への通信は仮想マシンにフォワードされて無事リモートデスクトップ接続が出来た.