1 - 网络设备的命名约定
参考:
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_configuration
3.3.2. Naming Conventions 一节。
命名约定
目前对设备名称使用以下命名约定:
- 以太网设备:en*,systemd 网络接口名称。此命名方案用于自版本 5.0 以来的新 Proxmox VE 安装。
- 以太网设备:eth[N],其中 0 ≤ N (eth0, eth1, …)此命名方案用于在5.0版本之前安装的Proxmox VE主机。升级到 5.0 时,名称将保持原样。
- 网桥名称:vmbr[N],其中 0 ≤ N ≤ 4094 (vmbr0 - vmbr4094)
- bond:bond[N],其中 0 ≤ N (bond0, bond1, …)
- VLAN:只需将 VLAN 编号添加到设备名称中,用句点分隔(eno1.50、bond1.30)
下面是一个默认安装后的 /etc/network/interfaces
文件内容:
auto lo
iface lo inet loopback
iface enp7s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.0.18/24
gateway 192.168.0.1
bridge-ports enp7s0
bridge-stp off
bridge-fd 0
iface enp179s0 inet manual
iface enp179s0d1 inet manual
iface enp101s0 inet manual
iface enp101s0d1 inet manual
systemd 网络接口名称
Systemd 对以太网网络设备使用两个字符前缀 en。接下来的字符取决于设备驱动程序以及哪个架构首先匹配的事实。
o<index>[n<phys_port_name>|d<dev_port>]
— 板载设备s[<slot>f<function>][n<phys_port_name>|d<dev_port>]
— 按热插拔 ID 划分的设备[P<domain>]p<bus>s[<slot>f]<function>[n<phys_port_name>|d<dev_port>]
— 按 bus id 划分的设备x<MAC>
— 按 MAC 地址划分的设备
最常见的模式是:
- eno1 — 是第一个板载网卡
- enp3s0f1 — 是 pcibus 3 插槽 0 上的网卡,并使用网卡功能 1。
有关详细信息,请参阅 可预测的网络接口名称。
2 - ifupdown2工具
参考:
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_configuration
使用推荐的 ifupdown2 软件包(自Proxmox VE 7.0以来的新安装默认),可以在不重新启动的情况下应用网络配置更改。如果通过 GUI 更改网络配置,则可以单击“应用配置”按钮。这会将更改从暂存接口.new 文件移动到 /etc/network/interfaces 并实时应用它们。
下面是自带的 ifupdown2 软件包的版本情况:
ifup --version
info: executing /usr/bin/dpkg -l ifupdown2
ifupdown2:3.2.0-1+pmx3
ifdown --version
info: executing /usr/bin/dpkg -l ifupdown2
ifupdown2:3.2.0-1+pmx3
3 - 网桥
参考:
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_configuration
3.3.4. Default Configuration using a Bridge 一节。
网桥
网桥就像在软件中实现的物理网络交换机。所有虚拟geust 可以共享单个网桥,也可以创建多个网桥来分隔网络域。每个主机最多可以有 4094 个网桥。
安装程序会创建一个名为 vmbr0 的单个网桥,该网桥连接到第一个以太网卡。/etc/network/interfaces 中的相应配置可能如下所示:
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.10.2/24
gateway 192.168.10.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
虚拟机的行为就像它们直接连接到物理网络一样。反过来,网络将每个虚拟机视为具有自己的 MAC,即使只有一根网络电缆将所有这些 VM 连接到网络也是如此。
4 - 路由
参考:
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_configuration
3.3.5. Routed Configuration 一节。
路由
大多数托管服务提供商不支持上述设置(网桥)。出于安全原因,一旦在单个接口上检测到多个 MAC 地址,它们就会禁用网络。
可以通过单个接口“路由”所有流量来避免此问题。这可确保所有网络数据包使用相同的 MAC 地址。
一种常见情况是,你有一个公共 IP(在本例中假定为 198.51.100.5),以及一个用于 VM 的额外 IP 块 (203.0.113.16/28)。对于此类情况,我们建议进行以下设置:
auto lo
iface lo inet loopback
auto eno0
iface eno0 inet static
address 198.51.100.5/29
gateway 198.51.100.1
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up echo 1 > /proc/sys/net/ipv4/conf/eno0/proxy_arp
auto vmbr0
iface vmbr0 inet static
address 203.0.113.17/28
bridge-ports none
bridge-stp off
bridge-fd 0
5 - NAT
参考:
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_configuration
3.3.6. Masquerading (NAT) with iptables 一节。
NAT
伪装(Masquerading)允许只有专用 IP 地址的 guest 通过将主机 IP 地址用于传出流量来访问网络。iptables 会重写每个传出数据包,使其显示为源自主机,并相应地重写响应以路由到原始发送方。
安装程序会创建一个名为 vmbr0 的单个网桥,该网桥连接到第一个以太网卡。/etc/network/interfaces 中的相应配置可能如下所示:
auto lo
iface lo inet loopback
auto eno1
#real IP address
iface eno1 inet static
address 198.51.100.5/24
gateway 198.51.100.1
auto vmbr0
#private sub network
iface vmbr0 inet static
address 10.10.10.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
6 - Bond
参考:
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_network_configuration
3.3.7. Linux Bond 3.3.7. Linux Bond 一节。
Bond
Bond(也称为 NIC 组合或链路聚合)是一种将多个 NIC 绑定到单个网络设备的技术。可以实现不同的目标,例如使网络容错,提高性能或两者兼而有之。
高速硬件(如光纤通道)和相关交换硬件可能非常昂贵。通过执行链路聚合,两个 NIC 可以显示为一个逻辑接口,从而实现双倍速度。这是大多数交换机支持的本机 Linux 内核功能。如果您的节点有多个以太网端口,您可以通过将网络电缆连接到不同的交换机来分配故障点,并且在出现网络故障时,绑定连接将故障转移到一根电缆或另一根电缆。
聚合链接可以改善实时迁移延迟并提高Proxmox VE群集节点之间的数据复制速度。
有 7 种 bond 模式:
- Round-robin (balance-rr):按顺序从第一个可用网络接口 (NIC) 到最后一个网络接口从属服务器传输网络数据包。此模式提供负载平衡和容错。
- Active-backup (active-backup): bond中只有一个 NIC 从属设备处于活动状态。当且仅当活动从站发生故障时,另一个从站才会变为活动状态。单个逻辑绑定接口的 MAC 地址仅在一个 NIC(端口)上外部可见,以避免网络交换机失真。此模式提供容错。
- Broadcast (broadcast): 在所有从属网络接口上传输网络数据包。此模式提供容错。
- IEEE 802.3ad 动态链路聚合 (802.3ad)(LACP):创建共享相同速度和双工设置的聚合组。根据 802.3ad 规范利用活动聚合器组中的所有从属网络接口。
- 自适应传输负载平衡(balance-tlb):不需要任何特殊网络交换机支持的 Linux 绑定驱动程序模式。传出网络数据包流量根据每个网络接口从属设备上的当前负载(相对于速度计算)进行分配。传入流量由一个当前指定的从属网络接口接收。如果此接收从站发生故障,另一个从站将接管发生故障的接收从站的MAC地址。
- 自适应负载平衡 (balance-alb):包括用于 IPV4 流量的 balance-tlb 和接收负载平衡 (rlb),不需要任何特殊的网络交换机支持。接收负载平衡是通过 ARP 协商实现的。绑定驱动程序在输出时拦截本地系统发送的 ARP 回复,并使用单个逻辑绑定接口中其中一个 NIC 从属设备的唯一硬件地址覆盖源硬件地址,以便不同的网络对等方对其网络数据包流量使用不同的 MAC 地址。
如果您的交换机支持 LACP (IEEE 802.3ad) 协议,则我们建议使用相应的绑定模式 (802.3ad)。否则,通常应使用主动备份模式。
对于群集网络 (Corosync),我们建议使用多个网络对其进行配置。Corosync 不需要网络冗余绑定,因为如果网络无法使用,它可以自行在网络之间切换。