WindowsでVMへポート転送するときのメモ

Windows 7以降であれば netsh コマンドを使ってポートフォワーディングが簡単に設定できる。これを使えば、NAT接続なVMゲストに対して外部のマシンから接続するといったことも簡単に行える。もちろん、VirtualBoxだと素直にポートフォワーディングルールの設定、VMware Playerだと vmnetnat.conf の書き換えなどで同じことができますが、netsh によるポートフォワーディングだとホスト側のファイアウォールのルール変更が不要という利点があります。また、Windows 10でHyper-Vを使う場合でも同じ方法でVMゲストへのアクセスが可能になります。

VMホストのIPアドレスが192.168.5.1、VMゲストのIPアドレスが192.168.56.5、VM上の8080でhttpdなどを動かしている場合は

C:\>netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.5.1 connectport=8080 connectaddress=192.168.56.5

のようにすることで、外部マシンからでも http://192.168.5.1/ でVM内の8080/tcpで動いているhttpdへアクセス可能になります。
ただし、ゲスト上のhttpdでREMOTE_ADDRを見ると全て192.168.56.1になってしまい、またX-Forward-Forなどは付与されないという点には注意がいります。

また、

C:\>netsh interface portproxy add v4tov4 listenport=33891 listenaddress=192.168.5.1 connectport=3389 connectaddress=192.168.56.5

のように指定しておくと、リモートデスクトップ接続でコンピュータ名に 192.168.56.1:33891 のように指定することで外部のマシンからVMゲストに対してもリモートデスクトップでの接続が可能になります。

覚えておくと便利!

広告