阅读时间大约:8min
b站蛋老师视频图片(通俗易懂)
一、NAT
可以看作:宿主机是虚拟机的公网
NAT 的概念
- 通过路由器的网关把局域网映射到互联网
- 路由器的Net功能可以给设备分配不同的私有地址,设备访问互联网时Net可以把私有地址转换为公有地址,并且可以用端口进行标识
NAT概念图(手绘版)
懒得弄了,以下找了VM官图
关于私有地址
私有地址有特定范围,不能被公有地址直接访问
NAT的特点
- 只出不进:虚拟机可以访问宿主机,宿主机不能访问虚拟机
- 虚拟机之间不能互通
以VirtuslBox为例:
- 默认提供网络模式:NAT
- 在这个模式默认有一台虚拟的DHCP服务器[1]
- 因为网络模式是NAT:因此会分配私有地址
- 每创建一台使用NAT模式的虚拟机:都有同样的私有地址(因为都在独立的网络),所以独立的虚拟机不能访问彼此
虚拟机如何正常上网
要通过:两层NAT
- 虚拟机数据发出经过网关(虚拟),软件会对数据包进行改写(使得数据包就像是在宿主环境里生成的)
- 数据包再从宿主环境经过自身的NAT转换发送到互联网
二、NAT网络
让虚拟机在NAT模式下都能互通
- 在虚拟机前多加了一台虚拟交换机
- 为网络分配地址的DHCP服务器地址和网关地址都与NAT不一样
【注意:虚拟机之间Mac地址需要不一样,克隆虚拟机记得刷新Mac地址,以防DHCP握手出现问题】
三、桥接网卡 Bridged Adapter
说大白话就是:虚拟机约等于真机
- 会消耗宿主所在的局域IP地址
四、内部网络 Internal Network
隔离环境
- 虚拟机之间可以互通,但虚拟机不能访问宿主,不能访问网络
- 不提供DHCP服务器(eg.Virtual Box),需要手动设置静态IP地址
补充:设置内部网络前为了不让虚拟机一直卡在DHCP服务里,建议提前设置虚拟机
eg.
Ubuntu 系统里的 netplan 文件下的 yaml 文件
- 添加optional为ture的值,就可以开始设置网络模式了
- 注意互ping两台虚拟机的内部网络名字相同
- 两台虚拟机都要手动配置
这种模式适合于需要在虚拟机之间建立封闭网络环境的场景
五、仅主机 Host-Only
- 有DHCP直接分配IP,但不能访问宿主局域网里的私有地址(无网关配置)
- 但是可以访问虚拟网卡的地址
- 宿主可以访问虚拟机,宿主以外的都不能访问或者被访问
这种模式适合于需要虚拟机与宿主机之间进行通信,但不需要虚拟机直接与外部网络通信的场景
参考
[1]【虚拟机网络模式】NAT | NAT网络 | 桥接Bridged | 内部网络Internal | 仅主机(Host-Only)_哔哩哔哩_bilibili
[2] VMware Workstation Pro 文档
-
DHCP服务器是一种可以分配 IP 地址、子网掩码、默认网关以及其他网络配置信息的服务器。 ↩︎