Using Proxmox over WiFi

I read many times that using Proxmox with WiFi does not work well, and indeed there are some challenges compared to a wired connection. The setup I describe here will work for regular home environments. Using Proxmox with WiFi is most definitely not recommended for production use cases. In most cases using a Ethernet device, even via USB is the better - and easier, approach.
In most cases, Linux refuses to use a WiFi adapter as a bridge port. Because of this, we will use an ARP proxy, which forwards ARP requests between two interfaces. The setup requires an IP address on all interfaces involved. I am using DHCP for the wireless interface itself, which is the default in my network and allows me to establish a connection quickly. Note that parprouted only supports unicast traffic. If, for some reason, you want to use DHCP on the bridge device as well, you will need to install a DHCP relay. Also other services, which require multicast (e.g. mDNS, some streaming solutions) will not work.
Prerequisites
I had good experiences using Ventoy for USB stick creation. It provides a partition for ISO files; during startup you can select which ISO you want to boot. For our WiFi setup, this comes in handy because you can also place the required Debian packages on the stick.
In any case, you will need to prepare a USB device with the packages listed below:
| Package | Dependencies | Remark |
|---|---|---|
| wpasupplicant | libnl-genl-3-200, libpcsclite1 | - |
| iw | wireless-regdb | - |
| wireless-tools | libiw30t64 | offers some tools for debugging |
| isc-dhcp-client | - | only needed if you want to use DHCP |
| parprouted | - | - |
I have linked the Debian page for each main package. Please also check the “other packages related” sections to download the mentioned dependency packages. This ensures that you have the current version with matching dependencies.
Furthermore, if you are using Ventoy, make sure that the latest Proxmox installer ISO is available on your USB device. If you have an Ethernet adapter you can use for the setup process (e.g. a USB Ethernet card), I recommend using it. In this case, you can simply run apt-get update && apt-get install -y wpasupplicant iw wireless-tools isc-dhcp-client parprouted and jump to the "Finalizing the configuration" section of this tutorial.
1root@pve02:/mnt/usb# ls -1
2isc-dhcp-client_4.4.3-P1-8_amd64.deb
3iw_6.9-1_amd64.deb
4libiw30t64_30~pre9-18+b1_amd64.deb
5libnl-genl-3-200_3.7.0-2_amd64.deb
6libpcsclite1_2.3.3-1_amd64.deb
7parprouted_0.70-4_amd64.deb
8proxmox-ve_9.1-1.iso
9wireless-regdb_2026.02.04-1~deb13u1_all.deb
10wireless-tools_30~pre9-18+b1_amd64.deb
11wpasupplicant_2.10-24_amd64.deb
Boot up your computer using the USB device. This guide cannot provide fully detailed instructions on how to boot from USB. You either have to disable Secure Boot or register the Ventoy key in your UEFI settings.
Setup
Follow the Proxmox installation process to the end. On the network settings tab, enter all data as you would for a wired connection. Once finished, reboot the machine. Make sure to boot from the hard drive and log in to Proxmox. Since the only user created during installation is root, I don’t use sudo in this tutorial.
You can determine your USB device using the lsblk command:
1root@pve02:~# lsblk
2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
3sda 8:0 0 931.5G 0 disk
4├─sda1 8:1 0 1007K 0 part
5├─sda2 8:2 0 1G 0 part
6└─sda3 8:3 0 930G 0 part
7sdb 8:16 1 15G 0 disk
8├─sdb1 8:17 1 14.9G 0 part
9└─sdb2 8:18 1 32M 0 part
10...
Depending on your installation, the output might be longer, but you should find an sdX device matching your USB stick by size, with two partitions. Note that device sizes are stated in GB (1000^3) while the output shows GiB (1024^3). For example, a 16 GB USB device is shown as 15G. In most cases, it will be sdb.
Assuming that you only have the packages from the list above on your USB device, you can run the following commands:
1# mount device
2mount /dev/sdX1 /mnt
3cd /mnt
4
5# install all packages
6dpkg -i *.deb
7
8# disable wpa_supplicant service
9systemctl disable --now wpa_supplicant
I am using DHCP for my wireless adapter, so in the next step I will only configure WiFi:
1# change SSID by your WiFi SSID (name) and apply your password, make sure to remove the clear text password from it
2wpa_passphrase SSID 'PASSWORD' | grep -v '#psk=' > /etc/wpa_supplicant/wpa_supplicant.conf
3
4# clear history from password and adjust file permissions
5history -d -2
6chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf
Next, identify your WiFi device. Check the output of ip link for devices starting with w.
1root@pve02:~# ip link
21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
3 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
42: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
5 link/ether 12:34:56:78:90:ab brd ff:ff:ff:ff:ff:ff
6 altname wlx1234567890ab
76: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
8 link/ether cd:ef:12:34:56:78 brd ff:ff:ff:ff:ff:ff
In my case, the WiFi device is wlp3s0. If your device has a different name, adjust the configs below accordingly. In the next step we will bring the WiFi interface up and configure it. If you are not using DHCP, configure a static setup and provide the required details
/etc/network/interfaces
1auto lo
2iface lo inet loopback
3
4allow-hotplug wlp3s0
5iface wlp3s0 inet dhcp
6 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Make sure the bridge is commented out or removed from the config.
You can now restart the network and check the IP address of your wireless device:
1service networking restart
2# or
3systemctl restart networking
4
5ip a s wlp3s0
It is recommended to either create a DHCP reservation for your WiFi interface or to use a static setup.
Finalizing the setup
You can now connect from a second device via SSH to your Proxmox machine to finalize the setup. Please make sure, that you still have physical access in case of problems.
First add your bridge to /etc/network/interfaces (again make sure to replace the name of your WiFi device):
1auto lo
2iface lo inet loopback
3
4allow-hotplug wlp3s0
5iface wlp3s0 inet dhcp
6 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
7
8auto vmbr0
9iface vmbr0 inet static
10 address 10.0.0.4/23 # Replace with your IP
11 bridge-stp off
12 bridge-fd 0
13 bridge-ports none # Important!
14 post-up /usr/sbin/parprouted wlp3s0 vmbr0
15 post-down /usr/bin/killall -q parprouted || true
16
17source /etc/network/interfaces.d/*
Further we must enable IP forwarding as well as ARP proxying in the kernel settings:
1cat > /etc/sysctl.d/99-parprouted.conf <<EOF
2net.ipv4.conf.wlp3s0.proxy_arp=1
3net.ipv4.conf.vmbr0.proxy_arp=1
4net.ipv4.ip_forward=1
5EOF
6
7sysctl --system
Now that the configuration is completed, we need to restart the network again.
1systemctl restart networking
This should be it. You can try to ping www.google.com to verify that everything works. You should also try to SSH to the configured IP address of your bridge device.
Troubleshooting
wpa_cli status provides an overview of the current WiFi connection status.
journalctl -g wpa_supplicant may show errors related to the wpa_supplicant startup.
There are also logs in /var/log/ifupdown2/.
If you reboot and don't even see the bridge, please check that the bridge-ports are set to none.