VMware Player上のLinux (NAT + 固定IPアドレス)

(2014.7)

VMware Player上でLinuxを動かすだけなら, 解説ページがいくつもあってまったく難しくないが、NAT + 固定IPアドレスという組み合わせにしようとして少し嵌まった。

前提:

  • ノートPC上で構築
  • ホストOS: Windows 8.1
  • ゲストOS: Fedora 20 Linux
  • VMware Player 6.0

やりたいこと: ゲストOSからインターネットにアクセスし、ホストOSからゲストOSのサーバにアクセスできるようにする。

(2015.9) VMware Player 7 がバージョンアップして VMware Workstation 12 Player に名前が変わったが、以下の手順はそのまま使える。

ブリッジ接続

仮想マシン設定での, ネットワーク接続の選択肢は、次のようになっている。

ブリッジ
NAT
ホストオンリー
カスタム
LANセグメント

普通は, ネットワークアダプタのネットワーク接続を「ブリッジ」にすればOK.

ホストOSとゲストOSが同じLANセグメントになる。

ところが、ホストOS側のネットワークが切れていると, ゲストOSのネットワークも無効になってしまう。

今回はノートPCだったため,持ち運び時に, ゲストOSのネットワークが使えなくなってしまい、これではダメ。

NAT

VMware 設定で, ネットワーク接続を「NAT」にすると, ゲストOSがホストOSと別LANセグメントになる。1台のホストOS上で複数のゲストOSを立ち上げたときは, すべて同一のLANセグメントに入る。

Windows 8.1 (ホストOS) からは, VMnet1, VMnet8 アダプタが見える。NAT構成では, このうち VMnet8 が使われる。

Windowsのネットワークと共有センターで確認できる。「インターネットアクセスなし」になっているが、実際にはゲストOSからインターネットに接続できる。

VMnet8 のネットワーク接続の詳細を見てみよう。

一方, Linux (ゲストOS) では, DHCPを有効にしておけば、IPアドレスなどが自動設定され, インターネットにアクセスすることができる。

ここで今回, DHCPが有効だとインターネットにつながるが, 無効にするとつながらない, という状況に遭遇した。

勘違いしていたのは, Windows 8.1 (ホストOS) 側から見ると VMnet8のIPアドレスが192.168.241.1になっていたが, Linux側で指定するデフォルトゲートウェイはこのIPアドレスではない, ということ。

DHCPのときに, Linux側で, netstat -r または route -e (どちらも同じ) コマンドでルーティングテーブルを表示させる。

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         192.168.241.2   0.0.0.0         UG        0 0          0 ens33
192.168.241.0   0.0.0.0         255.255.255.0   U         0 0          0 ens33

ゲートウェイが 192.168.241.2 になっていることが分かる。

あとは, nm-connection-editor などで, 正しく設定してやればいい。これでOK. 手で設定するときは, /etc/sysconfig/network-scripts/ifcfg-enoXXXXXX ファイルを編集する。DNSサーバは /etc/resolv.conf ファイル。

(2015.6.20)
VMware Player のバージョンアップに伴って VMnet8 のIPアドレスが変わることがある。ゲストOS 側の設定を変えて回るのは面倒なので、こういうときは VMnet8 のほうを変更する。

IPアドレスの変え方:

  1. [Windows 8.1/10] コントロールパネル > ネットワークとインターネット > ネットワーク接続 > VMnet8 のプロパティ
  2. TCP/IP v4のプロパティ > IPアドレス、を変更する。例えば 192.168.241.1。~.2 ではない。デフォルトゲートウェイは空白のままでOK.

ホストOS側の NAT設定も変えなければならない。

NAT設定は, Windows 8.1 の場合, C:\ProgramData\VMware\vmnetnat.conf ファイルに保存される。Windows 7 の場合は C:\Users\All Users\VMware\vmnetnat.conf ファイル。

Web上には, vmnetcfg.exe を不正に入手するのを勧めるページが多いが, わざわざ入手する必要はない。

次のようにすればよい (一部). こちらは~.2 にする。

# Windows NAT configuration file

[host]
# NAT gateway address
ip = 192.168.241.2/24

ゲストOSでDHCPを使っている場合は、VMware Player の vmnetdhcp.confファイルで、DHCPが払い出すIPアドレスも変更すること。

この場合、ファイルを変更するだけではダメで、加えてレジストリの次の値を変更する。

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VMware, Inc.\VMnetLib\VMnetConfig\vmnet8

    IPSubnetAddress = 192.168.241.0

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMnetDHCP\Parameters\VirtualEthernetSegments\8

    HostIpAddress = 0x01f1a8c0 ... 下位から順に16進数にしたもの。192.168.241.1の意.

外部リンク