三种网络模式
在开始配置之前,你必须先理解虚拟机软件(如 VMware、VirtualBox)提供的三种主要网络模式,这是所有配置的基础。

NAT (网络地址转换) - 最常用,最简单
- 工作原理:虚拟机通过一个虚拟的 NAT 路由器,共享你宿主机(你的物理电脑)的网络,从外部网络看,所有虚拟机的网络请求都来自宿主机的 IP 地址。
- IP 地址获取:虚拟机自动从虚拟 NAT 路由器获取一个私有 IP 地址(通常是
168.x.x或0.x.x段)。 - 优点:
- 配置简单:开箱即用,无需任何额外设置,虚拟机就能上网。
- 隔离性好:虚拟机与外部网络隔离,相对安全。
- 缺点:
- 无法从外部访问:默认情况下,你的物理网络中的其他设备(如手机、另一台电脑)无法直接访问这台虚拟机。
- 宿主机访问虚拟机:需要额外配置端口转发才能实现。
- 适用场景:
- 日常上网、学习、开发,不需要被外部设备访问的场景。
- 作为服务器,但只允许宿主机访问。
桥接 - 像独立电脑一样
- 工作原理:虚拟机的虚拟网卡直接“桥接”到宿主机的物理网卡上,虚拟机在局域网中表现得就像一台独立的物理计算机。
- IP 地址获取:虚拟机从你的路由器(物理网络)获取一个 IP 地址,和你手机、电脑在同一网段。
- 优点:
- 网络地位平等:虚拟机可以像你的物理机一样,被局域网内的任何设备访问。
- 可被外部访问:非常适合搭建需要被外部访问的服务,如 Web 服务器、文件服务器等。
- 缺点:
- 需要 IP 地址:如果你的路由器 DHCP 地址池已满,虚拟机可能无法获取 IP 地址。
- 占用一个物理端口:相当于在你的网络中多了一台设备。
- 适用场景:
- 需要搭建一个局域网内可访问的服务器。
- 需要模拟一个真实的网络环境进行测试。
仅主机模式 - 最安全,最隔离
- 工作原理:创建一个完全独立的、仅限于宿主机和虚拟机之间通信的私有网络。
- IP 地址获取:虚拟机从虚拟 DHCP 服务器获取一个私有 IP 地址(通常是
168.56.x段)。 - 优点:
- 最高安全性:与外部网络完全隔离,无法上网,只能和宿主机通信。
- 测试专用:非常适合进行安全的网络测试,不用担心影响外部网络。
- 缺点:
- 无法上网:除非手动配置宿主机的 IP 转发,否则虚拟机无法访问互联网。
- 适用场景:
- 进行网络安全渗透测试。
- 需要一个绝对隔离的测试环境。
实战配置步骤
第一步:在虚拟机软件中设置网络模式
以 VirtualBox 为例:
- 关闭你的 Ubuntu 虚拟机。
- 在 VirtualBox 主界面,选中你的 Ubuntu 虚拟机,点击“设置”。
- 选择“网络”。
- 在“Attached to”下拉菜单中,选择你需要的网络模式(
NAT、Bridged Adapter或Internal Network/Host-only Network)。 - (可选)高级设置:点击“高级”,可以设置“混杂模式”,这有助于虚拟机更好地捕获网络数据包,对网络分析很有用,推荐设置为
All。 - 点击“确定”保存设置。
以 VMware Workstation/Fusion 为例:
- 关闭你的 Ubuntu 虚拟机。
- 在 VMware 主界面,选中你的 Ubuntu 虚拟机,点击“虚拟机” -> “设置”。
- 在“硬件”选项卡中,选择“网络适配器”。
- 在“网络连接”部分,选择“桥接模式”、“NAT 模式”或“仅主机模式”。
- 点击“确定”保存设置。
第二步:在 Ubuntu 系统内部配置网络
完成第一步后,启动 Ubuntu 虚拟机,系统通常会自动通过 DHCP 获取 IP 地址,你可以通过以下命令检查网络状态:
# 查看所有网络接口 ip addr show # 查看网络连接状态 ip link show # 查看路由表 ip route show # 测试网络连通性 (ping 百度) ping -c 4 8.8.8.8
你会看到一个名为 enp0s3 (VirtualBox) 或 ens33 (VMware) 的网卡,它已经获得了 IP 地址。

场景1:静态 IP 配置 (推荐用于服务器)
如果你希望虚拟机的 IP 地址固定不变(用于搭建服务器),需要手动配置静态 IP。
使用 Netplan (Ubuntu 18.04 及以后版本推荐)
-
找到你的网络配置文件,它通常位于
/etc/netplan/目录下,文件名可能是01-network-manager-all.yaml或50-cloud-init.yaml。ls /etc/netplan/
-
编辑配置文件,使用
sudo和你喜欢的编辑器(如nano)打开文件。
(图片来源网络,侵删)sudo nano /etc/netplan/01-network-manager-all.yaml
-
修改文件内容,假设你的网卡是
enp0s3,你希望设置一个静态 IP168.1.100,网关168.1.1,DNS8.8.8。# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud's # managing of this device write a file /etc/netplan/99-custom-networking.yaml # with the following content: # network: # version: 2 # ethernets: # enp0s3: # dhcp4: no # dhcp6: no # network: version: 2 renderer: networkd ethernets: enp0s3: # <-- 替换为你的网卡名 dhcp4: no addresses: [192.168.1.100/24] # <-- 设置你的静态IP和子网掩码 gateway4: 192.168.1.1 # <-- 设置你的网关 nameservers: addresses: [8.8.8.8, 1.1.1.1] # <-- 设置DNS重要提示:
enp0s3:务必使用ip addr show命令查到的你自己的网卡名称。/24:这是 CIDR 表示法,等同于子网掩码255.255.0。gateway4:通常是你的路由器地址,可以通过ip route show查看default via后面的地址。
-
应用配置。
sudo netplan apply
如果配置正确,不会有任何输出,你可以再次使用
ip addr show和ping 8.8.8.8来验证。
使用传统的 /etc/network/interfaces (适用于旧版或习惯它的用户)
-
编辑
/etc/network/interfaces文件。sudo nano /etc/network/interfaces
-
修改或添加以下内容:
# The primary network interface auto enp0s3 iface enp0s3 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 1.1.1.1 -
重启网络服务或重启虚拟机使配置生效。
# 重启网络服务 sudo systemctl restart networking # 或者重启网络接口 sudo ifdown enp0s3 && sudo ifup enp0s3
场景2:NAT 模式下实现端口转发 (让外部访问虚拟机服务)
假设你在 NAT 模式的虚拟机里运行了一个 Web 服务器,端口是 8080,你想从宿主机用 http://localhost:8080 访问它。
以 VirtualBox 为例:
- 关闭虚拟机。
- 进入虚拟机的“设置” -> “网络”。
- 在 NAT 网卡设置页面,点击“高级” -> “端口转发”。
- 点击右上角的“添加”按钮,添加一条规则:
- 名称:
web-forward(任意) - 协议:
TCP - 主机 IP:留空 (代表
0.0.1) - 主机端口:
8080(宿主机上访问的端口) - 子系统 IP:留空 (代表虚拟机的 IP)
- 子系统端口:
8080(虚拟机内服务的端口)
- 名称:
- 点击“确定”保存,在宿主机的浏览器中访问
http://localhost:8080,请求就会被转发到虚拟机的 8080 端口。
故障排查
-
问题1:虚拟机无法上网。
- 检查:虚拟机软件中的网络模式是否正确设置?是否是
NAT或桥接模式? - 检查:在 Ubuntu 内部,是否禁用了该网络接口?使用
sudo ip link set <网卡名> up启用它。 - 检查:是否是 DHCP 问题?尝试手动设置一个 IP(即使是临时的)看能否通网。
- 检查:
/etc/resolv.conf文件中的 DNS 服务器是否正确?可以临时改为nameserver 8.8.8.8测试。
- 检查:虚拟机软件中的网络模式是否正确设置?是否是
-
问题2:桥接模式下,虚拟机获取不到 IP。
- 检查:你的物理网络是否正常?手机、电脑能否正常上网?
- 检查:路由器的 DHCP 地址池是否已满?可以尝试重启路由器。
- 检查:是否 IP 冲突?在路由器管理界面查看已分配的 IP 列表。
-
问题3:静态 IP 配置后无法上网。
- 检查:
/24子网掩码是否正确? - 检查:
gateway4是否正确?这是最常见的原因。 - 检查:DNS 服务器地址是否正确?这会导致域名无法解析。
- 检查:
| 网络模式 | IP 获取方式 | 能否被外部访问 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|---|---|
| NAT | 虚拟 NAT 服务器 (私有IP) | 否 (默认) | 配置简单,安全 | 无法被外部直接访问 | 日常上网、学习、开发 |
| 桥接 | 物理路由器 (局域网IP) | 是 | 网络地位平等,可被访问 | 需要额外IP,可能冲突 | 搭建局域网可访问的服务器 |
| 仅主机 | 虚拟 DHCP (私有IP) | 否 (与外部隔离) | 绝对安全,隔离性好 | 无法上网 | 安全测试、隔离环境 |
选择哪种模式完全取决于你的需求,对于大多数初学者和日常使用,NAT 模式是最好的起点,当你需要搭建一个真正的服务器时,再切换到桥接模式。
