16.3. 配置外部可见虚拟机


在很多情况下,默认的 VM 网络配置已经足够了。但是,如果您需要调整配置,您可以使用命令行(CLI)或 RHEL 10 web 控制台进行此操作。

16.3.1. 使用命令行配置外部可见的虚拟机

默认情况下,新创建的虚拟机连接到使用 virbr0 (主机上默认的虚拟网桥)的 NAT 类型网络。这可确保虚拟机可以使用主机的网络接口控制器(NIC)来连接到外部网络,但无法从外部系统访问虚拟机。

如果您需要虚拟机出现在与虚拟机监控程序相同的外部网络中,则必须使用桥接模式。为此,请将虚拟机连接到连接到 hypervisor 物理网络设备的网桥设备。

先决条件

  • 带有默认 NAT 设置的现有虚拟机
  • 管理程序的 IP 配置。这随着主机的网络连接而变化。例如,这个流程使用这样一种场景,其中主机使用以太网线连接到网络,主机的物理 NIC MAC 地址被分配给 DHCP 服务器上的一个静态 IP。因此,以太网接口被视为 hypervisor IP。

    要获取以太网接口的 IP 配置,请使用 ip addr 工具:

    # ip addr
    [...]
    enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 54:ee:75:49:dc:46 brd ff:ff:ff:ff:ff:ff
        inet 192.0.2.1/24 brd 192.0.2.255 scope global dynamic noprefixroute enp0s25

流程

  1. 为主机上的物理接口创建和设置网桥连接。具体步骤请参阅 配置网络桥接

    请注意,在使用静态 IP 分配的场景中,您必须将物理以太网接口的 IPv4 设置移到网桥接口。

  2. 修改虚拟机的网络,以使用创建的桥接接口。例如,以下设置 testguest 使用 bridge0

    # virt-xml testguest --edit --network bridge=bridge0
    Domain 'testguest' defined successfully.
  3. 启动虚拟机。

    # virsh start testguest
  4. 在客户机操作系统中,调整系统网络接口的 IP 和 DHCP 设置,就好像虚拟机是与 hypervisor 位于同一网络中的另一台物理系统一样。

    这的具体步骤因虚拟机使用的客户机操作系统而异。例如,如果客户机操作系统是 RHEL 10,请参阅 配置以太网连接

验证

  1. 确保新创建的网桥正在运行,并且包含主机的物理接口和虚拟机的接口。

    # ip link show master bridge0
    2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000
        link/ether 54:ee:75:49:dc:46 brd ff:ff:ff:ff:ff:ff
    10: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UNKNOWN mode DEFAULT group default qlen 1000
        link/ether fe:54:00:89:15:40 brd ff:ff:ff:ff:ff:ff
  2. 确保虚拟机显示在与 hypervisor 相同的外部网络上:

    1. 在客户机操作系统中,获取系统的网络 ID。例如,如果它是 Linux 客户机:

      # ip addr
      [...]
      enp0s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether 52:54:00:09:15:46 brd ff:ff:ff:ff:ff:ff
          inet 192.0.2.1/24 brd 192.0.2.255 scope global dynamic noprefixroute enp0s0
    2. 从连接到本地网络的外部系统,使用获取的 ID 连接到虚拟机。

      # ssh root@192.0.2.1
      root@192.0.2.1's password:
      Last login: Mon Sep 24 12:05:36 2019
      root~#*

      如果连接正常工作,则网络已配置成功。

故障排除

  • 在某些情况下,比如当虚拟机托管在客户端上时使用客户端到站点的 VPN ,使用桥接模式使您的虚拟机可用于外部位置是不可能的。

    要临时解决这个问题,您可以使用 nftables为虚拟机设置目标 NAT

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部