[PVE-User] PVE-firewall and multicast with linux bridging
Bryan Fields
Bryan at bryanfields.net
Sun Jun 22 08:22:02 CEST 2025
I've run into this multicast issue. Even with the interface as unfirewalled,
proxmox is blocking multicast/invalid traffic at the server and datacenter level.
I have the following VM's and LXC's all attached to an interface vmbr46.
100.120.255.128/28
100.120.255.129 - vrrp gateway
100.120.255.130 - Core 1 (router VM)
100.120.255.131 - Core 2 (router VM)
100.120.255.132 - NMS LXC
100.120.255.133 - vm0 - debian testing VM
100.120.255.134 - vm1 - debian testing VM
100.120.255.135 - Hypervisor vmbr46
This is an isolated bridge on linux, and is only used for testing of these
servers/multicast network. None of the ports have the firewall enabled.
During testing, I've had PIM between the routers come up and several weird
groups back and forth. I first assumed it was the fact I was testing from an
LXC, and made the VMs. This was not the case, as the VM's would have the same
issues of only some ICMP pings to the multicast addresses working and testing
with socat showed one way multicast between the Hypervisor and one VM.
After much mocking this up on another host and locally with real servers, I
was able to isolate it to the bridge device. There was not firewall logs for
any of this, and pings to 224.0.0.1 wouldn't even work. This is the all
multicast address, everything that is participating in multicast should reply.
I configured the vmbr46 as 100.120.255.135/28 on the hypervisor to test this.
I had the management firewall on the hypervisor disabled and confirmed I
wasn't seeing any drops in the logs. eventually after troubleshooting this, I
discovered there is a built in rule that blocks BROADCAST, MULTICAST, and
ANYCAST across all interfaces, even though it's not on the forward chain.
Owing to how multicast is handled on the bridge, it appears the INPUT chain is
filtering this.
This is in the rules, and appears to be harcoded in
/usr/share/perl5/PVE/Firewall.pm
-A PVEFW-DropBroadcast -m addrtype --dst-type BROADCAST -j DROP
-A PVEFW-DropBroadcast -m addrtype --dst-type MULTICAST -j DROP
-A PVEFW-DropBroadcast -m addrtype --dst-type ANYCAST -j DROP
-A PVEFW-DropBroadcast -d 224.0.0.0/4 -j DROP
I'd be ok with the hypervisor not being able to talk directly to the VMs on
the vmbr46 interface, but I need the VMs and CT's to pass multicast with each
other. Is there some way to exempt an interface totally from filtering?
--
Bryan Fields
727-409-1194 - Voice
http://bryanfields.net
More information about the pve-user
mailing list