どうも、Tです。
僕は、ノートパソコンの中の開発環境のためにVMware Workstation 14 Player(以下、VMware Player)を使用しています。
移動先でWiFiを使うときもゲストOSは、インターネットに出したいので、デフォルトのネットワーク構成のNATを利用していますが、ホストマシン(物理PC)と接続できないと困る状態です。
そんなときの解決策を載せておきます。
この設定を行うとNATのDHCP機能は使えなくなります。
目次
困ること
- VMware Playerで仮想マシンをデフォルト(NAT)構成するとホストマシン(物理PC)から仮想マシンに接続できない。
- ホストオンリーネットワークにすると仮想マシンが、インターネットに接続できない。
やりたいこと
- 仮想マシンからインターネット接続が行えるようにする。
- ホストマシン(物理PC)から仮想マシンにSSH接続などの通信が行えるようにする。
下図のようにしたいのです。
この図で理解できた人は後の説明みなくても設定できると思うので、読まなくて大丈夫です。
環境
ホストマシン(物理PC)
Windows10 Pro 64bit バージョン1803
VMware Workstation 14 Player
ゲストOS
CentOS7
何が問題か?
ゲストOSを作成したときにネットワークは上記のようになっています。
※「NATゲートウェイ」は、わかりやすいように記載しているだけでデバイスとしては存在しません。
VMnet1、VMnet8は、VMware Playerをインストールしたときに自動的に作られる仮想ネットワークアダプタです。
Windowsのネットワーク接続を見ると上図のように、VMnet1(ホストオンリー)、VMnet8(NAT)が作られていることがわかります。
ゲストOSは、VMnet8→WiFiアダプタを経由してインターネット接続できます。
が、VMnet1につながっていないため、物理PCにインストールしているターミナルソフトやWebブラウザから接続することができません。
解決するための設定
仮想ネットワークアダプタの追加
VMnet1を使えるように、NIC2の分をゲストOSに追加します。
仮想マシンの設定では、上記のように見えます。
WiFiアダプタの設定
次にVMnet8がWiFiアダプタを経由できるようにWiFiアダプタを設定します。
WiFiアダプタのプロパティから下図のように設定しましょう。
VMnet1(ホストオンリー)の設定
VMnet1にIPアドレスを設定します。
物理PCからVMnet1のプロパティを開き、下記のように設定しましょう。
VMnet8(NAT)の設定
VMnet8にIPアドレスを設定します。
物理PCからVMnet8のプロパティを開き、下記のように設定しましょう。
ゲストOSのNIC2にIPアドレスを設定
ゲストOSのNIC2にVMnet1に割当した範囲のIPアドレスを割り当てます。
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:39:e0:d5 brd ff:ff:ff:ff:ff:ff inet 192.168.100.2/24 brd 192.168.100.255 scope global noprefixroute ens37 valid_lft forever preferred_lft forever inet6 fe80::fc4:3caf:f74b:72af/64 scope link noprefixroute valid_lft forever preferred_lft forever
これで、ゲストOSのNIC2を使用して、物理PCと通信が行えるようになっています。
ゲストOSのNIC1にIPアドレスを設定
ゲストOSのNIC1にVMnet8に割当した範囲のIPアドレスを割り当てます。
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:39:e0:cb brd ff:ff:ff:ff:ff:ff inet 192.168.200.2/24 brd 192.168.200.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet6 fe80::a331:6be4:d7e2:3802/64 scope link noprefixroute valid_lft forever preferred_lft forever
NATゲートウェイ設定
ホストPCのC:\ProgramData\VMware\vmnetnat.confファイルを編集します。
vmnetnat.confは、編集禁止になっているのですくトップなどに移動して、編集したあとに元のファイルを上書きします。
下記のように6行目のIPをデフォルトゲートウェイとして変更します。
NIC1のデフォルトゲートウェイを設定
デフォルトゲートウェイは、設定したNATゲートウェイ192.168.200.254)を指定します。
default via 192.168.200.254 dev ens33 proto static metric 100 192.168.100.0/24 dev ens37 proto kernel scope link src 192.168.100.2 metric 101 192.168.200.0/24 dev ens33 proto kernel scope link src 192.168.200.2 metric 100
DNSを設定
DNSは、どこからでも使えるようにGoogleが提供しているDNSあたりを設定しましょう。
nameserver 8.8.8.8
通信確認
ここまでの設定で上記のような構成になっているはずです。
上記のような通信が行えるか確認しましょう。
まとめ
自宅のデスクトップPCの中の仮想環境はブリッジ接続で楽なのですが、持ち運ぶするノートPCの場合少々面倒でした。
ゲストOSがWindowsのときは試してないですが、同じような設定でできると思います。
下記は試してませんが、この環境でNAT側でDHCPを使いたい場合は、
- vmnetdhcp.confファイルの編集
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VMware, Inc.\VMnetLib\VMnetConfig\vmnet8の「IPSubnetAddress」レジストリの編集
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMnetDHCP\Parameters\VirtualEthernetSegments\8の「HostIpAddress」の編集
で使えるようにできそうでした。