Proxmox lost its network after a reboot? Check for interfaces.new

You wrote a bridge config, rebooted, and the node came back with no network — and the file on disk looks older than your edit. The cause is a pending interfaces.new that Proxmox applies at every boot.

The symptoms

  • You wrote a new /etc/network/interfaces (a vmbr0 bridge, a new address) and rebooted.
  • The node came back with no working network — no SSH, no web UI, nothing answering.
  • On the console, /etc/network/interfaces holds something you didn’t write, and its modification time is older than your edit — as though your change never happened.

The cause: a pending interfaces.new

Proxmox stages network changes. When you edit the network in the web UI, the change is written to /etc/network/interfaces.new and only applied when you click Apply Configuration — or at the next boot (Proxmox network configuration). The boot-time half is a small service, pvenetcommit, that runs early and, if a pending file exists, moves it over the live one:

systemctl cat pvenetcommit (the relevant line)
ExecStart=sh -c 'if [ -f ${FN}.new ]; then mv ${FN}.new ${FN}; fi'

That’s fine when the pending file is yours. It isn’t always. Installing the proxmox-ve package on Debian left an interfaces.new behind on our builds, holding Proxmox’s own first view of the machine: loopback and the raw network card, no bridge. Edit /etc/network/interfaces by hand after that, reboot, and pvenetcommit replaces your file with the stale one. And because mv keeps the moved file’s timestamp, the result looks older than your edit — which is how it fooled us into thinking our write had failed.

Check before you reboot

ls -l /etc/network/interfaces /etc/network/interfaces.new
diff /etc/network/interfaces /etc/network/interfaces.new

If interfaces.new exists and isn’t the change you want, delete it — that makes pvenetcommit do nothing and your file stands:

rm -f /etc/network/interfaces.new
Note

If you made the change in the web UI on purpose, the opposite applies: interfaces.new is your change — apply it with Apply Configuration instead of editing the live file by hand. Use one method or the other, not both.

Recovering a node that already lost its network

You need a console that doesn’t depend on the network — your provider’s browser console or VNC. Then:

  1. Look at what’s there now: cat /etc/network/interfaces.
  2. If you kept a copy, put it back; otherwise rewrite the bridge (a minimal single-NIC example is in the install guide).
  3. Make sure no interfaces.new is left: rm -f /etc/network/interfaces.new.
  4. Apply without rebooting: ifreload -a, then check ip -4 addr show vmbr0 and ip route.
Watch out

Before any reboot of a remote node, check the file parses: mkdir -p /run/network; ifup -s -a -i /etc/network/interfaces 2>&1 | grep '^error:' should print nothing. Don’t go by the exit code — it is non-zero for warnings Proxmox itself causes, such as bridge-fd 0.