PVE 网络配置

使用网桥(Bridge)的默认配置

网桥就像在软件中实现的物理网络交换机。 所有虚拟来宾可以共享一个网桥,也可以创建多个 桥接到单独的网络域。每个主机最多可以有 4094 个网桥。

安装程序会创建一个名为 vmbr0 的单个网桥,该网桥 连接到第一个以太网卡。相应的 /etc/network/interfaces 中的配置可能如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
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 连接到网络。

路由配置

大多数托管服务提供商不支持上述设置。为了安全起见 原因,他们在检测到多个MAC后立即禁用网络 单个接口上的地址。

大多数托管服务提供商不支持上述设置。为了安全起见 原因,他们在检测到多个MAC后立即禁用网络 单个接口上的地址。
您可以通过单个流量“路由”所有流量来避免此问题 接口。这可确保所有网络数据包使用相同的 MAC 地址。

默认网络设置路由.svg
常见情况是,你有一个公共 IP(在本例中假定为 198.51.100.5),以及一个用于 VM 的额外 IP 块 (203.0.113.16/28)。对于此类,我们建议进行以下设置。 情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

伪装 (NAT) 与 iptables

伪装允许只有私有 IP 地址的来宾访问 网络,方法是使用传出流量的主机 IP 地址。每个传出 数据包由 iptables 重写,显示为源自主机, 并相应地重写响应以路由到原始发件人。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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

在某些启用了防火墙的化装舞会设置中,连接区域可能是 传出连接需要。否则,防火墙可能会阻止传出 连接,因为它们将首选 VM 网桥的 POSTROUTING (而不是 MASQUERADE)。

在 /etc/network/interfaces 中添加这些行可以解决此问题:

1
2
post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1

参考