Kleiner Nachtrag: Soviel über NAT geschrieben, aber garnicht erklärt, was es macht... sorry!

Das holen wir nun kurz nach:
In seiner - bei SOHO-Netzwerken - am häufigsten auftretenden Art handelt es sich um ein SNAT (Source-NAT / Quell-NAT). Dabei geht es um folgendes: Ein Gerät (i.d.R. eine Firewall, oder eben ein Router) stellt interne Netzwerke aus einem "privaten" IP-Adressbereich für interne Geräte zur Verfügung. Hängt man seinen PC z.B. an eine standardmässig konfigurierte Fritz!Box, so erhält der PC eine IP aus dem Adressbereich 192.168.178.0/24. Dies ist ein privater Adressbereich und private Adressbereiche werden im Internet nicht weitergeleitet. Das kann auch nicht funktionieren, da (beispielhaft) jeder Besitzer einer Fritz!Box dann mit einer IP aus dem Netz 192.168.178.0/24 im Internet unterwegs wäre und "extern" nicht wüsste, wer jetzt eigentlich der richtige Empfänger wäre. Also private Netze im Internet, keine Chance. Da kommt nun NAT (Network Address Translation) ins Spiel, bzw. in diesem Fall etwas konkreter "SNAT" (Source-NAT/Quell-NAT). Es verändert die Quell-IP eines Paketes. Schickt man vom PC (z.B. hinter Deiner OPNsense) ein Paket los...
Quell-IP: 192.168.2.100
Ziel-IP: 8.8.8.8
Passiert - bei Deinem aktuellen Konstrukt nun folgendes:
Paket-Status PC:
Quell-IP: 192.168.2.100
Ziel-IP: 8.8.8.8
Paket-Status OPNsense:
Quell-IP: 192.168.1.254 (SNAT)
Ziel-IP: 8.8.8.8
Paket-Status Fritz!Box:
Quell-IP: <öffentliche IP der Fritz!Box> (SNAT)
Ziel-IP: 8.8.8.8
Heisst also für die OPNsense bei standardmässig aktiviertem (S)NAT, dass alle Pakete, welche von den internen Netzen der OPNsense ins Netz der Fritz!Box kommen, eben über das WAN-Interface der OPNsense mit der WAN-IP der OPNsense im Fritz!Box-Netzwerk auftauchen. Das kannst Du auch ganz leicht überprüfen: Melde Dich vom PC hinter der OPNsense bei der Fritz!Box an und schau dort mal in die Logs der Fritz!Box bzgl. Deines grade stattgefundenen Logins auf der Fritz!Box. Dort sollte die IP aufgelistet sein, von welcher Du Dich bei der Fritz!Box angemeldet hast. Sieht dann so aus:
Also in Deinem "privaten" Netzwerk ist NAT weder schön, noch förderlich, also will man sowas zwischen seinen internen Netzen auch garnicht haben.
Als kleiner - auch häufig auftretender - Gegenspieler dazu gäbe es noch das DNAT (Destination-NAT / Ziel-NAT). Es gibt noch mehr, aber die sind erstmal nicht relevant. DNAT hat Du bestimmt schon eingesetzt, sogar ziemlich sicher. Es geht also um die "Ziel"-IP in einem Paket.
Die Fritz!Box vereint "zwei" Dinge mit ihren "Portfreigaben". Zum einen eine DNAT-Regel, zum anderen auch eine Firewall-Regel (das ist wichtig zu wissen, wenn man sich nun mit Firewall-Systemen befasst), es sind also 2 Konfigurationen, welche zusammenpassen müssen.
Zum einen gehst Du hin und machst ein DNAT in Form von: Wenn ein Paket an der öffentlichen IP vom System und für Port 5678 ankommt, dann leite es weiter zur internen IP 192.168.178.100 (und verändere den Zielport ggf. noch auf 443). Das wäre halt so eine "typische" Portweiterleitung (in Form eines DNAT). Weil das nun nicht reicht, muss natürlich auch noch eine entsprechende Firewall-Regel erstellt werden, ansonsten ist zwar die Anweisung für die Transformation des Paket-Headers gegeben (IP und ggf. Port umschreiben), aber wenn die Firewall nein sagt, bleibt es halt beim nein.
Das nur mal als kleinen Ausflug in die NAT-Welt, mit welcher Du hoffentlich nur auf Deinem Internet-Router in Berührung kommst. Mit IPv6 fällt NAT eigentlich komplett weg, weil i.d.R. sowieso jedes System seine eigene öffentliche IP bekommt (bzw. bekommen sollte). Da gibt es dann also nur noch Firewall-Regeln. Ist nicht so, als gäbe es gar kein NAT mehr unter IPv6, aber die Notwendigkeit ist i.d.R. eben nicht mehr gegeben. Gibt sicherlich noch Fälle, wo sowas zum Einsatz kommt, aber im privaten Bereich denke ich eher nicht, da wird es primär beim ganz normalen Routing und entsprechenden Firewall-Regeln bleiben (ist also eigentlich sogar einfacher als IPv4, wenn man von der Hexadezimal-Schreibweise von IPv6 mal absieht

).