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
流程
为主机上的物理接口创建和设置网桥连接。具体步骤请参阅 配置网络桥接。
请注意,在使用静态 IP 分配的场景中,您必须将物理以太网接口的 IPv4 设置移到网桥接口。
修改虚拟机的网络,以使用创建的桥接接口。例如,以下设置 testguest 使用 bridge0。
# virt-xml testguest --edit --network bridge=bridge0 Domain 'testguest' defined successfully.启动虚拟机。
# virsh start testguest在客户机操作系统中,调整系统网络接口的 IP 和 DHCP 设置,就好像虚拟机是与 hypervisor 位于同一网络中的另一台物理系统一样。
这的具体步骤因虚拟机使用的客户机操作系统而异。例如,如果客户机操作系统是 RHEL 10,请参阅 配置以太网连接。
验证
确保新创建的网桥正在运行,并且包含主机的物理接口和虚拟机的接口。
# 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确保虚拟机显示在与 hypervisor 相同的外部网络上:
在客户机操作系统中,获取系统的网络 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从连接到本地网络的外部系统,使用获取的 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。