I am currently working on a similar problem but with my home lab. My home is behind an AT&T BGW-320 FTTH ONT/Gateway. I can pass my public block to my network via the public subnet hosts feature, via either DHCP or as a static option. I am sure there are more ways. I can also use IP passthrough to bind the ONT gateway's public IP to a specific MAC address, for a total of 6 routable IPs, 5 from my /28 and another from my home's /30 or whatever they use
Anyways, I have the proxmox itself on the /30 through my single port, realtek NIC, and it runs on NAT behind the AT&T gateway. I also have a dual port Intel NIC I am using for WAN and LAN for a pfSense VM. I got it working by assigning two virtual interfaces, one for WAN and one for LAN, neither with any designation directly in proxmox. It works perfectly fine when I set the WAN static IP within pfSense, and set its own default gateway, which is different than the proxmox's default gateway. Because of this stroke of luck, I can set
virtual IP Aliases within the pfSense, assign LAN interfaces public IPs, or 1:1 nat public IPs to devices AND virtual machines. I give the VMs the interface as the pfSense's LAN virtual interface. I haven't tried anything with VLANs yet.
I also want to harden the pfSense firewall with the Proxmox firewall. The listed protocols are:
tcp, udp, icmp, igmp, ggp, ipencap, st egp, igp, pup, hmp, xns-idp, rdp, iso-tp4, dccp, xtp, ddp, idpr-cmtp, idrp, rsvp, gre, esp, ah, skip, vmtp, eigrp, ospf, ax.25, ipip, etherip, encap, pim, ipcomp, vrrp, l2tp, isis, sctp, fc, mobility-header, udp-lite, mpls-in-ip, hip, shim6, wesp, rohc.
pfSense mentions absolutely nothing about these and I am not 100% certain if Wireshark recognizes them all.
I think if you want to assign individual nodes public IPs, you'd want to first assign a Static Public IP to your initial setup node, and then just assign interfaces within the same subnet a public IP from the /28. Otherwise you get errors trying to use multiple default gateways in proxmox.
It definitely doesn't seem secure this way, because the public can literally poke at your management node and data center. Also, maybe try using a VM like pfSense to route them for you. You would have to have one node's pfSense controlling all of the others, however, you might be able to set up CARP or similar to sync all of the pfSenses virtual machines on each of the nodes too.
https://docs.netgate.com/pfsense/en/latest/recipes/high-availability.html
I am using a virtual interface for the pfSense VM NIC, but I think you can also use IOMMU and PCIe passthrough. I am not 100% certain about which is more or less secure. Also, I don't know how to use a reverse proxy yet. I use Squid Proxy which is a forward proxy for HTTP and HTTPs to make downloads for my videogames faster. (MUCH, much faster, like wow).
Essentially with my public block my pfSense VM (and/or my bare-metal pfSense) is the new border gateway. I have no idea how to secure a border gateway with those firewall protocols. Do you have any recommendations?