跳转到内容

改静态 IP 与失联自救 ​

改 PVE 的管理 IP 是个典型的「坐在自己要锯的树枝上」的操作:你通过网络连着它,而你要改的正是网络。

改网络前必须先有退路

没有以下任意一条退路,就不要远程改网络配置:

  1. 能接显示器和键盘到这台机器上(本机控制台)。
  2. 有 IPMI / BMC / iDRAC / iLO 这类带外管理。
  3. 这台机器就在你手边,改砸了走过去就能弄。

远程改网络失败的结果是:机器还在跑,虚拟机还在跑,但你连不上去,只能物理接触。这在托管机房是要花钱跑一趟的。

开始之前 ​

搞清楚三件事:

这台机器在集群里吗? 执行 pvecm status。如果在集群里,改 IP 要复杂得多——corosync 配置、集群证书都和 IP 绑定。本文只覆盖单机场景。集群节点改 IP 请先读官方文档,那是一个独立的流程。

要改的是什么? 通常是这两项之一或全部:

  • 管理 IP(在 /etc/network/interfaces 里)
  • 主机名(在 /etc/hosts 和 /etc/hostname 里)

新地址会冲突吗? 先从别的机器 ping 一下新 IP。有回应说明已被占用。同时确认新 IP 在路由器 DHCP 池之外,否则以后可能被分配给别的设备。

第一步:备份当前配置 ​

sh
cp /etc/network/interfaces /root/interfaces.bak
cp /etc/hosts /root/hosts.bak

顺便把当前配置抄在纸上或记在手机里。等你失联的时候,这份记录能让你在本机控制台上快速改回去。

第二步:改网络配置 ​

用 Web UI(推荐) ​

节点 → System → Network,选中 vmbr0,点 Edit,改 IPv4/CIDR 和 Gateway。

Web UI 的改动不会立刻生效

PVE 把改动写进一个待生效文件 /etc/network/interfaces.new,界面上方会出现提示条。这是个安全设计:你可以改完、检查、再决定什么时候应用。

点 Apply Configuration 才真正生效。生效的瞬间你的浏览器会断开——这是正常的,用新地址重新访问。

用命令行 ​

sh
nano /etc/network/interfaces

改这两行:

text
        address 192.168.1.20/24
        gateway 192.168.1.1

地址必须带 CIDR 前缀

写 address 192.168.1.20 而没有 /24,会导致接口起不来。PVE 8 及以后用的是 ifupdown2,它要求 CIDR 格式。

保存后应用:

sh
ifreload -a

这条命令由 ifupdown2 提供,能在不重启的情况下应用网络配置。执行后当前 SSH 会话会断开。

第三步:同步主机名解析 ​

/etc/hosts 里有一行把主机名映射到管理 IP。IP 改了这里没改,会导致 Web UI 出现各种奇怪问题(证书告警、节点显示离线、任务卡住)。

sh
nano /etc/hosts

找到这一行并改成新 IP:

text
192.168.1.20 pve.home.lan pve

这一步最容易被忘掉

「IP 改完了,能 ping 通,但 Web UI 打开后节点显示红叉」——十有八九是 /etc/hosts 没改。PVE 的很多内部通信走主机名解析。

主机名本身要改的话,还要改 /etc/hostname,然后重启。改主机名的连带影响比改 IP 更大(证书、集群配置、存储配置里可能都有),能不改就不改。

第四步:验证 ​

用新地址重新连接:

sh
ssh root@192.168.1.20

然后在宿主机上:

sh
# 1. IP 是新的
ip -4 addr show vmbr0

# 2. 路由正确
ip route

# 3. 网关通
ping -c 3 <网关IP>

# 4. 主机名能解析到新 IP
ping -c 1 $(hostname)

# 5. PVE 服务正常
systemctl status pve-cluster pvedaemon pveproxy

浏览器访问 https://192.168.1.20:8006,节点图标是正常的绿色,不是红叉或问号。

重启一次再收工

配置文件改对了、ifreload 也生效了,不代表开机时也能正常起来。找个时间重启一次宿主机,确认新配置在冷启动后依然生效。

失联了怎么办 ​

按可行性排序:

退路一:本机控制台 ​

接上显示器和键盘,用 root 登录。然后:

sh
# 看看现在的实际地址
ip -4 addr

# 恢复备份
cp /root/interfaces.bak /etc/network/interfaces
ifreload -a

退路二:临时给自己一个能用的地址 ​

如果只是想先连上去再慢慢弄,可以临时加一个 IP(重启后失效,这正是它安全的原因):

sh
ip addr add 192.168.1.99/24 dev vmbr0

然后从别的机器连 192.168.1.99 处理。

退路三:直连一根网线 ​

笔记本用网线直连 PVE 的网口,两边都设同网段的静态 IP(比如 PVE 用 10.0.0.1/24,笔记本用 10.0.0.2/24),就能连上。

退路四:救援模式 ​

前面都不行(比如系统根本起不来),用安装 U 盘进救援模式。属于迁移与救援的内容。

常见问题 ​

ifreload -a 报错但没说清楚原因。 先做语法检查:

sh
ifup --no-act vmbr0

它会模拟执行并报告配置问题,不会真正改动。

改完之后客户机全部断网。 检查 bridge-ports 那一行有没有被误改。客户机的连通性靠网桥,和宿主机自己的 IP 是两回事。

能 ping 通 IP 但 Web UI 转圈。 查 /etc/hosts(见第三步),然后重启 PVE 的服务:

sh
systemctl restart pve-cluster pvedaemon pveproxy

想换网卡(比如换了主板)。 新网卡名字变了,/etc/network/interfaces 里的 bridge-ports 要同步改。用 ip link 看实际的网卡名。

延伸阅读 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。