| Field | Value |
|---|---|
| Name | pfsense |
| VM ID | (next free, e.g. 100) |
| OS / ISO | Netgate pfSense CE installer (downloaded ISO uploaded to local storage) |
| BIOS | SeaBIOS (default) |
| Machine | q35 |
| SCSI controller | VirtIO SCSI single |
| Disk | 20 GB, local-lvm, format raw, Discard ✓, SSD emulation off |
| CPU | 2 vCPU, type host (single-socket box, conserve cores) |
| Memory | 2048 MB (no ballooning) |
| Network 1 (WAN) | Bridge vmbr1, Model Intel E1000, firewall off |
| Network 2 (LAN) | Bridge vmbr2, Model Intel E1000, firewall off |
| Start at boot | Yes, boot order 1 (so LAN is up before downstream VMs) |
E1000 is required because pfSense expects em0/em1 device names. VirtIO works but renames the interfaces and breaks the rest of the guide's assumptions.
local → ISO Images → Upload.ide2 as CD-ROM.da0 (or vtbd0) → confirm wipe.ide2 before the reboot completes (Hardware → CD/DVD → Edit → Do not use any media).On first boot pfSense lands at the console menu. Pick option 1 (Assign Interfaces).
Should VLANs be set up now [y|n]? n
Enter the WAN interface name: em0
Enter the LAN interface name (or nothing): em1
Enter the Optional 1 interface name: (blank, press Enter)
Do you want to proceed [y|n]? y
Confirm the summary shows WAN → em0, LAN → em1.
From the console menu pick 2 (Set interface(s) IP address).
Enter the number of the interface: 1 (WAN)
Configure IPv4 address WAN interface via DHCP? n
Enter the new WAN IPv4 address: 172.16.0.20
Subnet bit count: 24
Upstream gateway: 172.16.0.10
Should this be the default gateway? y
Configure IPv6 via DHCP6? n
New WAN IPv6 address (blank for none): (Enter)
Revert to HTTP for webConfigurator? n
Enter the number of the interface: 2 (LAN)
Enter the new LAN IPv4 address: 192.168.0.1
Subnet bit count: 24
Upstream gateway (LAN): (blank, press Enter)
Configure IPv6: n
Enable DHCP server on LAN? y
Start address: 192.168.0.100
End address: 192.168.0.200
Revert to HTTP for webConfigurator? n
https://192.168.0.1 (default creds admin / pfsense). From the Proxmox host you can also reach it temporarily by adding a route, but the cleanest test is to bring up the Linux Server VM on vmbr2 and curl it.
https://192.168.0.1, log in admin / pfsense.pfsensecapstone.local192.168.0.2 (Windows Server, once it exists). Until then: 1.1.1.1.pool.ntp.org, Timezone: America/Chicago.172.16.0.20/24, Gateway: 172.16.0.10192.168.0.1/24 (already set).| From | To | Expected |
|---|---|---|
| pfSense Diagnostics → Ping | 172.16.0.10 (host vmbr1) | Reply |
| pfSense Diagnostics → Ping (source: WAN) | 1.1.1.1 | Reply (proves host MASQUERADE works) |
| LAN VM (Linux/Win) | 192.168.0.1 | Reply, web UI loads |
| LAN VM | 1.1.1.1 | Reply |
| LAN VM | google.com | Resolves + replies (only after DNS is set) |
# Linux Server (192.168.0.x)
sudo ip route add 172.16.0.0/24 via 192.168.0.1
# Persist in /etc/netplan/<file>.yaml under routes: - to: 172.16.0.0/24 via: 192.168.0.1
# Windows Server (admin PowerShell)
route -p add 172.16.0.0 mask 255.255.255.0 192.168.0.1
Diagnostics → Backup & Restore → Download configuration as XML. Save it to ~/Capstone-Guide/pfsense-config-YYYYMMDD.xml and to your USB drive. Do this after every meaningful change.
172.16.0.x gw 172.16.0.1). Harden SSH, ufw allow 22 from the three subnets.iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 2222 \
-j DNAT --to-destination 192.168.0.2:22
iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 22 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save
If the Jump Box stays on vmbr1 you'll DNAT to 172.16.0.x:22 instead — the ODT guide assumes the Jump Box landed on the LAN side. Pick one and document it.
capstone.local, point pfSense + every VM at it.1.1.1.1.| Symptom | First thing to check |
|---|---|
pfSense WAN ping fails to 172.16.0.10 | vmbr1 bridge is wrong NIC; em0 didn't get assigned to the vmbr1 vNIC. Confirm in Proxmox VM → Hardware that net0 is vmbr1. |
| pfSense WAN ping works to .10 but not 1.1.1.1 | Host iptables MASQUERADE missing or IP forwarding off. sysctl net.ipv4.ip_forward should be 1; iptables -t nat -L POSTROUTING -nv should show the two MASQ rules. |
| LAN VM gets DHCP but can't reach internet | Either pfSense WAN gateway isn't marked default, or the two "Block private/bogon" boxes are still checked. |
| Can ping IPs but not hostnames | DNS. Until Windows Server exists, set pfSense System → General to 1.1.1.1 and tick "Allow DNS server list to be overridden". |
| LAN VM can't SSH to Jump Box at 172.16.0.x | Reverse static route missing on the LAN VM, or pfSense WAN→LAN rule blocking return traffic. Add the ip route add 172.16.0.0/24 via 192.168.0.1. |
| Web UI unreachable after wizard | You probably re-checked "Block RFC1918" with the laptop on the wrong side. Console menu → option 11 (Restart webConfigurator) and re-verify Interfaces → WAN. |
~/Capstone-Guide/Capstone-Config-Guide-Week1-5.odt — instructor master guide (pfSense-less variant).~/Capstone-Guide/index.html — local guide hub.~/Capstone-Guide/week2.html — Week 2 walkthrough.~/Capstone-Guide/ML350p-Gen8-User-Guide.pdf — HPE 139-page service manual.docs.netgate.com/pfsense/ (offline copy not stored locally).Educational content for a classroom capstone. Not network security advice for production. Always validate firewall rules in a lab before applying to a real environment.