17.3. 推荐的虚拟机网络配置
在很多情况下,默认的 VM 网络配置已经足够了。但是,如果需要调整配置,您可以使用命令行界面 (CLI) 或 RHEL 9 web 控制台进行此操作。以下章节描述了这些情况下所选择的虚拟机网络设置。
17.3.1. 使用命令行界面配置外部可见的虚拟机
默认情况下,新创建的虚拟机连接到使用 virbr0
(主机上默认的虚拟网桥)的 NAT 类型网络。这可确保虚拟机可以使用主机的网络接口控制器(NIC)来连接到外部网络,但无法从外部系统访问虚拟机。
如果需要虚拟机出现在与 hypervisor 相同的外部网络上,您必须使用 桥接模式。为此,请将虚拟机连接到连接到 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 9,请参阅配置以太网连接。
验证
确保新创建的网桥正在运行,并且包含主机的物理接口和虚拟机的接口。
# 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。
17.3.2. 使用 web 控制台配置外部可见的虚拟机
默认情况下,新创建的虚拟机连接到使用 virbr0
(主机上默认的虚拟网桥)的 NAT 类型网络。这可确保虚拟机可以使用主机的网络接口控制器(NIC)来连接到外部网络,但无法从外部系统访问虚拟机。
如果需要虚拟机出现在与 hypervisor 相同的外部网络上,您必须使用 桥接模式。为此,请将虚拟机连接到连接到 hypervisor 物理网络设备的网桥设备。要使用 RHEL 9 web 控制台,请遵循以下步骤。
先决条件
您已安装了 RHEL 9 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
- Web 控制台 VM 插件 已安装在您的系统上。
- 带有默认 NAT 设置的现有虚拟机。
管理程序的 IP 配置。这随着主机的网络连接而变化。例如,这个流程使用这样一种场景,其中主机使用以太网线连接到网络,主机的物理 NIC MAC 地址被分配给 DHCP 服务器上的一个静态 IP。因此,以太网接口被视为 hypervisor IP。
要获取以太网接口的 IP 配置,请转至 web 控制台中的
Networking
选项卡,并查看接口
部分。步骤
为主机上的物理接口创建和设置网桥连接。具体步骤请参阅在 web 控制台中配置网络桥接。
请注意,在使用静态 IP 分配的场景中,您必须将物理以太网接口的 IPv4 设置移到网桥接口。
修改虚拟机的网络,以使用桥接接口。在虚拟机的 网络接口 选项卡中:
- 点击
在
Add Virtual Network Interface
对话框中:-
将 Interface Type 设成
Bridge to LAN
-
Source 到新创建的网桥,比如
bridge0
-
将 Interface Type 设成
- 点
- 可选:对于连接到虚拟机的所有其他接口,点 。
- 点击 来启动虚拟机。
在客户机操作系统中,调整系统网络接口的 IP 和 DHCP 设置,就好像虚拟机是与 hypervisor 位于同一网络中的另一台物理系统一样。
具体步骤将因虚拟机使用的客户端操作系统而异。例如,如果客户机操作系统是 RHEL 9,请参阅配置以太网连接。
验证
- 在主机 Web 控制台的 Networking 选项卡中,单击新创建的网桥所在的行,以确保它正在运行,并且包含主机的物理接口和虚拟机接口。
确保虚拟机出现在与虚拟机监控程序相同的外部网络中。
在客户机操作系统中,获取系统的网络 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 ,使用桥接模式使您的虚拟机可用于外部位置是不可能的。
17.3.3. 替换 macvtap 连接
macvtap
是一个 Linux 网络设备驱动程序,其创建一个虚拟网络接口,虚拟机通过这个网络接口可直接访问主机上的物理网络接口。RHEL 9 支持使用 macvtap
连接。
但是,与其他可用的虚拟机(VM)网络配置相比,macvtap 的性能欠佳,而且更难以正确设置。因此,如果您的用例没有明确需要 macvtap,请使用不同的受支持的网络配置。
如果您在虚拟机中使用 macvtap 模式,请考虑使用以下网络配置:
- 使用 Linux 网桥 配置,而不是 macvtap 网桥模式。
- 使用 PCI Passthrough,而不是 macvtap passthrough 模式。
其他资源