"VMware Player 3.1.4" でポートフォワーディング設定 - Setting of Port Forwarding in "VMware Player 3.1.4"

Recently, What did I do?


早いものでフィリピンから帰ってきてすでに3週間が過ぎようとしている。
帰国した次の日から新しい学校・新しい住まいでの大学院生としての新生活が始まり、慌しく日々を送っていたのでなかなかブログを更新できなかった。(いいわけです)

最近少し落ち着いてきたので、研究の合間にエントリーもちょくちょく書いていければなと思ってます。


About this Entry


今回のエントリーの背景と内容。

最近、研究と開発用にサーバを一から構築している。

前の研究室内のネットワークやハード資源の管理がアバウトだったので、(学生がルータの設定を変更できたり、余っているPCを開発機にしたり)やりたい放題だったのだが、

新しい研究室では、与えられるハード資源はデスクトップとノート。(贅沢だが、サーバ用にもう1台欲しい。)
ネットワークは各々のPCのMacアドレスネットワーク管理者に伝え、先生の許可がおりたら、IPアドレスが振り分けられ、研究室内のプロキシサーバを介して外の世界へ接続できるといったように、企業のように盤石にハード資源・ネットワーク共に管理されている。(本来こうあるべきなのだが、好き勝手にネットワークをいじれないのは残念。)

ということで、VMware Playerを用いてCentOS 5.6を仮想環境で構築すること。

その際、仮想のCentOSへのアクセスはホストからのみだと不便なので、ネットワーク内からアクセスできるようにしたい。(できれば研究室外部からも)
しかしネットワーク管理者にお願いしてCentOS用のIPアドレスを割り振ってもらうのが煩わしかったので、ブリッジ接続ではなく、ナット接続でポートフォワーディング設定をすることに。
その際にいろいろとハマったので、備忘録。



環境

※ このエントリーでメモリーの大きさに気付き、驚愕(´Д`;)

CentOS 64bit版の x86 が上手くインストールできなかったので、32bit版のi386で妥協中。


ポートフォワーディング (Port Forwarding) とは

ローカルコンピュータの特定のポートに送られてきたデータを、別に用意した通信経路を用いてリモートコンピュータの特定ポートに送信すること。通信経路を暗号化してセキュリティを高める用途に用いられることが多いため、ほとんどの場合はssh等の暗号化技術が併用される。ポートフォワーディングが行われている最中は逆方向の通信も可能。ローカルネットワークからの接続しか許可していないサーバに対して、いったん目的のサーバと同じネットワークにあるコンピュータにログインし、内部ネットワークからの通信としてサーバに接続を要求するという形を取っている。目的のサーバが外部ネットワークからの接続を認めている場合も、相手ネットワークまでの通信経路を暗号化することで安全性の高い通信が可能になる。

http://e-words.jp/w/E3839DE383BCE38388E38395E382A9E383AFE383BCE38387E382A3E383B3E382B0.html

ホストに来たアクセスをポートごとに、指定した仮想マシンやほかのマシンに通してくれる技術。ポートごとに複数の仮想マシンに振り分けたりすることもできそう。仮想マシンを複数動かして同期をとってバックアップ・セカンダリサーバにしたりとか?


vmnetcfg.exe がインストールされていない


vmnetcfg.exeというネットワーク関係の設定を行えるアプリケーションがデフォルトではインストールされなくなったみたいです。

VMwarePlayerのゲストOSへポートフォワーディングするための設定アプリケーションがvmnetcfg.exe。VMwarePlayer3から標準でインストールされなくなりました。

http://d.hatena.ne.jp/sugilog/20101104/1288846564

この情報に辿りつくまでにだいぶ時間がかかった。

vmnetcfg.exe 入手


Vmware Playerのインストーラーの中に入っているらしいので、CMDで入手。

VMware-player-3.1.4-385536.exe  /e .\extract


extractディレクトリ下にあるnetwork.cabを解凍。そして以下に配置した。

C:\Program Files (x86)\VMware\VMware Player\vmnetcfg.exe

vmnetcfg.exe 起動・ポートフォワーディング設定



入手したvmnetcfg.exe起動する!
※ 以下の設定は各自の環境で読み替え必要(IPアドレスなど)



[VMnet8] を選択し -> [NAT 設定 (S)]をクリック->



[追加 (A)]をクリックし -> 画像のように転送ルールを記入



ここではこんな感じの設定をした。(22,80,443port フォワードする)
[OK]クリックしてウィンドウを閉じて->[適用]クリック->[OK]クリックして終わり

その他


ホスト(Windows)のファイアウォールの設定(port解放)は以下を参照した。
Windows 7 パーソナルファイアウォールに個別ポート許可設定

確認


ホスト(windows)からブラウザで自らにアクセスしてみる。
http://localhost/ , http://127.0.0.1/ , http://192.168.20.52/ <-(HostのIPアドレス) などに

おK〜〜。SSHも問題なくアクセスできたので設定終了。

つながらない時人のために情報

うまくいかない場合のチェックポイントをいくつか。

  1. ちゃんと、ゲストOS側までパケットが届いているかtcpdumpコマンドなどで確認してみる。とどいていない場合は以下を確認。
  2. ホストOS側のファイアウォール機能でブロックされていないか確認する。とくにWindows XP SP2では、標準でファイアウォール機能が働いてしまって、ホストOSのポート22番の時点ではじかれてしまっている場合があります。一時的にファイアウォール機能を無効にしてみて、うまくいくようなら、ポート22番を許可するように設定します。もちろん、危険性を十分理解したうえで。ポート80番のHTTPも同様。
  3. ゲストOS側のファイアウォール機能でブロックされていないか確認する。とくにゲストOSが最近のリナックスだと、ほとんどのポートがブロックされていたりするので、そのへん、設定変更する必要があります。
  4. そもそもsshデーモンや、ウェブサーバー(httpd)が動いているか?動いていなきゃ、アクセスできませんねぇ。たまにそういうしょうもないミスをすることもあるので、念のため確認。
http://nhh.mo-blog.jp/ttt/2005/11/vmware_natssh_3905.html

まとめ


これで少し開発環境が改善された。次は外部ネットワーク(研究室の外)からこのサーバにアクセスできるように設定できれば、だいぶ快適になる気がする。ネットワークに関して勉強するいい機会になってるが、快適に開発できる日々はまだまだ遠そう。環境構築でハマるたびに社内のインフラーの人たちの知識ってすごいな〜って感じる。インフラーってかっこいいよね〜。憧れます。