this post was submitted on 16 Jul 2025
1 points (66.7% liked)

Online Persona's Blog

55 readers
3 users here now

⚠️ Admin Note: This is a personal blog community, only the blog author may post in this community.

Random thoughts related to programming

Credits

Icon created on Craiyon

founded 4 months ago
MODERATORS
 

If you followed ProxMox's wiki page Proxmox VE inside VirtualBox, you might have found yourself unable to connect to the VM, even with port-forwarding. Should that be case, this might help.

Setup

You followed the wiki and have 2 interfaces setup for your VM in virtualbox

  1. Host-only network interface (vboxnet0, or another one)
  2. NAT interface

Why is this happening?

Proxmox does not use systemd-networkd to configure its network interfaces. Everything is in /etc/network/interfaces. And thus, the VM boots with an unconfigured network.

Resolution

Step 1: Find the IP address of your host-only interface on the host

On Linux, macOS and Solaris Oracle VM VirtualBox will only allow IP addresses in 192.168.56.0/21 range to be assigned to host-only adapters.

- Virtualbox documentation

There's a good chance vboxnet0 will thus have 192.168.56.1\24, vboxnet1 then 192.168.57.1\24, and so on. To check, run

ip a | grep -A2 vboxnet

There are 2 VMs on mine and vboxnet1 has the proxmox VM with the IP 192.168.57.1/24

My output

3: vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.1/24 scope global vboxnet0
       valid_lft forever preferred_lft forever
    inet6 fe80::800:27ff:fe00:0/64 scope link proto kernel_ll 
--
10: vboxnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff
    altname enx0a0027000001
    inet 192.168.57.1/24 brd 192.168.57.255 scope global vboxnet1
       valid_lft forever preferred_lft forever
    inet6 fe80::800:27ff:fe00:1/64 scope link proto kernel_ll 
--
11: vboxnet2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:02 brd ff:ff:ff:ff:ff:ff
    altname enx0a0027000002
12: vboxnet3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:03 brd ff:ff:ff:ff:ff:ff
    altname enx0a0027000003
13: vboxnet4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:04 brd ff:ff:ff:ff:ff:ff
    altname enx0a0027000004

As for the NAT network interface, the virtualbox doc says

The virtual machine receives its network address and configuration on the private network from a DHCP server integrated into Oracle VM VirtualBox. The IP address thus assigned to the virtual machine is usually on a completely different network than the host. As more than one card of a virtual machine can be set up to use NAT, the first card is connected to the private network 10.0.2.0, the second card to the network 10.0.3.0 and so on.

Therefore we don't need to note down a IP and subnet here.

Step 2: Note the names of the network interfaces in the VM

Linux names the interfaces dynamically, which can be a pain sometimes, so the interface names here might be different from yours!

Lists the network interfaces and their information with

ip address # Or simply `ip a`

I have:

  • enp0s3 as the host-only interface
  • enp0s8 as the NAT interface

My output

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,DOWN,LOWER_UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 08:00:27:e4:f4:50 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,DOWN,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state DOWN group default qlen 1000
    link/ether 08:00:27:bc:39:f4 brd ff:ff:ff:ff:ff:ff
4: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 08:00:27:e4:f4:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.2/24 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fee4:f450/64 scope link 
       valid_lft forever preferred_lft forever

In my output you can already see the problem. vmbr0, which is the bridge interface for VMs that Proxmox will create has 2 problems:

  1. It's using the wrong network interface as a slave (enp0s8 is the NAT network interface; it's the second one)
  2. Had it chosen the right interface (host-only interface has enp0s3 in my setup), the IP address and subnet would've been wrong anyway!

Step 2: Update /etc/network/interfaces

Time to:

  • assign a manually chosen IP address to the bridge interface (vmbr0)
    • I picked 192.168.57.2/24
  • set the bridge interface as the master of the correct interface (enp0s3 is the host-only interface in my case)
  • let DHCP configure the NAT interface (enp0s8 in my case)
IP_SUB="192.168.57.2/24"
IFACE_HOST_ONLY="enp0s3"
IFACE_NAT="enp0s8"
cd /etc/network/
cp interfaces interfaces.bak
# Write configuration
echo " # Manually edited, might be overwritten by Proxmox
auto lo
iface lo inet loopback

auto $IFACE_NAT
iface $IFACE_NAT inet dhcp

auto $IFACE_HOST_ONLY
iface $IFACE_HOST_ONLY inet manual

auto vmbr0
iface vmbr0 inet static
        address $IP_SUB
        bridge-ports $IFACE_HOST_ONLY
        bridge-stp off
        bridge-fd 0
" > interfaces

# Reload networking
ifreload -a

Step 3: test

You should now be able to access Proxmox VE from the host-only network interface using the IP address you chose. In my case that's https://192.168.57.2:8006/

Conclusion

It would be great if Proxmox used systemd-networkd and shoved configuration files into /etc/systemd/network. They are much easier to read, honestly and systemd does a good job at managing stuff. It would work "auto-magically" regardless of environment.

Hopefully this helped somebody and you didn't have to spend a few hours trying to figure this out.

no comments (yet)
sorted by: hot top controversial new old
there doesn't seem to be anything here