教程 · Proxmox VE 9 网络

Proxmox 网络教程 为每台虚拟机分配一个公网 IP

本 Proxmox 网络教程将向您展示如何为 Primcast 服务器上的虚拟机分配自己的公网 IP:将其连接到 vmbr0 网桥,输入地址、网关和子网掩码,即可上线。无需重启,也无需事先向我们注册任何信息。

如果您需要更多控制,下面还有两种其他设置:通过主机路由流量,以及共享主机地址的私密虚拟机。我们在撰写之前,已在自有网络上对这三种方式全部进行了测试。

01

查找您的公网 IP 以及每个 IP 使用的网关

您的地址位于服务器开通当天我们发送的 Dedicated Server Setup 电子邮件中,先是 IPv4,然后是 IPv6。您也可以随时在账户中查看:打开服务器,查看名为 Access, Networking & rDNS 的面板。

在 Proxmox 服务器上,只有第一个地址配置在主机上。电子邮件会在地址列表下方告知您这一点。我们有意止步于此:如果主机持有所有地址,就会为所有地址应答,您的虚拟机将无地址可用。其余地址由您分配给虚拟机,或者如果您希望主机拥有多个地址,也可以分配给主机。

每次放置地址时,您都需要以下几个相同的值:

子网掩码
/24即 255.255.255.0。
网关
.1地址所在网段的 .1,因此 203.0.113.58 使用 203.0.113.1。
主机上的 DNS
209.244.0.3您的虚拟机可以使用任何您喜欢的解析器。
IPv6
/64网关是前缀后跟 ::1。步骤 06 有详细信息。

出现故障时,请先检查网关。您同时获得的地址共享一个网段和一个网关。之后添加到服务器的地址可能来自我们的不同网段,此时它们使用该网段自己的 .1。网关错误是新虚拟机无法访问任何内容的最常见原因。

02

查看您已有的 Proxmox 网络网桥

以 root 身份通过 SSH 登录主机,查看现有配置:

ip -br addr
cat /etc/network/interfaces

我们刚安装的服务器,其文件大致如下。您的接口名称和第一个地址会有所不同:

/etc/network/interfaces

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

请注意,vmbr0 已经是一个网桥,并且您的网络端口已插入其中。这就是步骤 03 中桥接设置所需的全部内容,因此对于该设置,您无需修改此文件。

Proxmox VE 9 运行在 Debian 13 上,并使用 ifupdown2,这意味着网络更改无需重启即可生效。保存文件后,运行:

ifreload -a

如果您更喜欢 Proxmox Web 界面,您的编辑会暂存在 /etc/network/interfaces.new 中,直到您点击 Apply Configuration。

在进行任何更改之前,请先在账户中打开控制台。它通过服务器的管理卡而非网络访问服务器,因此即使输入错误导致服务器离线,它仍然可以工作。

您应该使用哪种设置?

Proxmox 虚拟机的桥接、路由和私密网络对比
问题桥接路由私密
使用您的一个公网 IP是是否
主机上的更改无地址移至网卡第二个网桥
主机防火墙可见流量否全部全部
可从互联网访问是是仅您转发的端口
允许 DHCP否否是
03

桥接:Proxmox 公网 IP 直接接入网络

大多数人应该选择这种方式。您的虚拟机就像同一交换机上的独立计算机,直接与我们的路由器通信,并且主机完全不需要任何更改。

在 Proxmox 中,为虚拟机添加一个网络设备,选择 vmbr0 作为网桥,并保留 Proxmox 生成的 MAC 地址。然后在虚拟机内部设置地址。

Debian 或 Ubuntu 使用 ifupdown

/etc/network/interfaces

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/24
    gateway 203.0.113.1
    dns-nameservers 209.244.0.3 1.1.1.1

Ubuntu 使用 netplan

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  ethernets:
    ens18:
      addresses: [203.0.113.58/24]
      routes:
        - to: default
          via: 203.0.113.1
      nameservers:
        addresses: [209.244.0.3, 1.1.1.1]

Windows

将相同的地址、子网掩码和网关填入网络适配器的 IPv4 设置中。操作系统对我们来说没有区别:您的虚拟机就是网络上的一台普通计算机。

您无需告知我们任何信息

每台新虚拟机都无需填写表格,也无需向我们发送 MAC 地址。有些主机商两者都要求。我们在这样说之前检查了我们这边的情况:您服务器使用的交换机端口对 MAC 地址数量没有限制,并且端口安全已关闭。我们还在自己的一台服务器上配置了第二个地址和 MAC,并从互联网成功访问了它。

几条规则可确保其正常工作:

  • 为每台虚拟机分配自己的 MAC 地址。如果两台虚拟机共用一个,或者一台复制了主机的 MAC,则两者都无法正常工作。
  • 使用与地址网段匹配的网关,参见步骤 01。
  • 仅使用您账户上的地址。此网桥连接到一个有其他客户的网络,不属于您的地址会夺走他们的流量。
  • 切勿在 vmbr0 上运行 DHCP 服务器或发送路由器通告,原因同上。如果您需要自动寻址,请使用步骤 05 中的私密网桥。
04

路由:让每台虚拟机通过主机发送流量

当您希望主机的防火墙检查每个数据包,或者希望虚拟机永不出现在共享网络上时,请选择此方式。它们仍然使用您账户中的真实公网 IP。只有路径发生了变化。

公网地址从网桥移至网卡,主机转发流量,并为其后的机器应答。在主机上:

/etc/network/interfaces (host)

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp

auto vmbr0
iface vmbr0 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    up ip route add 203.0.113.58/32 dev vmbr0
    down ip route del 203.0.113.58/32 dev vmbr0

为您路由的每个地址添加一行 up 和一行 down。在虚拟机内部,地址是 /32,并且主机必须通过其自身路由可达,然后才是默认路由:

/etc/network/interfaces (virtual machine)

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/32
    post-up ip route add 203.0.113.10 dev ens18
    post-up ip route add default via 203.0.113.10
    dns-nameservers 209.244.0.3 1.1.1.1

保留 proxy_arp 行。我们的路由器会询问网络谁持有每个地址,该行使主机为其后的机器应答。没有它,这些机器就无法被找到。要通过 sysctl 方式使这两个设置永久生效,请将以下内容放入 /etc/sysctl.d/ 下的文件中:

net.ipv4.ip_forward=1
net.ipv4.conf.eno1.proxy_arp=1

额外的配置换来的是一个可以过滤和记录所有流量的主机。如果您不需要这些,桥接设置的活动部件更少。

05

私密:共享主机地址的虚拟机

许多虚拟机只需要向外访问,而无需被访问:构建运行器、工作进程、应保持隐藏的数据库。在第二个网桥上为它们分配私密地址,主机将其流量转换到自己的公网 IP。这不会使用您的任何地址,因此您可以根据硬件允许的数量运行任意多台。

添加第二个网桥,并保持 vmbr0 不变:

auto vmbr1
iface vmbr1 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

将虚拟机连接到 vmbr1,并为每台虚拟机分配该网段内的一个地址,以 10.10.10.1 作为网关。互联网将它们视为您的服务器。在您转发端口之前,外部无法访问它们,这需要在主机未使用的端口上再添加一对行:

post-up iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443
post-down iptables -t nat -D PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443

由于 vmbr1 没有物理端口,在其上运行 DHCP 服务器是安全的,这也是为多台机器分配地址的简便方法。

06

添加您的 IPv6 地址

您获得的是单个 IPv6 地址,而不是可拆分的地址块。它们列在设置电子邮件的末尾,您需要像 IPv4 一样逐个放置:如果您希望主机可通过 IPv6 访问,则在主机上放置一个,其余放置在需要它们的虚拟机上。安装时不会为您设置任何地址。

每个地址都写成 /64。网关是前缀后跟 ::1,因此 2001:db8:1234::/64 中的地址使用 2001:db8:1234::1。在主机上,紧挨着现有网桥:

iface vmbr0 inet6 static
    address 2001:db8:1234::2/64
    gateway 2001:db8:1234::1

在网桥上的虚拟机中:

iface ens18 inet6 static
    address 2001:db8:1234::5/64
    gateway 2001:db8:1234::1

再次运行 ifreload -a。由于这些地址不是您自己的地址块,请勿通告路由或分发未分配给您的地址。如果您需要更多,请向我们提出。

07

为每个地址设置反向 DNS

您可以自行在任何地址上设置反向 DNS。登录,打开服务器,然后转到 Access, Networking & rDNS。每个地址旁边都会显示其当前名称以及一个 Edit rDNS 按钮,IPv6 地址的操作方式相同。

输入主机名:字母、数字、连字符和点,至少两部分,每部分 1 到 63 个字符。末尾的点会自动为您添加。更改需要几分钟生效。

如果虚拟机发送电子邮件,请在邮件发出的地址上设置反向 DNS。在私密设置中,那是主机的地址。同时在您的 DNS 提供商处添加匹配的正向记录,因为接收邮件的服务器会检查两者是否一致,不一致时会拒收邮件。

08

Proxmox 网络问题解答

01如何为 Proxmox 虚拟机分配公网 IP?

将虚拟机连接到 vmbr0 网桥,并在其中设置一个额外的公网 IP,使用 /24 子网掩码和该地址所在网段的 .1 作为网关。在 Primcast 服务器上,此操作无需更改主机,也无需向我们注册 MAC 地址。

02我的虚拟机正在运行但没有网络。我应该检查什么?

首先检查网关:它必须是地址所属网段的 .1,并且不同时间添加的地址可能位于不同网段。然后确保地址在您的账户上,子网掩码是 /24,并且没有其他机器使用相同的 MAC 地址。

03我必须向 Primcast 发送每台虚拟机的 MAC 地址吗?

不需要。您的交换机端口会学习您使用的任意数量的 MAC 地址,并且端口安全已关闭,因此虚拟机会像任何物理计算机一样出现。保留 Proxmox 生成的 MAC 地址,切勿为两台机器分配相同的地址。

04为什么我的新 Proxmox 服务器上只配置了一个 IP?

这样您的虚拟机才有地址可用。如果主机持有所有地址,它就会为每个地址应答。我们配置第一个地址以便您能访问服务器,设置电子邮件会在地址列表下方注明这一点。

05在 Proxmox 中应该使用桥接还是路由网络?

除非您需要主机过滤流量,否则请使用桥接。它不会更改主机上的任何内容,每台虚拟机都像网络上的普通计算机一样运行。当主机的防火墙必须检查每个数据包时,路由适合您,代价是每台机器内部需要稍多配置。

06我可以为 Proxmox 虚拟机使用 DHCP 吗?

可以,在没有物理端口的私密网桥上使用,例如步骤 05 中的 vmbr1。切勿在 vmbr0 上使用:它连接到其他客户共享的网络,DHCP 服务器或路由器通告会应答不属于您的机器。

07我应用了错误的网络配置,服务器失联了。如何重新登录?

从您的 Primcast 账户打开控制台。它通过服务器的管理卡而非网络访问,因此即使网络中断也能工作。修复 /etc/network/interfaces,运行 ifreload -a,服务器即可重新访问。

08如何为我的虚拟机获取更多 IP 地址?

通过在线聊天或提交工单提出申请,并告知我们每个地址的用途,因为地址注册机构要求每次分配都有理由。额外的 IPv4 地址按月在同一账户上计费,分配后即会显示在您的控制面板中。

卡在某一步?在聊天中向我们提问。

我们的 AI 助手几秒内即可回答,并可以为您检查服务器及其地址。随时可以要求人工客服。

查看 Proxmox 服务器