For about a year was trying to figure this out. A whole slew of port alias', Nat rules and a bunch of reboots and retrys. In the end it was 2 of the three you indicated, but the kicker was NAT:Outbound which you mentioned and got more details from this thread
by boxsterguy
https://www.reddit.com/r/PFSENSE/comments/6cip47/xbox_nat_is_strict/
Thanks for starting point…
I deleted all crap i did in the past, including port alias and nat rules pointing to the the xboxone.
All i needed was the following on pfsense with Xbox totally shutdown
1.create a DHCP Static IP for Xbox
2.turn Upnp on with Default deny with one ACL allow 53-65535 172.16.x.x/32 53-65535
3.Firewall>Nat>Outbound>Hybrid
4.created a mapping: Interface WAN, source Network/IP:32, Dest ANY, Under Translation ticked on Static Port and saved
5.turn on Xboxone
No rebooting of Pfsense or switches needed, which I read in other threads. No totally OPEN. Son is appreciative he can host a game.