Years and years ago I used a generic Debian box as a home router. It worked fine, and I came to hate it. The same basic problem should apply to Gentoo, OpenBSD, or practically any other normal Unix system used directly for routing:
It's basically impossible to do consistent, correct incremental changes to network or firewall configs.
That is, the boot-time configs and the run-time configs are completely different things, and short of rebooting for every change (or doing a complete network down/up cycle, which breaks things), eventually you're going to screw up. Once you screw up, you'll end up correctly making a change to the live config (adding a new route, subnet, etc), but fail to add an identical change to the boot script, and then you won't notice for 6 months until your next power outage, and then you'll have completely forgotten about it, and it'll take another month to realize that one specific VM isn't working right.
I ended up moving to Vyatta (the predecessor to VyOS), which tries very hard to look like Juniper's CLI on top of Debian, and it was dramatically better. Just like practically every router (and switch) in existence, you make changes to the running config and it persists it across reboots for you.
After a few years of that, I ran into some issues when Vyatta (which was a startup) was bought out, and VyOS (which is an open-source fork) wasn't stable, and ended up buying a Juniper SRX off of eBay. I'm much happier with the SRX (actually on my second one now, I've upgraded) than I was with VyOS, but it helps that I have experience with Juniper and I have access to OS upgrades. At this point, I spend ~no time annually dealing with random router issues, which is pretty much my goal in life.
I have nothing *against* building routers, but realize that it's a project, and it's hard to do a good job at it. Assuming you like CLIs (and I don't understand why someone would use a GUI for network configuration, personally), then look at VyOS, or Ubiquiti EdgeRouters (which run a fork of VyOS and start at $59), or Juniper SRXes. Or likely Microtik or Cisco any of the other suspects, but I haven't used them in years.
It's basically impossible to do consistent, correct incremental changes to network or firewall configs.
That is, the boot-time configs and the run-time configs are completely different things, and short of rebooting for every change (or doing a complete network down/up cycle, which breaks things), eventually you're going to screw up. Once you screw up, you'll end up correctly making a change to the live config (adding a new route, subnet, etc), but fail to add an identical change to the boot script, and then you won't notice for 6 months until your next power outage, and then you'll have completely forgotten about it, and it'll take another month to realize that one specific VM isn't working right.
I ended up moving to Vyatta (the predecessor to VyOS), which tries very hard to look like Juniper's CLI on top of Debian, and it was dramatically better. Just like practically every router (and switch) in existence, you make changes to the running config and it persists it across reboots for you.
After a few years of that, I ran into some issues when Vyatta (which was a startup) was bought out, and VyOS (which is an open-source fork) wasn't stable, and ended up buying a Juniper SRX off of eBay. I'm much happier with the SRX (actually on my second one now, I've upgraded) than I was with VyOS, but it helps that I have experience with Juniper and I have access to OS upgrades. At this point, I spend ~no time annually dealing with random router issues, which is pretty much my goal in life.
I have nothing *against* building routers, but realize that it's a project, and it's hard to do a good job at it. Assuming you like CLIs (and I don't understand why someone would use a GUI for network configuration, personally), then look at VyOS, or Ubiquiti EdgeRouters (which run a fork of VyOS and start at $59), or Juniper SRXes. Or likely Microtik or Cisco any of the other suspects, but I haven't used them in years.