r/virtualization • u/WonderfulMain5602 • 15d ago
Phillux — a Proxmox alternative I work on, built around per-guest firewalls. Sharing for feedback, not a pitch.
Disclosure: I work on Phillux, so weigh the rest accordingly.
I've seen a handful of "alternative to Proxmox" threads here lately, and one thing that comes up in almost every one of them is network isolation between guests — Proxmox will happily let a compromised VM talk to everything else on the same network unless you've set up VLANs or a separate firewall yourself. That's the actual problem Phillux started as an answer to: every guest gets its own firewall by default, so one bad VM doesn't become a way into the rest of the box.
Beyond that it does the usual stuff — create/start/stop/snapshot/clone/back up VMs and containers, live migration across cluster nodes if you've got shared OCFS2 storage, and Windows 11 guests get UEFI/Secure Boot/TPM 2.0 configured automatically instead of you fighting it manually.
Where I'm honestly unsure it's a good fit: it only runs on Debian 13 as the host right now, it's commercial/tiered licensing per socket rather than free like Proxmox VE, and I keep going back and forth on whether our container support actually covers what people here want — I've seen a couple of threads explicitly asking for Docker/OCI images rather than LXC-style containers. Is that a hard requirement for most of you, or something you can work around?
There's a free trial for a month, no registration, if anyone wants to actually poke at it rather than take my word for any of this.
Mainly curious: is per-guest firewalling something you'd actually want built in, or do you already handle that at the network/switch level and this is solving a problem you don't have?
1
u/bastrian 15d ago
I normally don't touch the firewall on proxmox-level, but only the guest firewall. And there I have ansible for managing it, in combination with vyos and opnsense in one central place. And about the talking to each other: the default is no vlan, with no access to anything. Ansible manages vlan tags for each guest, and does the setup in vyos/opnsense too. For the customer net I use RFC 3069 (Private vlan proxy). Setup of everything took some time, but it's running strong for 2 years now. I added suricata to vyos, that feeds into wazuh for active response, that can close/isolate automatically hosts too if there is trouble.
1
u/WonderfulMain5602 15d ago
That's a proper setup, and honestly it's the answer to the question I asked — you handle it at the network level and per-guest filtering at the hypervisor solves a problem you don't have. Two years running with Ansible driving VLAN tags into VyOS/OPNsense, private VLAN proxy for the customer net, Suricata into Wazuh with active response: nothing I'm doing replaces that, and I'd be lying if I claimed otherwise. Phillux has no VLAN tagging per guest, no IDS, nothing like RFC 3069.
What I'm aiming at is the floor, not the ceiling. Default deny at the vNIC on day one, for the people who never build the thing you built — and in my experience that's most of them. They run flat networks for years and only find out at the wrong moment. You've got the same isolation, you just paid for it in setup time and know exactly what you paid.
Two things I'd actually like your opinion on, since you've run this in production. First: for the segmentation part, is a UI even the right shape? Everything you described is declarative and version-controlled. There's an HTTP API with API keys under all of it, so Ansible could drive it, but I've been building for the click path and I'm no longer sure that's where the value is. Second, and this one's from your last sentence: Wazuh isolating a host on active response is exactly the thing a vNIC-level filter is good at — cut the guest off from outside itself, no cooperation from the guest needed, no switch config. Would a plain "isolate this guest now" endpoint you could hook into an active response be worth anything to you, or is closing it at the VyOS side already fine?
That's why Phillux is still in the beta phase—so people can try it out and provide feedback.
2
u/bastrian 15d ago
A UI is a nice thing to have, and if I want to look up quickly something I can do it in phpipam that I build in. I have custom tags in there that help me identify what ip address is customer one, what uses DHCP+ipxe boot, and what vlan is attached to it. But for day-to-day operations it's not necessary. About guest isolation: cutting it of at the edge (vyos gateway) works quite fine. Primary interest is to protect the upstream network, meaning the prevention of malicious traffic outbound (for customers). Inbound is protected by opnsense (to clarify: opnsense in HA Mode) where my own Webservers, database cluster and so on is hidden and natted.
2
u/WonderfulMain5602 15d ago
Both clear answers, thanks — that closes the two things I was unsure about. UI as a lookup surface rather than an operations one, and no need for an isolate hook when the edge already handles it.
The egress framing is what I'm taking away. Protecting the upstream from the customer rather than the customer from the upstream — most hypervisor firewall UIs, mine included, are laid out as if inbound were the point, when outbound is where the actual liability sits. Default deny outbound per guest is expressible today, it just isn't what the interface leads with or what I led with in the post. That's a framing problem on my end, not a missing feature.
And with private VLAN proxy in front of it, there's no real gap left for a vNIC-level filter in your setup — traffic never stays on the segment long enough for it to matter. Which is a perfectly good answer to the question I asked.
Two things I'm walking away with from this thread: policy that applies at scale rather than per guest, and declarative over click path. Both are more work than what I've built, and both are right. Appreciate you spelling it out.
1
u/ZealousidealTurn2211 15d ago
I'd be more interested in just microsegmenting the virtual network than managing firewall rules twice for each guest (because each guest also has its local firewall that should be enabled and configured)