i have a single box i use for data storage; backup; wifi; router; and switch.
it runs ubuntu on the bare iron with
- a windows 10 kvm/qemu vm with pci pass through on wifi to get 1 gig wifi speeds on intel in ap mode (intel won’t allow it using linux drivers)
- a pfsense kvm/qemu vm for router & firewall to internet and with pci pass through on a 1 gig nic to gap the internet from the base ubuntu
- dns & ip masquerade along with kvm/qemu based sofware defined networking for windows, pfsense and ubuntu to forward all wifi and cabled network through to internet and
- connected via 3 gig nic and switch for much faster local data storage and backup on the ubuntu install.
- vpn and remote backup using pfsense for access to my setup from anywhere else in the world. (eg routing traffic from the office to my home connection for personal use and access to my data)
topographically, it looks like this, but in reality it’s all one box:
┌────┐ ┌─────────────┐
┌───────────────────┤vpn │ ┌──────────────────┤windows (wifi│
▼ └────┘ │ └─────────────┘
┌──────────┐ │
│ internet │ │
└──────────┘ ▼ ┌───────┐ ┌──────┐ ┌───────────┐
▲ ┌─────────┐ │ubuntu │◄───────┤switch│◄─────┤ backups │
└────────────────┤ pfsense │◄─────────────────┴───────┘ └──────┘ └───────────┘
└─────────┘
the windows driver allows for full wifi-6/7 speeds in ap mode and is the only way, afaik, to get it with intel cards
there are other efforts to backwards engineer or hack the changes that disables higher speeds in ap mode for linux; but none worked when i tried about 10-ish months ago. i tired these ones:
https://www.jeffgeerling.com/blog/2020/wifi-6-gets-134-gbps-on-raspberry-pi-cm4 https://gist.github.com/iffa/290b1b83b17f51355c63a97df7c1cc60 https://askubuntu.com/questions/1163145/intel-wireless-iwlwifi-ubuntu-19-04-slow-upload-speed-but-only-on-certain-wi/1163146#1163146
and if you don’t have a windows key like me, do yourself a favor and create a windows image instead of a vm and keep re-using it to get around the windows validation setup timeout after 30 days. (i didn’t realize this until after the fact so i had to create a work around with ansible to stop/copy/paste/launch the vm every 30 days)