OPNsense Forum

International Forums => German - Deutsch => Topic started by: puldi on May 15, 2020, 08:34:11 am

Title: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 15, 2020, 08:34:11 am
Hallo Experten!

Sorry dass mein erster Beitrag gleich eine solche Frage ist, aber ich verzweifle gerade an der Einrichtung eines BINAT in Kombination mit IPsec. Immerhin gibt es diese Option bei OPNsense, weswegen ich auch gerade die Migration von IPfire zu OPNsense vorbereite.

Erst einmal die grundsätzliche Frage:
Kann ich auf einer OPNsense Installation ein entferntes Netzwerk unter einer anderen Adresse verfügbar machen, ohne dass die Gegenstelle irgendetwas anpassen muss? Beispielsweise muss ich den Host 192.168.1.10 auf der Gegenseite lokal in ein anderes Netz "verschieben". Dafür ist BINAT doch eigentlich da, oder nicht? Die Anleitung unter https://docs.opnsense.org/manual/how-tos/ipsec-s2s-binat.html mappt jedoch gleich beide Netze und zwar so, dass das eigene Netz bereits vor dem Tunnel transformiert wird. Ich will jedoch das Gegenteil erreichen. Ich versuche das mal als Textgrafik aufzuzeichnen:

Code: [Select]
lokales Netz [172.20.0.0/24] <===> NATted IP [192.168.250.10] <===> BINAT <===> Remote IP [192.168.1.10] <===> IPsec <===W=A=N===> remote ipsec ....

Die Fußangel ist natürlich, dass es das Netz 192.168.1.0/24 mehrfach gibt, deswegen lokal die Umsetzung. Aber der Einfachheit halber sagen wir mal, dass auf dem OPNsense nur ein IPsec dieses Netz verwendet.

Kann ich das so überhaupt umsetzen? Ich habe es eingerichtet und sehe auch, dass das BINAT greift, allerdings gehen keine Pakete in den Tunnel. Die Pakete scheinen immer auf das WAN Interface geroutet zu werden, daher vermute ich, dass die Firewall nach dem BINAT keine passende Route mehr findet.
Vielleicht stimmen auch die Firewallregeln nicht. Hier habe ich folgendes eingetragen:

Code: [Select]
Firewall: Rules: IPsec
IPv4      * 172.20.0.10 * 192.168.1.10 * * * [Traffic ausgehend]
IPv4      ICMP 192.168.1.10 * 172.20.0.10 * * * [ping eingehend]
Stimmt hier eventuell die Firewallgruppe nicht? Müssten die Regeln auf LAN oder WAN gesetzt werden? Käme mir aber unlogisch vor. Ich kann versuchen, die Regeln als floating zu setzen, aber ich möchte später nicht alle VPN betreffenden Regeln als floating setzen nur um es schnell und bequem zu haben. Die Regeln sollen dort sitzen wo sie hingehören.

Wenn ich einen Ping von meinem Host auf die Gegenstelle loslasse, passiert folgendes: ping auf 192.168.250.10 erreicht OPNsense, die IP wird dort übersetzt in 192.168.1.10 und wird von der Firewall auf dem WAN Interface mit der Regel "let out anything from firewall host itself" akzeptiert. BINAT hat also funktioniert, aber das Paket landet auf der WAN Schnittstelle und nicht bei IPsec.  :-\

An diesem Punkt bin ich etwas ratlos. Vermutlich verstehe ich grundlegende Zusammenhänge bei OPNsense noch nicht. Ich nutze seit 2½ Jahren IPfire und habe mich natürlich an dessen Arbeitsabläufe gewöhnt.

Die nächste Hürde, die dann zu nehmen wäre, ist die Einrichtung mehrerer solcher BINAT auf identische Zielnetze. Also, dass ich VPN A und VPN B mit dem Zielnetz 192.168.1.0/24 einrichten kann und VPN A bspw lokal auf 192.168.250.0/24 mappe und VPN B auf 192.168.251.0/24. Aber eins nach dem anderen.  ;D


Meine Version laut Dashboard:
OPNsense 20.1.6-amd64
FreeBSD 11.2-RELEASE-p19-HBSD
LibreSSL 3.0.2

Alle Updates sind eingespielt und die Installation kann ich vorerst noch zum Testen verwenden.
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: mimugmail on May 15, 2020, 09:54:13 am
Wie viele SA's hat die IPsec Verbindung? Einige NAT Konstellationen im IPsec funktionieren nur bei einer Phase2.
Das Setup funktioniert natürlich so wie du dir das vorstellst. Schau dir mal die Helptexte von BINAT genau an, dann solltest du die Logik eignetlisch schnell verstehen.

Hast du in der Phase2 auch in SPD die Netze eingetragen?
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 15, 2020, 01:17:59 pm
Wie viele SA's hat die IPsec Verbindung? Einige NAT Konstellationen im IPsec funktionieren nur bei einer Phase2.
Es gibt nur eine Phase2 und darin ist (derzeit) auch nur die eine Host-to-Host Verbindung eingetragen. Dieser Hinweis ist klar und deutlich zu verstehen, dass bei mehreren Phase2 Einträgen das BINAT nicht funktioniert.

Hier gleich mal eine Zwischenfrage: Kann ich in einer Phase2 mehrere Netze oder Hosts eintragen? Bei IPfire funktioniert das, wobei dort allerdings manchmal (nicht immer) mehrere SAs aufgebaut werden. Das Prinzip warum das nur manchmal so ist und nicht immer, habe ich dort auch nicht verstanden. Aber sobald mehrere SA aufgebaut werden, würde ja das BINAT nicht mehr funktionieren, soweit ich es verstanden habe.

Quote
Das Setup funktioniert natürlich so wie du dir das vorstellst. Schau dir mal die Helptexte von BINAT genau an, dann solltest du die Logik eignetlisch schnell verstehen.
Genau daran scheitere ich aber. Verwirrend finde ich bspw die Richtungsangaben bei den drei Netzwerken: External, Source und Destination. In diesem Fall habe ich bei External die nur lokal verwendete, übersetzte Adresse eingetragen (192.168.250.10). Bei Source die lokal nicht sichtbare, echte IP der Gegenstelle (192.168.1.10) und bei Destination trage ich vermutlich das lokale Netz ein oder any.

Quote
Hast du in der Phase2 auch in SPD die Netze eingetragen?
Ja, entschuldigung, das hatte ich vergessen zu erwähnen. In Phase2 steht in Manual SPD entries "192.168.250.10/32".
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: mimugmail on May 15, 2020, 02:58:08 pm
192.168.254 taucht im ersten Thread nirgends auf.
Noch mal von vor, sag mal bitte eine Kette von IP's Quelle und Ziel.

Welche IP hat der Client der die Verbindung initiiert:
Welche IP gibts der Client an:
Welches Quellnetz steht in Phase2 als lokal:
Welches Ziellnetz steht in Phase2 als remote:
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 15, 2020, 03:45:40 pm
192.168.254 taucht im ersten Thread nirgends auf.
Entschuldigung, hier hatte ich die IP falsch abgetippt. Es ist die 250, wie oben bereits erwähnt.

Quote
Noch mal von vor, sag mal bitte eine Kette von IP's Quelle und Ziel.

Welche IP hat der Client der die Verbindung initiiert: Der Ping kommt von 172.20.0.10
Welche IP gibts der Client an: Der Ping geht an 192.168.250.10
Welches Quellnetz steht in Phase2 als lokal: 172.22.10.0/24
Welches Ziellnetz steht in Phase2 als remote: 192.168.1.10/32

Ich setze jetzt mal einen Test auf, von dem kann ich problemlos Screenshots oder ganze Konfigs zeigen. Das jetzige Beispiel ist ein VPN zu einem Kunden, da bin ich etwas eingeschränkt.

[Falls ich es am Wochenende nicht mehr schaffe die Daten zu posten, dann wohl erst am Dienstag.]
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 19, 2020, 01:05:39 pm
Hier einmal ein eingerichtetes VPN mit BINAT zwischen einem lokalen Rechner und einem Netzwerk hinter dem OPNsense.
Die lokale IP ist die 192.168.1.243 und ich möchte den Host 172.22.12.111 erreichen. Dazu pinge ich die IP 172.21.10.111 an. OPNsense soll dabei auf seiner Seite das Netzwerk 172.21.10.0/24 auf das bestehende Netz 172.22.12.0/24 NATen:

Code: [Select]
lokaler PC [192.168.1.243] <==> IPfire / IPsec <==W=A=N==> OPNsense / IPsec <==> Virtual Net [172.21.10.0/24] <==> BINAT <==> LAN [172.22.12.0/24]
Die BINAT Regel:
Code: [Select]
IPsec 172.21.10.0/24 172.22.12.0/24 * BINAT TEST
Im Anhang sind Screenshots der Konfig. Die Firewallregeln um den Traffic durchzulassen stehen im Abschnitt IPsec und Floating. Und die Phase2 des zuständigen Tunnels ist auch die einzige Phase2 in diesem VPN. Darin steht auch der Eintrag 172.21.10.0/24 als Manual SPD entry.

Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: mimugmail on May 19, 2020, 01:24:44 pm
Dann ist in BINAT:

external 172.21.10.0/24
source LAN network
destinations 192.168.1.0/24
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 19, 2020, 01:34:45 pm
Pakete laufen jetzt ausschließlich in die Richtung des 172.22.12.0-er Netzes. Im Live View des Firewall Log sehe ich bei einem Ping von 192.168.1.243 nach 172.21.10.111 folgende Einträge und erhalte keine Antwort:
Code: [Select]
LAN May 19 13:26:50 192.168.1.243 172.22.12.111 icmp let out anything from firewall host itself
IPsec May 19 13:26:50 192.168.1.243 172.22.12.111 icmp Pakete von BD

Und bei einem Ping von 172.22.12.111 auf 192.168.1.243 erhalte ich ebenfalls keine Antwort, aber diesen Firewall Log:
Code: [Select]
IP50onvSwitch May 19 13:30:28 172.22.12.111 192.168.1.243 icmp let out anything from firewall host itself
Auf dem Host 172.22.12.111 sehe ich mit tcpdump, dass die Ping ankommen und eine Antwort generiert wird. Bis hierher ist der Weg also korrekt.
Code: [Select]
13:33:20.479219 IP 192.168.1.243 > 172.22.12.111: ICMP echo request, id 28483, seq 1, length 64
13:33:20.479259 IP 172.22.12.111 > 192.168.1.243: ICMP echo reply, id 28483, seq 1, length 64

Edit
Nur zum Verständnis: "IP50onvSwitch" ist der Name des WAN Interfaces.
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 19, 2020, 01:37:02 pm
Dann ist in BINAT:

external 172.21.10.0/24
source LAN network
destinations 192.168.1.0/24
Bei Destination habe ich aktuell "any" drinstehen. Ich setze dort mal explizit das Netz der Gegenstelle ein.

Edit: Änderung ist drin, aber keine Auswirkung.
Ich sehe am IPsec Tunnel auf beiden Seiten, dass Pakete nur in eine Richtung durch den Tunnel gehen, vom 192.168.1-er Netz zum 172.21.10-er Netz. Die Gegenrichtung ist immer mit "0 bytes_i" resp. "0 bytes_o" angegeben.

Da muss noch der Wurm in der BINAT Regel drin stecken. Oder im Routing. Denn ich sehe ja, dass Pakete mit der Absenderadresse 172.22.12.111 (also nicht transformiert) und der Zieladresse 192.168.1.243 auf das WAN Gateway geschickt werden, wo sie eigentlich nie landen dürften....  :-[
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: mimugmail on May 19, 2020, 03:37:43 pm
172.22.12.0/24 hast du bei Phase2 in SPD drin?
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 20, 2020, 07:42:09 am
172.22.12.0/24 hast du bei Phase2 in SPD drin?
Nein bislang nicht. Aber nachdem ich dieses Netz eingetragen habe, funktioniert es.  ;D
Ein kapitaler Fall von "finde dickes rotes Kreuz vor deiner Nase". :-[
Ich hatte irgendwie im Hinterkopf, dass das lokale Netz des Tunnels nochmal in der SPD angegeben werden müsste. Aber entweder habe ich das falsch gelesen oder es betraf nur eine bestimmte Konstellation. Zum Verständnis: Wenn ich mit BINAT arbeite, trage ich beide Netze in die SPD ein, sonst klappt es nicht. Warum reicht hier nicht das Netz, das nicht im Tunnel verwendet wird? Für das andere müsste der SPD Eintrag doch automatisch erfolgen. Aber wenn ich nur eins der beiden Netze eintrage, gibt es keine Verbindung.

Ich kann nicht behaupten, das Prinzip komplett verstanden zu haben, aber für die Anwendung reicht es jetzt hoffentlich. Dann kann ich endlich mit dem Kunden das VPN aufstellen und den Share einbinden. 8)

Ich danke dir für deine Geduld und die Hilfestellung!
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: mimugmail on May 21, 2020, 07:16:38 am
BINAT ist halt beides, outbound und port-forward, es kommt immer darauf an aus welcher Sicht du den Text in der Anleitung liest, wenn du Sender- und Empfängerseite betrachtest (egal WER die Verbindung initiiert) ist das hoffentlich verständlich.
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 21, 2020, 09:04:53 am
Moin,

genau da habe ich aber noch einen Knoten im Gedankengang. Ich stolpere immer wieder über die "externe" und die Quelle-Ziel Seiten. Gibt es irgendwo ein Tutorial, das mir diese Punkte mal ausführlich erklärt, möglichst mit Bildern und in verschiedenen Konstellationen? Ich kann mir dafür auch eine weitere Installation erstellen und alles ausprobieren. Solange ich das bestehende Netzwerk nicht beeinträchtige ist das alles kein Problem.
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: mimugmail on May 21, 2020, 04:05:10 pm
Stell dir einfach vor das ursprüngliche Ziel ist die Quelle der Verbindung, und da es Binat ist, ist es auch eingehend erlaubt.
Title: Re: Verständnisfragen zu BINAT mit IPsec
Post by: puldi on May 21, 2020, 06:39:16 pm
"Das Ziel ist die Quelle der Verbindung." Das war jetzt leider nicht hilfreich  :-\ Damit bin ich genau so doof wie vorher.
Mein Problem ist ja folgendes: Ich habe jetzt eine bestimmte Konstellation zum laufen gekriegt, will BINAT künftig aber für Transformationen der Netze in jede beliebige Richtung nutzen. Da gibt es, soweit ich es jetzt überblicke, folgende drei Szenarien:
Vielleicht können wir das hier einmal durchgehen, damit ich die Begrifflichkeiten zuordnen kann. Gegeben sei folgende Verbindung:
Code: [Select]
192.168.1.0/24 <==> ipsec <==W=A=N==> ipsec <==> firewall <==> 172.20.0.0/24Die Transformationen sollen ausschließlich auf der rechten Seite in <firewall> stattfinden.

Zu 1.: Das Netz 172.20.0.0 soll links als 10.0.1.0 erscheinen
Das ist die Variante die ich in diesem Strang zum laufen gebracht habe. Dies müsste die Zuordnung sein:
external: 10.0.1.0/24
source: 172.20.0.0/24
destination: 192.168.1.0/24
manual SPD: 172.20.0.0/24, 10.0.1.0/24

Zu 2.: Das Netz 192.168.1.0 soll rechts als 10.0.0.0 erscheinen
Hier vertausche ich source und dest, dabei kommt dies heraus (vielleicht meintest du das mit die Quelle ist das Ziel?):
external: 10.0.0.0/24
source:  192.168.1.0/24
destination: 172.20.0.0/24
manual SPD: 192.168.1.0/24, 10.0.0.0/24

Zu 3.: Das Netz 192.168.1.0 soll rechts als 10.0.0.0 und das Netz 172.20.0.0 soll links als 10.0.1.0 erscheinen
Jetzt müsste ich, rein theoretisch, die obigen beiden BINAT Regeln separat anlegen und im IPsec alle vier Netzwerke in die SPD eintragen:
external 1: 10.0.1.0/24
source 1: 172.20.0.0/24
destination 1: 192.168.1.0/24
external 2: 10.0.0.0/24
source 2:  192.168.1.0/24
destination 2: 172.20.0.0/24
manual SPD: 192.168.1.0/24, 10.0.0.0/24, 172.20.0.0/24, 10.0.1.0/24

Der letzte Part ist jetzt nur geraten. Klappt das so? Oder können die beiden BINAT Regeln nicht kombiniert werden?

Und wenn die Zuordnungen so stimmen, ergeben sich für mich folgende Faustregeln:
* In external trage ich die virtuellen Adressen ein (fake netzwerk).
* In source trage ich die zugehörigen echten Adressen ein.
* In destination trage ich die Adressen ein, von denen aus das fake Netz gesehen werden soll.
* In die SPD trage ich immer die genutzte Kombination aus external und source ein.

Kann ich das so stehen lassen und im Gehirn verankern? Denn diese Regeln würde ich mir leicht merken können und sie würden für mich auch durchaus Sinn ergeben.