So you’re getting hardcore about your network setup, and can’t sleep at night knowing your proxmox host where you are running pfSense is addressable from your WAN network.
PCIe passthrough is the solution! Fair warning though, this is a little tricky and dependant on your hardware. If you follow this path, you may end up updating your BIOS or locking yourself out of your hardware remotely.
There are other options to get to a similar end-goal, however these are either less secure or less performant depending on your hardware.
1. You could set forward delay and aging time to 0 on the Linux Bridge, making it act like a conventional hub not a switch.
2. You could use OVS Bridges and the mirroring feature supported by OpenVSSwitch.
For me, I decided I’d just go all the way and use PCIe passthrough as it is the most secure and performant.
Proxmox has a guide on how to preform PCIe passthrough: https://pve.proxmox.com/wiki/Pci_passthrough
However I ran into some issues along the way, so here’s my synthesis of it!
GRUB_CMDLINE_LINUX_DEFAULT
to be GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
bash
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
update-grub
and reboot the systemdmesg | grep -e DMAR -e IOMMU
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
Q35
Device
dropdown should populate a list of PCI devices on your system. If this doesn’t exist, then IOMMU is not enabled yet on your system or the mappings weren’t correctly generated.$ cd content && tree
.
|____2022
| |____November
| | |____home_lab_6
| | |____proxmox_route_single_interface_through_vpn
| | |____proxmox_route_single_interface_through_vpn
| | |____proxmox_update_networking
| | |____blue_team_2
| | |____blue_team_1
| | |____hackthebox_redpanda
| | |____tryhackme_neighbour
| | |____post_exploitation_journey_2
| | |____post_exploitation_journey_1
| | |____try_hack_me_vulnnetendgame
| | |____try_hack_me_corridor
| | |____try_hack_me_surfer
| | |____try_hack_me_epoch
| | |____try_hack_me_template
| | |____modern_image_format_conversion
| |____October
| |____September
| |____February
| | |____perfect_opsec_anon_accounts
| | |____perfect_opsec_pgp
| | |____perfect_opsec_anon_payment
| | |____perfect_opsec_disk_encryption
| | |____perfect_opsec_hardware_spoofing
| | |____perfect_opsec_vpn_vps_and_tor
| | |____perfect_opsec_tor_browser
| | |____perfect_opsec_source_network
| | |____perfect_opsec_os_install
| | |____perfect_opsec_mitigate_author_profiling
| | |____perfect_opsec_hardware
| | |____perfect_opsec_clearnet_browser
| | |____perfect_opsec_basic_os_config
|____2021
| |____May
| |____April
| |____February
|____2020
| |____December
| |____January
| |____August
| |____July
| | |____playbook
| | |____kioptrix_level_5
| | |____kioptrix_level_4
| | |____kioptrix_level_3
| | |____kioptrix_level_2
| | |____kioptrix_level_1
| | |____ringzer0team_sysadmin_linux_8
| | |____ringzer0team_sysadmin_linux_7
| | |____ringzer0team_sysadmin_linux_6
| | |____ringzer0team_sysadmin_linux_5
| | |____ringzer0team_sysadmin_linux_4
| | |____ringzer0team_sysadmin_linux_3
| | |____ringzer0team_sysadmin_linux_2
| | |____ringzer0team_sysadmin_linux_1
| | |____planning_phase_0
| | |____blog_creation