VMware Workstation Player上のゲストOSをインターネット接続する

#はじめに
[前回の記事](https://qiita.com/budourush/items/0015ad11de452f55cc35)ではVMware Workstation PlayerでゲストOSを作成する方法を紹介しました。
しかしVMware Workstation PlayerでゲストOSを作成してもデフォルトの設定だと
・TeraTerm接続不可
・ネットワーク接続不可
・ファイル転送不可
と使いにくい環境であることが否めないです。

本記事では、VMware Workstation Player上のゲストOSをVMnet8を用いたNAT接続で、TeraTerm接続、インターネット接続を実現する方法を紹介します。環境によっては上手くできないこともありますので、あくまでも一例として参考にしてください。
※設定できることに重点を置いているため詳細な説明はVMwareのドキュメントを確認していくだい。

##環境
VMware Workstation 15 Player
ホストOS：Windows10 home(インターネット接続された環境)
ゲストOS：CentOS7.7

##NAT接続について
詳細はVMware Workstation Proのドキュメントですが[こちら](https://docs.vmware.com/jp/VMware-Workstation-Pro/12.0/com.vmware.ws.using.doc/GUID-89311E3D-CCA9-4ECC-AF5C-C52BE6A89A95.html#GUID-89311E3D-CCA9-4ECC-AF5C-C52BE6A89A95)を参照してください。
要約すると
・NATデバイスによってゲストOSのIPアドレスをホストOSのIPアドレスに変換する
・VMnet8によってホストOSとゲストOSの通信をする
この2点を理解できれば本記事の設定のおいては問題ないです。

またNAT接続時に仮想DHCPサーバが起動します。
こちらもVMware Workstation Proのドキュメントですが[こちら](https://docs.vmware.com/jp/VMware-Workstation-Pro/12.0/com.vmware.ws.using.doc/GUID-FB6C0A06-CD5A-4E80-A405-B3A2B7D7236C.html)をご確認してください。
難解で少し読みにくいですが、仮想DHCPサーバによってVMnet8のIPアドレスの第4オクテットは「1」NATデバイスの第4オクテットは「2」が割り当てられると思ってください。


##ホストOS側の確認

VMware Workstation Playerインストール時にホストOSのネットワークアダプタにVMnet1,VMnet8が追加されます。本記事ではVMnet1は使用しません。


###1.仮想DHCPサーバから払い出されているVMnet8のIPアドレスの確認
コマンドプロンプトで確認します。

```console:ホストOS
C:\Users\xxx>ipconfig

略

イーサネット アダプター VMware Network Adapter VMnet8:
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: 
IPv4 アドレス . . . . . . . . . . . .: 192.168.64.1
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:

略
```



VMnet8にIPアドレス「192.168.64.1」が設定されているのが確認できます。
C:\ProgramData\VMware\vmnetdhcp.confから確認もできますが、設定箇所がわかりにくいのでコマンドプロンプトでの確認をオススメします。

###2.ゲストOSのネットワーク設定の確認
ゲストOSのネットワークはデフォルトでNAT接続に設定されていますが、念のため設定を確認します。
※接続できないときのトラブルシューティングになります。
VMware Workstation 15 Playerを起動して対象のゲストOSの「仮想マシン設定の編集」からネットワークアダプタを選択します。
ネットワーク接続がNATにチェックされているか確認します。

![NAT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238625/5cc87912-12d3-fdc2-84ef-9d6725ab0874.png)

##ゲストOS側の設定
VMware Workstation Playerで対象のゲストOSを起動してコンソール画面からゲストOSにログインします。

###1.仮想ネットワークアダプタの設定

ゲストOSのネットワークアダプタ名を確認します。

```console:ゲストOS
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5a:13:36 brd ff:ff:ff:ff:ff:ff

```

ネットワークアダプタ名が`ens33`であることが確認できたのでネットワークアダプタの設定ファイルを編集します。
※環境によってネットワークアダプタ名が異なるため、適宜読み替えてください。


``` console:ゲストOS
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[修正]
BOOTPROTO=dhcp ⇒ BOOTPROTO=none
ONBOOT=no ⇒ ONBOOT=yes
[追記]
IPADDR=192.168.64.30
NETMASK=255.255.255.0
GATEWAY=192.168.64.2
DNS1=8.8.8.8
```
IPアドレスはホストOSのVMnet8のネットワークレンジのIPアドレスをNATデバイスが使用する第4オクテット「2」以外を設定します。
サブネットマスクはVMnet8と同様の範囲を、ゲートウェイはNATデバイスのIPアドレスを設定します。
DNSはホストOSの環境にできるだけ左右されないようにGoogle Public DNS(8.8.8.8)を設定します。

###2.ネットワークサービスの再起動

``` console:ゲストOS
[root@localhost ~]# systemctl restart network
[root@localhost ~]#
```
「systemctl restart network」でエラーが発生する場合ネットワークアダプタの設定ファイルが誤っている可能性があるので見直してください。

###3.接続確認

ネットワークアダプタ(ens33)の設定ファイルが反映されているか確認します。
「ip a」を入力します。

```console:ゲストOS
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5a:13:36 brd ff:ff:ff:ff:ff:ff
    inet 192.168.64.30/24 brd 192.168.64.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::1ed5:260e:7b11:ce9e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
```

TeraTerm接続、インターネット接続を確認します。
ホストOSからゲストOSにTeraTerm接続し、「ping 8.8.8.8」を入力します。

```console:ゲストOS
[root@localhost ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=84.7 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=80.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=94.8 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2010ms
rtt min/avg/max/mdev = 80.443/86.670/94.818/6.033 ms
[root@localhost ~]#

```

##トラブルシューティング

###TeraTerm接続できない時
ホストOSからゲストOSに対してping疎通できるか確認します。
ping疎通でいない場合は、ゲストOSのIPアドレスがVMnet8と同じレンジで設定されていない可能性があります。
ping疎通はできるがTeraTerm接続できない場合はゲストOSのセキュリティや`sshd`の設定に問題がある可能性があります。
`SELinux` `firewalld`の設定を一時的に無効にする or `/etc/ssh/sshd_config`の`listenAddress`の設定を見直してTeraTerm接続を試してください。

###インターネット接続できない時
ホストOSがインターネット接続しているか、ゲストOSのネットワーク接続はNATに設定されているか確認します。
上記の設定に問題がない場合、ゲストOSからNATデバイス(本記事は192.168.64.2)⇒Google Public DNS(8.8.8.8)の順にping疎通できるか確認します。
ping疎通がNGだった箇所のネットワークアダプタ設定を見直してください。

##おわりに
ゲストOSをインターネット接続できるようになるとyumコマンドでMySQLなどのミドルウェアをインストールするのが楽になります。ミドルウェアがインストールできれば、作成したwebアプリケーションをデプロイして動作確認することもできます。自己学習では汎用性のある環境なので是非、活用してください。