Although my original use-case included virtualizing a router/firewall, it was only beneficial for a couple months while I was still living in accommodation with a shared network. I ran OpenWRT for simplicity of configuration and had two separate vSwitches configured in ESXi, one for each NIC. This allowed me to connect to the shared network while retaining control over my own subnet and not leaking device access or mDNS. I had hoped to pass through the motherboard’s 802.11ac WiFi NIC (which worked fine), but was stymied by OpenWRT’s glacial upgrade cycle. They were running an absolutely ancient version of the Linux kernel which predated support for my WiFi chipset. I considered working around this by creating a virtual Access Point using a VM of Ubuntu Server or other lightweight Linux which would support the WiFi chipset, but it just wasn’t worth the trouble.
After spending a couple months abroad with the server powered down I returned home and found a new apartment. I was able to get CenturyLink’s symmetric Gigabit offering installed, and running their provided router eliminated the need for a virtual router appliance. The OpenWRT VM was quickly mothballed and replaced with an Ubuntu Server 18.04 VM to run Ubiquiti’s UniFi Controller.
The current (Dec. 2018) software configuration is fairly simple:
- ESXi Server 6.5
- FreeNAS 9.10
- 12GB RAM, 4vCPU, 8GB boot disk
- IBM M1015 IT Mode via PCIe passthrough
- 2x RAIDZ1 vDevs of 3 disks (consumer 2 and 5TB drives)
- Jails for utilities benefiting from direct pool access
- Ubuntu Server 18.04
- 2GB RAM, 2vCPU, 8GB boot disk
- Ubiquiti UniFi Controller
- DIY Linode dynamic dns
- FreeNAS 9.10