文章目录
- 网络模式
- 配网要求
- CentOS
- DHCP
- 虚拟网络
- 桥接模式
- 默认配置
- 测试
- 手动配置
- 测试
- 网络地址转发模式 (NAT)
网络模式
- 桥接模式:
- 主机与虚拟机对等, 虚拟机注册到主机所在的局域网, 会占用该网络的IP
- 该局域网内的所有机器, 包括主机和其他机器和所有虚拟机, 均可互相访问
- 网络地址转发(NAT)模式:
- 可以认为是在主机下建立了一个虚拟局域网, 虚拟机注册到该网络, 不会占用主机所在局域网的IP
- 虚拟机可通过主机访问互联网
- 主机和所有虚拟机可以互相访问
- 虚拟机可以访问局域网中的其他机器. 但是反过来不行(貌似NAT-PAT端口多路复用(不同端口指向不同虚拟机)可以实现该功能)
- 仅主机模式:
- 和NAT类似
- 但是虚拟机只能和主机互相访问
- 不能通过主机访问互联网
- 也不能访问主机局域网中的其他机器
配网要求
作为一名 Java 从业者, 通常需要主机与虚拟机具有如下的网络特点
- 主机与各虚拟机之间能够互相访问
- 各虚拟机之间能够互相访问
- 虚拟机能够访问互联网
- 每一台虚拟机的IP地址一经配置则固定不变, 即使主机所在网络发生变化, 也不能影响虚拟机的IP
- 很多中间件有高可用, 需要互相配置IP地址, 一旦虚拟机IP发生变化, 修改起来会很麻烦
这样看来桥接模式不符合第四点, 仅主机模式模式不符合第三点, 只有NAT模式符合要求
CentOS
- CentOS Stream 9 之前, 网络配置在
/etc/sysconfig/network-scripts
下, 格式是 ifcfg - CentOS Stream 9, 网络配置在
/etc/NetworkManager/system-connections
下, 格式是 keyfile, 就是 ini 配置文件的格式
CentOS Stream 9 也没有了以前配置网络的命令
- service network start/restart/status
- systemctl start/restart/status network
CentOS Stream 9 重新加载网络配置
- nmcli c reload
- nmcli c up ens160, 这里的 ens160 是网卡名, 可根据实际情况更改
CentOS Stream 9 之前的配置大致是这个样子
TYPE=Ethernet # 网络类型为以太网
BOOTPROTO=static # 手动分配IP地址
DEVICE=ens32 # 网卡设备名,设备名和文件名一定要一致
ONBOOT=yes # 网卡随网络服务启动
IPADDR=192.168.1.201 # 网卡IP地址, 要和Windows在同一个网段, 即192.168.1.*
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 默认网关
DNS1=8.8.8.8 # DNS,8.8.8.8为Google提供的免费DNS服务器IP地址
CentOS Stream 9 的默认配置如下, 可以看到默认的 ipv4 配置是自动获取 IP 地址, 如果有 DHCP 服务, 则该配置的虚拟机在启动后, 应该能自动拿到 IP 地址, 可以直接访问互联网
[connection]
id=ens160
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type=etherent
autoconnect-priority=-999
interface-name=ens160
timestamp=1692376766
[ethernet]
[ipv4]
method=auto
[ipv6]
addr-gen-mode=eui64
method=auto
[proxy]
下面的测试均以 CentOS Stream 9 为例, 在 CentOS Stream 9 下的默认配置与效果, 在其他版本下不一定一致, 但大致相同
DHCP
DHCP 服务可以按照一定的规则和限制给客户端动态分配 IP 地址
NAT 模式和仅主机模式, 内置了 DHCP 服务, 桥接模式则使用主机所在局域网的 DHCP 服务, 即这三种网络模式的虚拟机, 如果系统配置了自动获取 IP 地址, 则虚拟机启动后就能获得一定限制内随机的 IP 地址, 每次启动后, 分配的 IP 地址可能会发生变化
虚拟网络
本机目前只连接了无线, 所以本次实验以无线网卡为准
在控制面板中, 我们可以看到网卡的信息, 以太网是有线网卡(本次暂无), WLAN 是无线网卡
当安装了 VMWare Workstation 后, 会多出来 VMnew1 和 VMnet8 两张虚拟网卡
在 VMWare Workstation 的 虚拟网络编辑器 中可以查看和配置这些虚拟网络
VMnet1 对应的是仅主机模式, VMnet8 对应的 NAT 模式, VMnet0 对应桥接模式, 据说桥接模式直接使用了主机网卡, 所以不会在控制面板的网络适配器中显示
桥接模式
默认情况下, 我们用桥接模式创建的 CentOS Stream 9 虚拟机可以直接访问互联网
虽然桥接模式没有 DHCP, 但是桥接模式会使用主机所在局域网的 DHCP 服务
桥接模式下, 虚拟机和主机对等, 应当在相同的网段, 有相同的子网掩码, 所以要配置虚拟机网络, 需要先了解主机当前的网络
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 2409:8a0c:247:8f70:46f:6c47:8c14:77da
临时 IPv6 地址. . . . . . . . . . : 2409:8a0c:247:8f70:c96e:29a0:184f:3906
本地链接 IPv6 地址. . . . . . . . : fe80::9ce9:cfa2:bedb:b6cc%3
IPv4 地址 . . . . . . . . . . . . : 192.168.1.2
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : fe80::1%3
192.168.1.1
可知主机网络如下
- 默认网关: 192.168.1.1
- 子网掩码: 255.255.255.0
- 主机地址: 192.168.1.2
所以桥接模式的虚拟机地址可以配置为 192.168.1.3 ~ 192.168.1.254 中和其他设备不冲突的任何一个地址, 具体可以百度网络相关方面的知识
我们以 192.168.1.129/24 为例, /24 就是子网掩码 255.255.255.0
默认配置
首先查看虚拟网络编辑器中 VMnet0 的配置, 应将其桥接至正确的物理无线网卡上, 默认的自动一般都是没有问题不需要修改的
然后我们看虚拟机设置, 将网络连接修改为桥接模式, 然后启动虚拟机, 通过 ip a
查看虚拟机网络信息
可以看到 ens160 的地址被分配了 192.168.1.5
测试
互相访问试试看
可以看到
- 主机可以访问虚拟机
- 虚拟机可以访问主机
- 虚拟机可以访问主机局域网内的其他机器
- 主机局域网内的其他机器可以访问虚拟机
手动配置
在 /etc/NetworkManager/system-connections
下默认只有一个配置文件 ens160.nmconnection
, 其内容如下
[connection]
id=ens160
uuid=9b698abd-9a30-3055-98c2-8ace52598494
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1692431323
[ethernet]
[ipv4]
method=auto
[ipv6]
addr-gen-mode=eui64
method=auto
[proxy]
在配置节 ipv4 下修改配置如下
method=manual
address1=192.168.1.129/24
manual
代表手动配置网络地址
执行 nmcli c reload
和 nmcli c up ens160
重新载入网络配置, 可看到 IP 地址已经更改
测试
可见, 测试结果与预期完全相同, 即
- 主机可以访问虚拟机
- 虚拟机可以访问主机
- 虚拟机可以访问主机局域网内的其他机器
- 主机局域网内的其他机器可以访问虚拟机