jensano
Goto Top

PfSense - VPN IPsec keine Verbindung von extern

Hallo liebe Forenmitglieder,

ich habe mich jetzt mal an meine VPN Konfiguration gemacht und Probleme bei der Verbindung von außerhalb.
Konfiguriert habe ich exakt nach dieser sehr guten Anleitung
IPsec IKEv2 VPN für mobile Benutzer auf der pfSense oder OPNsense Firewall einrichten

Meine Hardware Konfiguration
Telekom Glasfasermodem (Down=100MBít/s ; Up=50MBit/s) > pfSense als Router / Firewall mit PPPoE Einwahl.
Es ist somit keine Kaskade vorhanden und WAN der pfSense sollte über meine öffentliche IP Adresse erreichbar sein.

Problem
Als Test habe ich das Certifikat in ein iPhone installiert und dort den VPN Zugang konfiguriert.
Ich habe zwar keine statische IP aber für den Moment geht es ja auch mit der aktuelle zugewiesenen öffentlichen IP. Diese war 84.150.xxx.xxx.

Wenn ich mit dem iPhone noch mit meinem Hausnetz verbunden bin funktioniert das Verbinden über VPN. Das iPhone und auch die pfSense zeigt eine aktive Verbindung an. Trenne ich das iPhone jedoch vom Hausnetz und versuche mich somit über das iPhone Vodafone 3G Netz einzuwählen klappt es nicht.

In System / Advanced / Firewall & NAT ist zugelassen das VPN automatisch FIrewall Rules erstellen darf welche in /tmp/rules.debug folgendermaßen sichtbar sind.

# VPN Rules
pass in  on $WAN  reply-to ( pppoe0 62.155.xxx.x )  proto udp from  any  to (self) port = 500 tracker 1000113691 keep state label "IPsec: Mobiluser Phase 1 - inbound isakmp"  
pass in  on $WAN  reply-to ( pppoe0 62.155.xxx.x )  proto udp from  any  to (self) port = 4500 tracker 1000113692 keep state label "IPsec: Mobiluser Phase 1 - inbound nat-t"  
pass in  on $WAN  reply-to ( pppoe0 62.155.xxx.x )  proto esp from  any  to (self) tracker 1000113693 keep state label "IPsec: Mobiluser Phase 1 - inbound esp proto"  

Frage
  • Was kann ich falsch gemacht haben das ich keine VPN Verbindung von außerhalb bekomme?
  • Meine öffentliche IPv4 Address ist 84.150..., in den VPN Rules wird eine Gateway IPv4 mit 62.155... angezeigt. Was ist der Unterschied und macht das eventuell Probleme?


pfSense so wie im Tutorial konfiguriert. Hier noch einmal als Screenshots

Edit Phase 1
edit phase 1

Edit Phase 2
edit phase 2

Mobile Clients
mobile clients

Preshared Keys
preshared keys

Firewall Rule IPsec
firewall rule ipsec

Konfiguration des Certifikates
Diese beiden (Server Zertifikat und die CA) habe ich dann auch in das iPhone importiert. Dies ist im Tutorial aber etwas wiedersprüchlich, da dort gesagt wird man soll das Serverzertifikat importieren, dann aber das man zum CA Reiter soll. Das Serverzertifikat ist jedoch unter certificates.
CA
screenshot_2020-12-28 pfsense mylocal - system certificate manager cas edit
certificates
certificates

Und die Konfiguration des VPN im iPhone (Serveradresse funktioniert natürlich nur solange wie diese aktuell ist)
iphone vpn

Content-Key: 636016

Url: https://administrator.de/contentid/636016

Printed on: April 20, 2024 at 06:04 o'clock

Member: Fenris14
Fenris14 Dec 28, 2020 at 07:13:09 (UTC)
Goto Top
Was hast du bei der Einrichtung des Zertifikats für SAN (Subject Alternative Names) hinterlegt? IP-Adresse vom WAN oder LAN? DNS?
Member: Jensano
Jensano Dec 28, 2020 updated at 10:02:02 (UTC)
Goto Top
Hallo Fenris,

das hatteich leider vergessen zu posten. Habe ich oben ergänzt. Ich habe
Common Name (etwas weiter oben als im Tutorial beschrieben) pfSense eingetragen
und unter Alternative Names habe ich die Kombinationen aus dem General Setup eingetragen. Also
  • pfSense
  • mylocal
  • pfSense.mylocal
IP Adresse nicht, da im Tut erwähnt wurde das man dies bei nicht statischer Adresse nicht braucht.
2020-12-28 10_58_44
Member: Fenris14
Fenris14 Dec 28, 2020 updated at 13:13:29 (UTC)
Goto Top
Könnte sein das genau das das Problem ist. Wenn du in deinem Zertifikat keinen DNS oder IP der WAN-Schnittstelle angibst und im IPhone dann die IP/DNS einrichtest. Kann das Zertifikat in diesem Fall nicht verifiziert werden.

Deshalb brauchst du entweder ein DynDNS oder eine feste IP, sonst geht es nicht. Dies muss dann wiederum als SAN im Zertifikat konfiguriert werden. In dem Tutorial von aqui steht auch explizit drin, alle möglichen Varianten eintragen! Intern ist es wiederum kein Problem, da du es ja mit "pfsense" ansprichst.
Member: Jensano
Jensano Dec 28, 2020 at 14:10:38 (UTC)
Goto Top
Ich habe jetzt zusätzlich bei Alternative Names im Server Certificate die IP Adresse die ich gerade immer noch öffentlich habe eingetragen. Das Zertifikat dann noch mal bei iPsec ausgewählt aber auch damit geht es nicht.
Muss ich denn bei den ganzen Common Names z.B. auch unter Ca was beachten?
Member: aqui
aqui Dec 28, 2020 at 16:41:28 (UTC)
Goto Top
Was steht denn bei dir im pfSense VPN Log wenn du dich mit dem Client verbinden willst ???
Das wäre ja zuerst der erste Anlaufpunkt ?!
Ggf. sollte du das Log VORHER löschen mit Klick auf
reset
Sinnvoll ist auch vorher die Log Reihenfolge zu ändern, damit du nie neuesten Messages immer oben hast:
reihe
Der Logoutput sagt in der Regel im Klartext wo der Fehler ist !
Member: Jensano
Jensano Dec 28, 2020 updated at 18:06:43 (UTC)
Goto Top
Edit:
Ich habe jetzt mal PFBlocker deaktiviert und irgendwie kamen dann Logs mit einer Verbindung. Siehe unten.
Das iPhone zeigt aber über 4G nun kein VPN Zeichen an. Auch kann ich über meinen iPhone Dateibrowser nicht auf meinen Hausserver zugreifen. Er zeigt aber in den Einstellungen im iPhone unter VPN "Verbunden" an.


Ich erhalte keine Logs wenn ich mich mit meinem iPhone versuche über das 4G Netz mit der pfSense zu verbinden. Das iPhone sagt
VPN Connection
The VPN server did not respond

Wenn ich während des Versuches zu connecten den Log aktualisiere kommt da nichts hinzu. Jedoch kommt da auch so andauernd was hinzu wenn ich nicht versuche zu verbinden.
Welcher Log ist jedoch gemeint?
Ich gucke unter Status / System Logs / VPN Da steht nichts drin.
unter Status / System Logs / IPsec steht folgendes:
log ohne pfblocker
Member: aqui
aqui Dec 28, 2020 updated at 19:15:58 (UTC)
Goto Top
Das iPhone zeigt aber über 4G nun kein VPN Zeichen an.
Welches iPhone Modell hast du ?
Bedenke das ältere Modelle kein DH Group 14 und SHA256 supporten. Dann solltest du besser auf DH Group 2 gehen. Siehe dazu auch die Anmerkung im Tutorial !
Im Zweifel kannst du auch auf L2TP umstellen, was etwas toleranter ist.
PfSense VPN mit L2TP (IPsec) Protokoll für mobile Nutzer
Member: Jensano
Jensano Dec 29, 2020 updated at 09:13:49 (UTC)
Goto Top
iPhone 6s mit iOS 14.3
Scheint ein jahrelanger Bug zu sein das das VPN Zeichen im Mobilen Netz nicht angezeigt wird. Sobald man in ein WLAN geht ist das Zeichen wieder da. DasiPhone zeigt unter den Einstellungen eine aktive VPN Verbindung an und auch die pfSense meldet das mein VPN User online ist.
Da ich nun mit HE.NET Tools meinen Server aus dem 4G über VPN anpingen konnte, habe ich es auch geschafft mit meinem Filebrowser auf dem iPhone auf ihn zuzugreifen - nach dem ich mal Mobile Daten für ihn im iPhone erlaubt habe 🤦‍♂️

Danke für das Tutorial - Endlich Zugriff von überall auf mein Heimnetz

Einige Frage noch
  • Ich wollte das sämtlicher Traffic des iPhone über mein Heimnetz geht. Vom Grundsatz her dachte ich das muss ich irgendwoe auf dem iPhone einstellen. Deinem Tut entnehme ich da anderes. Wo wird diese Entscheidung getroffen was das iPhone über sein eigenes Netz überträgt und was über das VPN also mein Heimnetz?
  • Wenn ich in meinem Heimnetz bin werden über "Port Forward" sämtliche DNS Verbindungen (also an Port 53) an meine pfSense geleitet. Also kann kein Rechner in meinem Netz selber einen eigenen DNS Server anfragen außer den ich auf der pfSense eingerichtet habe. Unter Mobile Clients gibt es ja "Provide a DNS server list to clients". Ist das dann überhaupt nötig? Oder gehen vom iPhone DNS Anfragen über das 4G Netz direkt raus?
  • In welchem Netz ist mein iPhone und auf welches Netz darf es zugreifen? Man gibt einmal bei Mobile User "Provide a virtual IP address to clients". Dann "Provide a list of accessible networks to clients" Unter Phase 2 dann "Network reachable by mobile IPsec clients." Das hört sich irgendwie doppel gemoppelt an. Einmal sage ich ihm welche Networks accessible sind und danach welche Network reachable sind.
  • Was ist wenn ich zwei VLAN von VPN erreichbar machen möchte? ich kann ja nur eines dort auswählen?
  • Mit dem folgenden Zitat sagts du einmal welche Netzte von der pfSense in den Tunnel sollen (erreichbar sind) aber beim nächsten Punkt geht es um den Traffic der von meinem iPhone (Client) kommen würde. Wie sind diese beiden Aussagen zu trennen? Das Feld wird doch nur für eine Seite pfSense oder iPhone (Client) da sein. P.S. mit 0.0.0.0/0 ist mein Server nicht mehr erreichbar. Ich kann gar nichts mehr anpingen im Heimnetz.
Zitat von @aqui:

  • Das Local Network setzt man jetzt wie gewünscht. Normal ist immer “LAN subnet”, also das lokale LAN an der pfSense. Sollen weitere lokale Netzwerke an der pfSense (ggf. VLANs) in den Tunnel geroutet werden, dann werden sie hier eingetragen. (Bsp: 192.168.0.0 /16 routet alle 192.168er Netze in den VPN Tunnel)
  • ACHTUNG: Wer den gesamten Client Traffic in den Tunnel routen will setzt “Local Network” auf “Network”, und gibt 0.0.0.0 als Adresse und /0 für das Subnet ein.
Member: aqui
aqui Dec 29, 2020 updated at 14:04:01 (UTC)
Goto Top
Scheint ein jahrelanger Bug zu sein das das VPN Zeichen im Mobilen Netz nicht angezeigt wird.
Nein ! Funktioniert hier mit einem 6, 8er und X mit der pfSense Konfig fehlerlos.
Das 6s sollte auch AES 256 und DH Group 14 supporten.
DasiPhone zeigt unter den Einstellungen eine aktive VPN Verbindung an und auch die pfSense meldet das mein VPN User online ist.
Mehr kann man nicht verlangen....works as designed ! 😉
Endlich Zugriff von überall auf mein Heimnetz
Glückwunsch ! 👏 So sollte es sein !
Zu den Fragen:
1.)
Das kommt immer etwas auf den Client und den Server an. Wenn du ein Redirect an der pfSense konfigurierst dann sendet auch der Apple iOS Client generell alles in den Tunnel.
2.)
Das ist völliger Quatsch und eine absolute Fehlkonfiguration. DNS (53) hat im Port Forwarding absolut NICHTS zu suchen. Normal lernt die Firewall dynamisch vom Provider per DHCP Client oder PPPoE ihren DNS Server. Arbeitet sie in einer Kaskade wird der DNS Server (in der Regel dann der davor kaskadierte Router) statisch als DNS eingetragen.
Zudem muss man zwingend den DNS Prozess richtig einstellen auf der Firewall:
  • DNS Forwarder DEaktivieren
  • Dann den DNS Resolver AKTIVIEREN
  • und zwingend dort den Forwarding Mode aktivieren
IPsec IKEv2 VPN für mobile Benutzer auf der pfSense oder OPNsense Firewall einrichten
Ansonsten ignoriert die Firewall sämtliche DNS Server und fragt statisch immer fest die Root Server !!
Port Forwarding mit DNS ist also generell völliger Quatsch und grundsätzlich falsch.
3.)
In welchem Netz dein iPhone ist siehst du in den TCP IP Settings des Telefons und HE.NET Tools. In welche Netze du darfst kann dir hier ja keiner beantworten, da du es versäumt hast hier mal dein Regelwerk zu posten. Ohne dein pfSense Regelwerk zu kennen braucht man ja die berühmte Kristallkugel um diese Frage zu beantworten, denn das Regelwerk bestimmst DU allein ja selber...
4.)
Was ist wenn ich zwei VLAN von VPN erreichbar machen möchte?
Da gibt es 2 Optionen:
  • Einmal dein oben angesprochens Gateway Redirect. Also alles in den Tunnel zu routen und damit dann auch alle VLANs erreichbar zu machen.
  • Zum anderen trägst du in den Phase 2 SAs des IPsec Setups einfach noch dein 2tes VLAN ein.
Besser ist aber immer in den SA Credentials eine größere Subnetz Maske zu verwenden und die VLANs intelligent zu subnetten.
Beispiel: Alle deine VLANs haben einen /24er Prefix und liegen im Bereich 172.16.x.0 wobei x die VLAN ID ist. Dann kannst du in der IPsec SA einfach einen 16 Bit Prefix angeben beim remoten Netz also 172.16.0.0 /16 (255.255.0.0) und dann wird sämtlicher Traffic in alle 172.16er Netze in den Tunnel geroutet also alle deine VLANs.
Member: Jensano
Jensano Dec 29, 2020 updated at 13:57:41 (UTC)
Goto Top
2.)
Da gibt es sogar extra Netgate Docs zu.
  • Deaktivieren von Allow DNS Server list to be overiden by DHCP/PPP on WAN (Damit genau nicht die des Providers genommen werden)
  • Deaktivieren von DNS Forworder (Wie du geschrieben hast)
  • DNS Resolver mit Forwarding Mode aktivieren
  • Jetzt könnte aber ein Rechner nicht den per Default zugewiesenen DNS Server meiner pfSense nehmen, sondern man trägt in Windows z.B. selber einen anderen ein. Um das zu verhindern musst du doch ein Portforwarding einstellen. Sprich wenn der Rechner gerne den Google DNS kontaktieren will und das natürlich über Port 53, dann fang ich das ab und leite diese Anfrage an meinen DNS auf der pfSense weiter. Wie in der Netgate doc.

3.)
Das meinte ich etwas anders. In den Rules Firewall Rules für IPsec der pfSense ist ein simples "Any" konfiguriert. Ja jetzt kann man einfach antworten das man damit überall hin darf, was ja auch richtig ist. Ich möchte das aber als Kombination aus Was dürfte ich und Was ist verfügbar sehen. Dazu würde ich gerne diese Einzelheiten verstehen:
  • Provide a virtual IP address to clients Was würde sein wenn ich das nicht mache? Was hat das für einen Zweck für meine Verbindung?
  • Provide a list of accessible networks to clients Wozu macht man das? Was hat man davon? Wenn der Client auf ein Netz zugreifen darf dann reicht das doch. Ich weis das ja. Aber warum muss man explizit dies dem Client mitteilen? Wenn ich das abhake kann ich trotzdem meinen Server zu Hause anpingen welcher im VLAN was ich unter Phase 2 eingestellt habe sitzt.
  • Unter Phase 2 dann "Network reachable by mobile IPsec clients" Verstehe ich das richtig das dies jetzt von der pfSense Seite aus in den Tunnel geroutet wird? Und wenn dann auch noch in den Firewall Rules von IPsec die Verbindung zu diesem Netzt erlaubt ist, kann ich drauf zugreifen?
  • Unter Phase 2 dann "Network reachable by mobile IPsec clients" Noch mal dazu. Ich sage damit doch schlicht welche Netze von der pfSense in den Tunnel geroutet werden und damit von den Clienten erreichbar sein könnten. Du beschreibst aber einmal das ich damit den gesamten Verkehr vom Client (iPhone also) über die pfSense leiten kann. Die Einstellung ist doch aber nur dafür da was von der pfSense Seite aus geroutet wird oder nicht?

4.) Verstanden. Ist ja logisch. Ich kann ja einfach einen zweiten Eintrag bei Phase 2 erstellen und somit VLAN 50 und VLAN 70 z.B. in den Tunnel routen.
Member: aqui
aqui Dec 29, 2020 at 14:14:30 (UTC)
Goto Top
(Damit genau nicht die des Providers genommen werden)
Aber genau DIE will man ja wegen der geringen Laufzeiten verwenden. Schnüffel DNS ala Google 8.8.8.8 macht ja kein normaler Mensch.
Und auch wenn solange man den Resolver bzw. Forwarder nicht customized wird gar nichts benutzt weder statisch noch DHCP oder PPPoE sondern immer rein nur die Root Server die in der Firmware hardgecodet sind.
Port Forwarding hat mit dem DNS Setup nicht das Geringste zu tun. Das ist sogar fatal wenn man damit ein Loch in die Firewall bohrt.
ein Rechner nicht den per Default zugewiesenen DNS Server meiner pfSense nehmen, sondern man trägt in Windows z.B. selber einen anderen ein.
Mit "per Default" meinst du per DHCP ?? Dort trägt sofern man es nicht cistomized die pfSense ja immer sich selber ein. Clients bekommen also immer die lokale pfSense IP als DNS, logisch, denn die Firewall arbeitet als DNS Proxy.
Wenn man das verhindern will das lokale Clients sich selber böse DNS Server eintragen sei es statisch oder wie auch immer, dann erzeugt man ein entsprechendes Regelwerk am LAN Port indem man UDP oder TCP 53 Traffic rein nur auf die pfsense IP zulässt ihn aber zu anderen Destinationen blockt.
Fertisch !!!
Noch viel besser macht man das mit einem DNS Filter auf der pfSense wie pfBlocker NG
https://www.computing-competence.de/2018/06/11/mit-pfsense-werbung-und-p ...
Oder mit einem PiHole im lokalen Netz als DNS Server:
Raspberry Pi Zero W als Pi-hole Adblocker
Port Forwarding für Port 53 ist der falsche Weg und zudem völlig unsinnig weil das nix mit DNS zu tun hat.
Provide a virtual IP address to clients Was würde sein wenn ich das nicht mache? Was hat das für einen Zweck für meine Verbindung?
Ein IP Client braucht ja nun einmal eine gültige IP Adresse um überhaupt kommunizieren zu können in einem IP Netz. Wie sollte es ohne gehen ??
Lass es mal weg, dann siehst du doch was passiert... face-wink
Provide a list of accessible networks to clients Wozu macht man das? Was hat man davon?
Security
Verstehe ich das richtig das dies jetzt von der pfSense Seite aus in den Tunnel geroutet wird?
Richtig verstanden...
Member: Jensano
Jensano Dec 29, 2020 updated at 20:14:00 (UTC)
Goto Top
Was hat dann aber Network reachable by mobile IPsec clients damit zu tun was com Clienten durch das VPN geht?
Wie geschrieben wenn ich da 0.0.0.0/0 eintrage kann ich gar nichts mehr vom iPhone aus auf meiner pfSense Seite erreichen.

Geht zwar am Thema vorbei aber zum DNS
Ich finde das mit dem Forwarding hat die Vorteile das DNS immer so funktioniert wie ich es will. Wenn ich das per Rule blocke dann geht es doch einfach nicht wenn jemand den nicht erlaubten Weg nutzen sollte oder ein Programm das einfach selber macht. Auch mit pfblocker wird das geblockt. Mit Forwarding bleibt die Funktion erhalten, wird jedoch immer auf den von mir vorgegeben Weg geleitet.
Ja per Default wird für den DNS Server die Subnetadresse genutzt.
System / General Setup / DNS Server Settings
Da habe ich die quad9 Server gnommen. Die beherschen auch auch DNS over TLS was ich ebenfalls im DNS Resolver aktiviert habe. Keine Ahnung ob das die Provider DNS Server auch können. Bei mir funktioniert das tadellos.
Wie gesagt kommen die Beschreibungen aus den Netgate docs wo ich mich lange eingelesen habe. Hier meine Konfig dazu.
2020-12-29 20_26_32

2020-12-29 20_27_44

2020-12-29 21_13_38