VMwareでホスト間通信とゲスト間通信とインターネット接続と固定IPを全て実現する方法

当記事ではVMware（VMware Workstation 16 Player）上で動作するゲストOSで、ホストOS間通信、ゲストOS間通信、インターネットへの接続、ローカルIPアドレスの固定化の全てを実現する方法を解説します。

当記事の手順は以下環境で検証しました。

+ ホストOSは「Windows 10 Home 64bit」です。
+ 仮想環境の実現には「VMware Workstation 16 Player」を使用しています。
+ VMware上で動くゲストOSは「CentOS 7.9-2009」です。
+ 賃貸住みであり、ルーターは大家さんの所有物であるためルーターを直接操作・設定する権限は私にはありません。IPアドレスは大家さんのDHCPサーバーから割り振られており、自身の端末に任意の固定IPアドレスを割り振ることはできません。

また、当記事の想定読者層としては以下のような方を意識しています。

+ ホストOSが「Windows 10」であること。少なくともWindows系ユーザーであること。
+ VMwareの使用経験があること。あるいはVirtualBoxに代表される他ハイパーバイザーの使用経験があり、VMwareの操作方法についても自力で理解できること。
+ 最低限のネットワーク知識があること。「ローカルIPアドレス」や「デフォルトゲートウェイ」といった言葉の意味がわかること。

## 概要

VMwareのネットワーク接続設定は「ブリッジ」「NAT」「ホストオンリー」の大きく3つあります。ただ、いずれの設定においても、ゲストOSからホストOSとの間で相互に通信できる状態を確立しつつ、ゲストOS間でも通信できるようにしつつ、インターネットへ接続できるようにしつつ、ホストOSからゲストOSへ通信するときのローカルIPアドレスを固定化することはできません。

それぞれできること、できないことが決まっており、上記機能を全て実現するには一工夫必要です。当記事ではいくつかある実現方法のうち、Windowsに標準搭載されたICS（Internet Connection Sharing）という機能を用いた方法を解説します。

## 手順

手順は以下のとおりです。

### VMwareのインストール

まずはVMwareをインストールしてください。

VMwareのインストールにはインストーラーを利用します。以下ページ下部よりダウンロードしてください。

[VMware Workstation Player のダウンロード | VMware | JP](https://www.vmware.com/jp/products/workstation-player/workstation-player-evaluation.html)

インストール時には色々設定を求められますが初期設定で問題ありません。ただ、インストール処理時にWindows側からセキュリティ関連の許可を求められるのですが、ここで拒否してしまうとかなり面倒くさいことになるっぽいので気をつけてください。

### VMware用ネットワークアダプターがあることを確認

VMwareがインストールできましたら、VMware用のネットワークアダプターが生成されていることを確認してください。

確認する方法はいくつかありますが後々の手順のことを考えて `ncpa.cpl` を開いてください。ネットワークアダプターが一覧表示されるあの画面のことです。

一般的なPCにおいてはネットワークアダプターは1つか2つしかないと思いますが、VMwareをインストールしたことで「VMware Network Adapter VMnet1」「VMware Network Adapter VMnet8」という見慣れないネットワークアダプターが生成されているはずです。名前からもわかるように、これがVMware用のネットワークアダプターです。

なお、ときどき生成されていないことがあるのですが、その場合はVMwareがインストールされたディレクトリのなかにある `vmnetcfg.exe` というアプリから簡単に生成できます（具体的な手順は割愛します）。

### ホストOS用ネットワークアダプターでインターネット接続を共有化

Windowsに標準搭載されている機能「ICS（Internet Connection Sharing）」を有効化します。

`ncpa.cpl` より普段使用しているネットワークアダプターをダブルクリックするか、あるいは右クリックして「プロパティ(R)」をクリックしてください。私の場合は「イーサネット」という名前のネットワークアダプターが普段使用しているものになっています。そのため以下の解説においても「イーサネット」という名前である前提で解説を進めます。

ウィンドウ「イーサネットの状態」が表示されたかと思います。ウィンドウ左下にある「プロパティ(P)」をクリックしてください。ウィンドウ「イーサネットのプロパティ」が新たに展開されます。

ウィンドウ「イーサネットのプロパティ」の上部タブ「共有」をクリックしてください。遷移後「インターネット接続の共有」という枠のなかに「ネットワークのほかのユーザーに、このコンピューターのインターネット接続をとおしての接続を許可する(N)」と「ネットワークのほかのユーザーに、共有インターネット接続の制御や無効化を許可する(O)」という2つのチェックボックスがあるかと思いますので、どちらにもチェックを入れてください。また、入力欄「ホームネットワーク接続」に「VMware Network Adapter VMnet1」を指定してください。

ウィンドウ下部の「OK」をクリックして設定を保存してください。このとき「ICSに設定したネットワークアダプターのIPアドレスを `192.168.137.1/24` にするけどOK？」と聞いてきますので一旦「はい(Y)」をクリックしてください。

これでICSの設定は完了です。ネットワークアダプターのウィンドウを閉じて `ncpa.cpl` の最初の画面に戻ってきてください。

### デフォルトゲートウェイの設定

仮想マシンからインターネットに接続するためのデフォルトゲートウェイのネットワーク接続設定を編集してください。

ネットワークアダプター「VMware Network Adapter VMnet1」をダブルクリックするか、あるいは右クリックして「プロパティ(R)」をクリックして設定ウィンドウを開き、さらにウィンドウ左下にある「プロパティ(P)」をクリックしてください。

ウィンドウ「VMware Network Adapter VMnet1のプロパティ」が開かれた状態になっているかと思います。画面中央の項目一覧のなかから「インターネット プロトコル バージョン 4 (TCP/IPv4)」をダブルクリックするか、あるいは選択した状態でウィンドウ中央の「プロパティ(R)」をクリックしてください。

ウィンドウ「インターネット プロトコル バージョン4(TCP/IPv4)のプロパティ」でデフォルトゲートウェイのIPアドレス・サブネットマスク・DNSサーバーのIPアドレスなどをまとめて指定できますので任意の値を指定してください。参考までに、私の場合はIPアドレスに `192.168.0.254` 、サブネットマスクは `255.255.255.0` 、デフォルトゲートウェイは空欄、優先DNSサーバーは `192.168.0.253` 、 代替DNSサーバーは `8.8.8.8` を指定しています。

これでWindows側の設定は完了です。 `ncpa.cpl` を閉じてください。

### VMware側の設定

あとはVMware側の設定を済ませれば一応設定は完了です。手順は簡単です。

まずはVMwareを起動します。当記事で解説している設定を適用したい仮想マシンを新規作成するなり読みこむなりしてVMwareに登録します。当該仮想マシンの設定画面に入ります。

ウィンドウ「仮想マシンの設定」が開かれた状態になっているかと思います。タブ「ハードウェア」が開かれている状態で、ウィンドウ左半分を占める一覧のなかから「ネットワーク アダプタ」を選択します。ウィンドウ右側中央にあるチェックボックス「ホストオンリー: プライベートネットワークをホストと共有(H)」を選択します。ウィンドウ右下の「OK」をクリックして設定を保存します。

最後に、仮想マシンを起動して各OS内でネットワーク設定を行えば完了です。忘れがちですが、デフォルトゲートウェイのIPアドレスには `ncpa.cpl` で設定したIPアドレスを設定してください。自動的に取得する、といった設定にしているとインターネットに接続できません。

## ICSの注意事項

ICSは便利な機能ですが、Windowsを立ちあげたときに起動していないことがままあります。以下ページを参考にして自動起動させるようにすることを強く推奨致します。

[Internet Connection Sharing (ICS) doesn't work - Microsoft Community](https://answers.microsoft.com/en-us/windows/forum/all/internet-connection-sharing-ics-doesnt-work/acc568fa-52a1-4c23-8206-34f71a5dbe31)

[ICS doesn't work after computer or service restarts in Windows 10 - Windows Client | Microsoft Docs](https://docs.microsoft.com/en-us/troubleshoot/windows-client/networking/ics-not-work-after-computer-or-service-restart)