睿诚科技协会

Ubuntu虚拟机网络配置如何正确设置?

三种网络模式

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

Ubuntu虚拟机网络配置如何正确设置?-图1
(图片来源网络,侵删)

NAT (网络地址转换) - 最常用,最简单

  • 工作原理:虚拟机通过一个虚拟的 NAT 路由器,共享你宿主机(你的物理电脑)的网络,从外部网络看,所有虚拟机的网络请求都来自宿主机的 IP 地址。
  • IP 地址获取:虚拟机自动从虚拟 NAT 路由器获取一个私有 IP 地址(通常是 168.x.x0.x.x 段)。
  • 优点
    • 配置简单:开箱即用,无需任何额外设置,虚拟机就能上网。
    • 隔离性好:虚拟机与外部网络隔离,相对安全。
  • 缺点
    • 无法从外部访问:默认情况下,你的物理网络中的其他设备(如手机、另一台电脑)无法直接访问这台虚拟机。
    • 宿主机访问虚拟机:需要额外配置端口转发才能实现。
  • 适用场景
    • 日常上网、学习、开发,不需要被外部设备访问的场景。
    • 作为服务器,但只允许宿主机访问。

桥接 - 像独立电脑一样

  • 工作原理:虚拟机的虚拟网卡直接“桥接”到宿主机的物理网卡上,虚拟机在局域网中表现得就像一台独立的物理计算机。
  • IP 地址获取:虚拟机从你的路由器(物理网络)获取一个 IP 地址,和你手机、电脑在同一网段。
  • 优点
    • 网络地位平等:虚拟机可以像你的物理机一样,被局域网内的任何设备访问。
    • 可被外部访问:非常适合搭建需要被外部访问的服务,如 Web 服务器、文件服务器等。
  • 缺点
    • 需要 IP 地址:如果你的路由器 DHCP 地址池已满,虚拟机可能无法获取 IP 地址。
    • 占用一个物理端口:相当于在你的网络中多了一台设备。
  • 适用场景
    • 需要搭建一个局域网内可访问的服务器。
    • 需要模拟一个真实的网络环境进行测试。

仅主机模式 - 最安全,最隔离

  • 工作原理:创建一个完全独立的、仅限于宿主机和虚拟机之间通信的私有网络。
  • IP 地址获取:虚拟机从虚拟 DHCP 服务器获取一个私有 IP 地址(通常是 168.56.x 段)。
  • 优点
    • 最高安全性:与外部网络完全隔离,无法上网,只能和宿主机通信。
    • 测试专用:非常适合进行安全的网络测试,不用担心影响外部网络。
  • 缺点
    • 无法上网:除非手动配置宿主机的 IP 转发,否则虚拟机无法访问互联网。
  • 适用场景
    • 进行网络安全渗透测试。
    • 需要一个绝对隔离的测试环境。

实战配置步骤

第一步:在虚拟机软件中设置网络模式

VirtualBox 为例:

  1. 关闭你的 Ubuntu 虚拟机。
  2. 在 VirtualBox 主界面,选中你的 Ubuntu 虚拟机,点击“设置”。
  3. 选择“网络”。
  4. 在“Attached to”下拉菜单中,选择你需要的网络模式(NATBridged AdapterInternal Network/Host-only Network)。
  5. (可选)高级设置:点击“高级”,可以设置“混杂模式”,这有助于虚拟机更好地捕获网络数据包,对网络分析很有用,推荐设置为 All
  6. 点击“确定”保存设置。

VMware Workstation/Fusion 为例:

  1. 关闭你的 Ubuntu 虚拟机。
  2. 在 VMware 主界面,选中你的 Ubuntu 虚拟机,点击“虚拟机” -> “设置”。
  3. 在“硬件”选项卡中,选择“网络适配器”。
  4. 在“网络连接”部分,选择“桥接模式”、“NAT 模式”或“仅主机模式”。
  5. 点击“确定”保存设置。

第二步:在 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 地址。

Ubuntu虚拟机网络配置如何正确设置?-图2
(图片来源网络,侵删)

场景1:静态 IP 配置 (推荐用于服务器)

如果你希望虚拟机的 IP 地址固定不变(用于搭建服务器),需要手动配置静态 IP。

使用 Netplan (Ubuntu 18.04 及以后版本推荐)

  1. 找到你的网络配置文件,它通常位于 /etc/netplan/ 目录下,文件名可能是 01-network-manager-all.yaml50-cloud-init.yaml

    ls /etc/netplan/
  2. 编辑配置文件,使用 sudo 和你喜欢的编辑器(如 nano)打开文件。

    Ubuntu虚拟机网络配置如何正确设置?-图3
    (图片来源网络,侵删)
    sudo nano /etc/netplan/01-network-manager-all.yaml
  3. 修改文件内容,假设你的网卡是 enp0s3,你希望设置一个静态 IP 168.1.100,网关 168.1.1,DNS 8.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 后面的地址。
  4. 应用配置

    sudo netplan apply

    如果配置正确,不会有任何输出,你可以再次使用 ip addr showping 8.8.8.8 来验证。

使用传统的 /etc/network/interfaces (适用于旧版或习惯它的用户)

  1. 编辑 /etc/network/interfaces 文件。

    sudo nano /etc/network/interfaces
  2. 修改或添加以下内容:

    # 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
  3. 重启网络服务或重启虚拟机使配置生效。

    # 重启网络服务
    sudo systemctl restart networking
    # 或者重启网络接口
    sudo ifdown enp0s3 && sudo ifup enp0s3

场景2:NAT 模式下实现端口转发 (让外部访问虚拟机服务)

假设你在 NAT 模式的虚拟机里运行了一个 Web 服务器,端口是 8080,你想从宿主机用 http://localhost:8080 访问它。

以 VirtualBox 为例:

  1. 关闭虚拟机
  2. 进入虚拟机的“设置” -> “网络”。
  3. 在 NAT 网卡设置页面,点击“高级” -> “端口转发”。
  4. 点击右上角的“添加”按钮,添加一条规则:
    • 名称web-forward (任意)
    • 协议TCP
    • 主机 IP:留空 (代表 0.0.1)
    • 主机端口8080 (宿主机上访问的端口)
    • 子系统 IP:留空 (代表虚拟机的 IP)
    • 子系统端口8080 (虚拟机内服务的端口)
  5. 点击“确定”保存,在宿主机的浏览器中访问 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 模式是最好的起点,当你需要搭建一个真正的服务器时,再切换到桥接模式

分享:
扫描分享到社交APP
上一篇
下一篇