最近していたAWSの勉強の中で、「自分は全然ネットワークがわかってないな…」と思ったので、サーバの勉強のためにインストールしていたVMware Playerを使っていろいろいじってみました。その結果を3回くらいに分けてまとめようと思います。
初回は、仮想ネットワークについて実際に動作確認しながらまとめます。
<全3回でやろうと思っていること>
①VMware Playerの仮想ネットワーク設定 ←今回はこれです。
(1) VMware Playerの仮想ネットワークの種類と設定方法
(2) NAT接続
(3) ブリッジ接続
(4) ホストオンリー接続
(5) カスタム接続(ホスト接続無し)
②VyOS1.4を使ったDNS,DHCP,NATなど
③VyOS1.4とAWS VPC間のSite-to-Site VPN接続
<環境>
ホストOS: Windows10 20H2
ハイパーバイザ: VMware WorkStation 16 Player
ゲストOS①: CentOS 8
ゲストOS②: CentOS 7
#(1) VMware Playerの仮想ネットワークの種類と設定方法
VMWare Playerの「仮想マシン設定」を開くとネットワークアダプタの設定が可能。
種類は以下の4種類。
- NAT・・・デフォルトはVMNet8。インターネット接続可能。
- ブリッジ・・・デフォルトはVMNet0。インターネット接続可能。
- ホストオンリー・・・デフォルトはVMNet1、インターネット接続不可。
- カスタム・・・都度設定可能。今回はゲストOS間接続用のネットワークを作る(後述)。
それぞれの設定は設定ファイルをいじることも可能だが、今回はGUIでネットワークを構成できる仮想ネットワークエディタ(vmnetcfg)を使って実施した。導入はVMware Workstation 15 Playerでvmnetcfgを使って仮想ネットワークを設定するを参考に実施。
#(2) NAT接続
##特徴
ゲストOSからインターネット接続する際にNATをしてインターネットルータにアクセスしに行っている。そのため、インターネットルータからするとホストOSから接続しに来たように見えている。
なお、VMware Player上では全部で20のネットワークを構成できるが、NAT接続ネットワークは1つしか作れない。デフォルトではVMNet8がそれにあたる。
##ネットワーク設定
仮想ネットワークエディタで、下記のように設定。
VMNet情報はNAT、ホスト接続有、DHCP有。
各OSのネットワーク設定は下記の通り。
####ホストOS
PS C:\Users\flets> ipconfig
Windows IP 構成
~中略~
イーサネット アダプター VMware Network Adapter VMnet8:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.159.1
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
Wireless LAN adapter Wi-Fi:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.11.8
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.11.1
####ゲストOS①
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.138 netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::e358:76fb:5d91:148c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b7:82:18 txqueuelen 1000 (Ethernet)
RX packets 9 bytes 1108 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24 bytes 3678 (3.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
####ゲストOS②
[root@akiravm01 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@akiravm01 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.136 netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::2c93:65ca:b799:e762 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d3:0e:16 txqueuelen 1000 (Ethernet)
RX packets 3610 bytes 1854236 (1.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1386 bytes 182286 (178.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
##接続検証
ホストOS→ゲストOS①、ゲストOS①→インターネットとも接続可能であることを確認した。
####ホストOS→ゲストOS①
PS C:\Users\flets> ping 192.168.159.138
192.168.159.138 に ping を送信しています 32 バイトのデータ:
192.168.159.138 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.159.138 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.159.138 からの応答: バイト数 =32 時間 =5ms TTL=64
192.168.159.138 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.159.138 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 5ms、平均 = 1ms
####ゲスト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=11.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=12.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=13.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=9.11 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 21ms
rtt min/avg/max/mdev = 9.109/11.696/13.498/1.685 ms
[root@localhost ~]#
#(3) ブリッジ接続
##特徴
仮想的に構成されたブリッジ経由で、ホストOSと横並びでネットワークに接続する。
その為、ホストOSにつながったインターネットルータからはホストOSと同等の1クライアントに見える形で接続されている。
デフォルトではVMNet0が相当。
##ネットワーク設定
仮想ネットワークエディタで、下記のように設定。
VMNet情報はブリッジ、ホストOS接続やDHCP設定はブリッジ接続の為不要。
ちなみにブリッジ先は「自動」になっているが、以下のように選択肢がある。
Marvell AVASTARというのがブリッジしたい先のBaffaloAirstation。
これはipconfig /all
した時の説明(Description)
部分に該当。
PS C:\Users\flets> ipconfig /all
Windows IP 構成
ホスト名. . . . . . . . . . . . . . .: akirapc-surface
プライマリ DNS サフィックス . . . . .:
ノード タイプ . . . . . . . . . . . .: ハイブリッド
IP ルーティング有効 . . . . . . . . .: いいえ
WINS プロキシ有効 . . . . . . . . . .: いいえ
イーサネット アダプター vEthernet (Default Switch):
接続固有の DNS サフィックス . . . . .:
説明. . . . . . . . . . . . . . . . .: Hyper-V Virtual Ethernet Adapter !!!!!!!!ここ!!!!!!!!
物理アドレス. . . . . . . . . . . . .: XX-XX-XX-XX-XX-XX
DHCP 有効 . . . . . . . . . . . . . .: いいえ
自動構成有効. . . . . . . . . . . . .: はい
リンクローカル IPv6 アドレス. . . . .: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx%xx(優先)
IPv4 アドレス . . . . . . . . . . . .: xxx.xxx.xxx.xxx(優先)
サブネット マスク . . . . . . . . . .: 255.255.240.0
デフォルト ゲートウェイ . . . . . . .:
DHCPv6 IAID . . . . . . . . . . . . .: xxxxxxxxxx
DHCPv6 クライアント DUID. . . . . . .: xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx
DNS サーバー. . . . . . . . . . . . .: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx%xx
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx%xx
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx%xx
NetBIOS over TCP/IP . . . . . . . . .: 有効
Wireless LAN adapter Wi-Fi:
接続固有の DNS サフィックス . . . . .:
説明. . . . . . . . . . . . . . . . .: Marvell AVASTAR Wireless-AC Network Controller !!!!!!!!ここ!!!!!!!!
物理アドレス. . . . . . . . . . . . .: XX-XX-XX-XX-XX-XX
DHCP 有効 . . . . . . . . . . . . . .: はい
自動構成有効. . . . . . . . . . . . .: はい
IPv6 アドレス . . . . . . . . . . . .: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(優先)
一時 IPv6 アドレス. . . . . . . . . .: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(優先)
リンクローカル IPv6 アドレス. . . . .: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx%xx(優先)
IPv4 アドレス . . . . . . . . . . . .: 192.168.11.8(優先)
サブネット マスク . . . . . . . . . .: 255.255.255.0
リース取得. . . . . . . . . . . . . .: 2021年5月15日 2:13:24
リースの有効期限. . . . . . . . . . .: 2021年5月18日 10:45:21
デフォルト ゲートウェイ . . . . . . .: 192.168.11.1
DHCP サーバー . . . . . . . . . . . .: 192.168.11.1
DHCPv6 IAID . . . . . . . . . . . . .: 62686085
DHCPv6 クライアント DUID. . . . . . .: xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx
DNS サーバー. . . . . . . . . . . . .: 192.168.11.1
NetBIOS over TCP/IP . . . . . . . . .: 有効
####ホストOS
横並びなので、VMNet0などの記述は無し。
PS C:\Users\flets> ipconfig
Windows IP 構成
~中略~
Wireless LAN adapter Wi-Fi:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.11.8
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.11.1
####ゲストOS①
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.11.23 netmask 255.255.255.0 broadcast 192.168.11.255
inet6 fe80::4ce4:9122:72c0:4e21 prefixlen 64 scopeid 0x20<link>
inet6 2409:11:1360:4f00:f7b7:331a:3820:2c42 prefixlen 64 scopeid 0x0<global>
ether 00:0c:29:b7:82:0e txqueuelen 1000 (Ethernet)
RX packets 19659 bytes 17414476 (16.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5030 bytes 452455 (441.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
####ゲストOS②
[root@akiravm01 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.11.24 netmask 255.255.255.0 broadcast 192.168.11.255
inet6 2409:11:1360:4f00:2c6e:7637:c292:38a prefixlen 64 scopeid 0x0<global>
inet6 fe80::9a5d:5a44:c45c:cc78 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d3:0e:2a txqueuelen 1000 (Ethernet)
RX packets 21 bytes 2496 (2.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35 bytes 5547 (5.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
##接続検証
ホストOS→ゲストOS①、ゲストOS①→インターネットとも接続可能であることを確認した。
####ホストOS→ゲストOS①
PS C:\Users\flets> ping 192.168.11.23
192.168.11.23 に ping を送信しています 32 バイトのデータ:
192.168.11.23 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.11.23 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.11.23 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.11.23 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.11.23 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
PS C:\Users\flets>
####ゲスト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=14.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=15.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=9.19 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=17.2 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 21ms
rtt min/avg/max/mdev = 9.192/13.998/17.153/2.973 ms
[root@localhost ~]#
#(4) ホストオンリー接続
##特徴
ホストOSとゲストOSとを接続するためのネットワークであり、ホストOSが接続している他のネットワークとは分離されている。
すなわち、ゲストOSはホストオンリー接続でホストOSとつながっていても、インターネットにはアクセスできない。
デフォルトではVMNet1が相当する。
##ネットワーク設定
仮想ネットワークエディタで、下記のように設定。
VMNet情報はホストオンリー、ホスト接続有、DHCP有。
####ホストOS
PS C:\Users\flets> ipconfig
Windows IP 構成
~中略~
イーサネット アダプター VMware Network Adapter VMnet1:
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: fe80::bd7f:17e8:83a0:dc6f%24
IPv4 アドレス . . . . . . . . . . . .: 192.168.25.1
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
Wireless LAN adapter Wi-Fi:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.11.8
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.11.1
####ゲストOS①
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.25.128 netmask 255.255.255.0 broadcast 192.168.25.255
inet6 fe80::a8f:ac4:74a6:979a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b7:82:fa txqueuelen 1000 (Ethernet)
RX packets 3874 bytes 291957 (285.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2094 bytes 215543 (210.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
####ゲストOS②
[root@akiravm01 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.25.129 netmask 255.255.255.0 broadcast 192.168.25.255
inet6 fe80::9a5d:5a44:c45c:cc78 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d3:0e:2a txqueuelen 1000 (Ethernet)
RX packets 231 bytes 20916 (20.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 62 bytes 9921 (9.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
##接続検証
ホストOS→ゲストOS①は接続できるが、ゲストOS①→インターネットは接続不可であることを確認した。
####ホストOS→ゲストOS①
PS C:\Users\flets> ping 192.168.25.128
192.168.25.128 に ping を送信しています 32 バイトのデータ:
192.168.25.128 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.25.128 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.25.128 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.25.128 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.25.128 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
PS C:\Users\flets>
####ゲストOS①→インターネット
[root@localhost ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
61 packets transmitted, 0 received, 100% packet loss, time 596ms
[root@localhost ~]#
#(5) カスタム接続(ホスト接続無し)
##特徴
ゲストOS間を接続するためのネットワーク。
ホストOSとも接続しない設定。今回はVMNet2で設定を実施。
##ネットワーク設定
仮想ネットワークエディタで、下記のように設定。
VMNet情報はホストオンリー、ホスト接続無、DHCP有。
####ホストOS
VMnet2が設定されていないことを確認。
PS C:\Users\flets> ipconfig | grep VMnet2
PS C:\Users\flets>
####ゲストOS①
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.109.129 netmask 255.255.255.0 broadcast 192.168.109.255
inet6 fe80::cf76:603f:326:2260 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b7:82:04 txqueuelen 1000 (Ethernet)
RX packets 34 bytes 6834 (6.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 554 bytes 40480 (39.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
####ゲストOS②
[root@akiravm01 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.109.134 netmask 255.255.255.0 broadcast 192.168.109.255
inet6 fe80::9a5d:5a44:c45c:cc78 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d3:0e:2a txqueuelen 1000 (Ethernet)
RX packets 235 bytes 22004 (21.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 97 bytes 16275 (15.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
##接続検証
ホストOS→ゲストOS①、ゲストOS①→インターネットとも接続不可であることを確認した。
ゲストOS①→ゲストOS②は接続可能であることを確認した。
####ホストOS→ゲストOS①
PS C:\Users\flets> ping 192.168.109.129
192.168.109.129 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
192.168.109.129 の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、
PS C:\Users\flets>
####ゲストOS①→インターネット
[root@localhost ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.109.129 icmp_seq=1 Destination Host Unreachable
From 192.168.109.129 icmp_seq=2 Destination Host Unreachable
From 192.168.109.129 icmp_seq=3 Destination Host Unreachable
From 192.168.109.129 icmp_seq=4 Destination Host Unreachable
From 192.168.109.129 icmp_seq=5 Destination Host Unreachable
From 192.168.109.129 icmp_seq=6 Destination Host Unreachable
^C
--- 8.8.8.8 ping statistics ---
9 packets transmitted, 0 received, +6 errors, 100% packet loss, time 236ms
pipe 4
[root@localhost ~]#
####ゲストOS①→ゲストOS②
[root@localhost ~]# ping 192.168.109.134
PING 192.168.109.134 (192.168.109.134) 56(84) bytes of data.
64 bytes from 192.168.109.134: icmp_seq=1 ttl=64 time=1.66 ms
64 bytes from 192.168.109.134: icmp_seq=2 ttl=64 time=1.52 ms
64 bytes from 192.168.109.134: icmp_seq=3 ttl=64 time=1.07 ms
64 bytes from 192.168.109.134: icmp_seq=4 ttl=64 time=1.15 ms
64 bytes from 192.168.109.134: icmp_seq=5 ttl=64 time=1.83 ms
^C
--- 192.168.109.134 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 20ms
rtt min/avg/max/mdev = 1.070/1.446/1.828/0.296 ms
[root@localhost ~]#
#まとめ
なるべく自分で色々設定してみながら接続検証するのを今回の目的にしておりますが、ざっくりだとは思うものの外観がつかめて良かったです。
今回学んだことを前提に、次はオープンソースのルータであるVyOSを使ってまた色々試してみようと思います。
#参考
[ネットワーク接続の構成(VMware Docs)](https://docs.vmware.com/jp/VMware-Workstation-Pro/12.0/com.vmware.ws.using.doc/GUID-0CE1AE01-7E79-41BB-9EA8-4F839BE40E1A.html)
[VMware Workstation 15 Playerでvmnetcfgを使って仮想ネットワークを設定する](https://qiita.com/sakai00kou/items/995bc2b4f4a0f531f49c)