[Gelöst] pfSense OpenVPN Site to Site Routing
-
Ja alle Clients im Standort B kommen zum Standort A und umgekehrt.
Nur eben funktioniert der Zugriff zum Internet nur über die jeweilige Standort pfsense.
Das darf oder soll nicht sein, weil der gesamte Traffic aller Clients im Standort B durch den Tunnel zum Standort A geführt werden soll und
der Internetzugriff nur im Standort A realisiert werden soll.Gruß
Peter -
Hi!
Das kann ja nicht sein!
Was sagen die Logs? Der Traffic von den LAN clients ins Internet am Standort B muss ja von einer Regel erlaubt werden. Wenn du alles loggst, dann kannst du dir ja ansehen, welche Regel das ist. Und genau dieser Regel setzt du das VPN-Gateway, wie zuvor beschrieben. Das nennt sich "Policy based routing", also die FW-Regel ist gleichzeitig fürs Routing zuständig.
Wenn keine Regel den direkten Traffic ins WAN erlaubt, kann es auch keinen geben. Also bitte prüfe deine Logs und deine Regeln.
Hast du etwa eine Floating rule?? Die haben nämlich Vorrang. Aber wie auch immer, das Log wird dich darüber aufklären, wie der Traffic ins WAN gelangt.Wenn ohnehin der ganze Traffic von B übers VPN laufen soll, kannst du auch das VPN Gateway als default setzen, dann ersparst du dir das Troubleshooting. Das Default-Gateway zu löschen ist nicht schlauste Weg.
Grüße
-
Das mit dem Löschen des Default GW habe ich anders gemeint. Ich habe das VPN Gateway als Default GW definiert.
Dennoch konnte kein Client aus dem Standort B über Standort A das Internet erreichen.
Da ist der Wurm drin!
Ich werde mir das nächst Woche nochmal genau ansehen (habe gerade alles heruntergefahren).Für alle die hier mitlesen, eine NW-Übersicht über mein Vorhaben.
Gute Nacht!
Peter
-
Hallo,
@viragomann:…
Wenn ohnehin der ganze Traffic von B übers VPN laufen soll, kannst du auch das VPN Gateway als default setzen, dann ersparst du dir das Troubleshooting.
...Ich habe mir das noch mal durch den Kopf gehen lassen.
Wenn als Default das VPN GW gesetzt ist, würde doch der pfsense OpenVPN Client für den Verbindungsaufbau des Tunnels sein
Gegenüber nicht mehr finden, weil der pfsense OpenVPN Server ja irgendwo im Internet über zahlreiche Hops zu erreichen ist.
D. h., die Route dahin wäre für den Tunnelaufbau unbekannt.
Oder sehe ich hier was falsch?In meiner Testumgebung werde ich das aber nochmal ausprobieren.
Ich habe gerade diese Anleitung gefunden:
https://doc.pfsense.org/index.php/Routing_internet_traffic_through_a_site-to-site_OpenVPN-connection_in_PfSense_2.1Gruß
Peter -
Hallo!
Ich habe mir das noch mal durch den Kopf gehen lassen.
Wenn als Default das VPN GW gesetzt ist, würde doch der pfsense OpenVPN Client für den Verbindungsaufbau des Tunnels sein
Gegenüber nicht mehr finden, weil der pfsense OpenVPN Server ja irgendwo im Internet über zahlreiche Hops zu erreichen ist.
D. h., die Route dahin wäre für den Tunnelaufbau unbekannt.
Oder sehe ich hier was falsch?Grüße
Das siehst du wohl richtig. So einfach ist es also doch nicht. Das war zu schnell geschossen. -
Hi,
irgendwie macht mich Dein doppelter Eintrag (push "redirect-gateway def1") in der openvpn-csc etwas stutzig.
Das muss nur über die Server.conf so funktionieren.
Der Standartgateway muss so bleiben, das ist klar.
Lies Dir das mal durch….
http://openvpn.net/index.php/open-source/documentation/howto.html#redirect
Eine NAT-Rule…iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
…ist dann zwingend erforderlich um vom Tunnel ins Internet zu kommen, das dürfte klar sein.
Ebenfalls die DNS-Funktion..push "dhcp-option DNS 10.8.0.1"
Letzteres sollte allerdings einen Ping von Standort B noch Internet A nicht stören, vorrausgesetzt es besteht eine ICMP-Rule.
Gruß orcape -
Hallo,
danke für die Infos.
Nächste Woche beschäftige ich mich noch mal intensiv mit der Problematik.
Ich werde Euch auf dem Laufenden halten.Schönes Wochenende!
Gruß
Peter -
Hallo,
das Problem ist gelöst.
Danke an Euch beide für die Unterstützung!!!Das wichtigste was bei meiner Config fehlte:
Auf der pfsense OpenVPN Serverseite muss manuell eine NAT Outbound Regel für das pfsense OpenVPN Client Netzwerk
erstellt werden. Es reicht nicht nur das OpenVPN Netzwerk zu definieren.
Weiter muss auf der pfsense OpenVPN Serverseite unter Advanced configuration der Eintrag "redirect-gateway def1;"
vorgenommen werden.
Quelle: https://doc.pfsense.org/index.php/Routing_internet_traffic_through_a_site-to-site_OpenVPN-connection_in_PfSense_2.1Was mir aber aufgefallen ist:
Wenn aus irgendwelchen Gründen der Tunnel unterbrochen wird, dann routet wieder jeder Standort für sich den
Traffic ins Internet. Das ist ja zunächst auch normal, da das Default GW dafür verantwortlich ist.
Für mein Vorhaben ist das aber unerwünscht.
D. h., nur Internetzugang für die Clients über den Tunnel zum pfsense OpenVPN Server, oder keinerlei Verbindung.Ich habe lange gerätselt und mir fiel keine Firewallregel dafür ein, welche nur den Internetzugang an der
pfsense OpenVPN Client verbietet und alles ander zulässt.
Dann habe ich den Gedanken mit dem "Policy based routing" aufgegriffen.
Das funktioniert dann genauso wie ich mir das vorgestellt habe.Habt ihr vielleicht einen Gedanken hierzu?
Gruß
Peter -
Hi Peter,
schön das Du hier schon gewisse "Vorarbeit" geleistet hast. ;)
Redirect Gateway ist eines meiner nächsten Projekte, welches aber nicht im produktiven Umfeld stattfindet, also auch nicht wirklich kritisch ist.
Nun hatte ich mit meiner Vermutung, NAT-Problem doch nicht ganz unrecht.
Hätte eigentlich auch gleich drauf kommen können. :(
Beim Routing mehrerer Serverinstanzen reicht auch das Routing auf den anderen Tunnel nicht aus.
Da musst Du auch zwingend zum remoten Netz mit routen.Dann habe ich den Gedanken mit dem "Policy based routing" aufgegriffen.
Ist eine Möglichkeit.
Bei den Clients als Gateway nicht mehr den default Gateway eintragen, sondern den Tunnel ?
Die soll´n ja eh nicht mehr direkt ins Netz.
Gruß orcape -
Hallo!
Ich habe lange gerätselt und mir fiel keine Firewallregel dafür ein, welche nur den Internetzugang an der
pfsense OpenVPN Client verbietet und alles ander zulässt.
Dann habe ich den Gedanken mit dem "Policy based routing" aufgegriffen.
Das funktioniert dann genauso wie ich mir das vorgestellt habe.Habt ihr vielleicht einen Gedanken hierzu?
Was jetzt? Funktioniert es nun oder nicht?
Eine Regel, die Internettraffic verbietet könnte am LAN Interface so aussehen:
Block IPv4 * LAN net * ! <vpn tunnel="" gateway="">* * none</vpn>
Diese sollte aber gar nicht nötig sein, weil eh schon eine Regel den Traffic ausschließlich übers VPN Gateway erlaubt. Wenn, dann sollte sie unterhalb dieser stehen.
Grüße
-
Hallo,
@orcape:… Bei den Clients als Gateway nicht mehr den default Gateway eintragen, sondern den Tunnel ?
Die soll´n ja eh nicht mehr direkt ins Netz.
...Ich denke das wird so nicht funktionieren, da ein GW sich zwingend immer im selben Subnet wie die Clients befinden muss.
Und die Clients befinden sich in meinem Fall im NW 192.168.39/24.
Das Gateway hierfür ist 192.168.39.254.
Der Tunnel ist aber im NW 10.111.111.0/30.Gruß
Peter -
…
Was jetzt? Funktioniert es nun oder nicht?Eine Regel, die Internettraffic verbietet könnte am LAN Interface so aussehen:
Block IPv4 * LAN net * ! <vpn tunnel="" gateway="">* * none</vpn>
Diese sollte aber gar nicht nötig sein, weil eh schon eine Regel den Traffic ausschließlich übers VPN Gateway erlaubt. Wenn, dann sollte sie unterhalb dieser stehen
…Ja es funktioniert.
Ich habe auf die Client LAN Regel das Tunnel Gateway gesetzt. Damit funktioniert alles 100%ig.
Pass IPv4 * LAN net * * * OPT1_VPNV4 none <beschreibung>Aber ohne diese Regel gibt es ein Problem falls es eine Tunnelunterbrechung gibt.
Alle Clients gehen dann nämlich über die Default Gateway ins Internet.
Das dürfen sie aber nicht.
Leider kenne ich keine Regel, welche verhindert dass im Falle der Tunnelunterbrechung die Clients ausversehen am
Standort pfsense OpenVPN Client in das Internet gehen können.Gruß
Peter</beschreibung> -
Also die Regel mit dem Tunnel Gateway wird praktisch deaktiviert, wenn das Gateway weg ist?
Das wusste ich auch nicht. Wieder was gelernt. :)Einen Vorschlag für eine Regel, die den direkten Internetzugriff verhindert, habe ich ja oben gepostet.
Das ist eine Block-Regel auf dem LAN Interface oder wo immer die Clients dranhängen, die sämtlichen Traffic unterbindet mit Ausnahme des Tunnel-Netzes.
Die Ausnahme setzt man, indem man bei Destination "not" anhakt und das entsprechende Netz (Tunnel) einstellt. Wenn du mehrere Ausnahmen benötigst, lege dir dazu erst einen Alias an und verwende diesen in Destination.Gruß
-
Hallo,
ja scheint so.
Wenn der Tunnel unterbrochen ist ignoriert diese Regel das Tunnel Gateway und benutzt das Default Gateway.
Ich erreiche zumindest z. B. mit ping 8.8.8.8 die Adresse.
Finde ich auch etwas komisch.
Eine DNS Auflösung findet aber nicht statt, weil ich einen DNS im anderen Standort verwende.
Somit kann der Client nicht direkt in das Internet.Das werde ich mir nochmal genauer ansehen.
Gruß
Peter -
Die Sache war hier schon mal Thema und da gab es noch eine Einstellung dazu. Ich habe jetzt nochmals nachgesehen:
In System > Advanced > Miscellaneous gibt es den Punkt "Skip rules when gateway is down". Dort gehört nach meinem Verständnis der Anleitung ein Haken hin, ansonsten wird das Default Gateway benutzt.
It's not a bug, it's a feature! ;)Eine DNS Auflösung findet aber nicht statt, weil ich einen DNS im anderen Standort verwende.
Somit kann der Client nicht direkt in das Internet.Wenn das sicher sein soll, würd ich mich nicht darauf verlassen. Man kann ja direkt über die IPs raus und möglicherweise können die User auch selbst Ihren DNS konfigurieren.
Gruß
-
Hallo,
Die Sache war hier schon mal Thema und da gab es noch eine Einstellung dazu. Ich habe jetzt nochmals nachgesehen:
In System > Advanced > Miscellaneous gibt es den Punkt "Skip rules when gateway is down". Dort gehört nach meinem Verständnis der Anleitung ein Haken hin, ansonsten wird das Default Gateway benutzt.
It's not a bug, it's a feature! ;)Eine DNS Auflösung findet aber nicht statt, weil ich einen DNS im anderen Standort verwende.
Somit kann der Client nicht direkt in das Internet.Wenn das sicher sein soll, würd ich mich nicht darauf verlassen. Man kann ja direkt über die IPs raus und möglicherweise können die User auch selbst Ihren DNS konfigurieren.
Gruß
Danke, genau diese Einstellung bzw. Funktion ist die fehlende!
Auch wenn meine Clients keinerlei Einstellungen vornehmen können, ist das mit dem DNS nur aus der Not geboren.Gute Nacht
Gruß
Peter -
Hallo,
ich hatte gestern zu Testzwecken mal eine Regel auf das LAN NW gelegt.
Block IPv4 * LAN net * ! <vpn tunnel="" gateway="">* * none <beschreibung>Leider funktioniert so kein Zugriff durch den Tunnel auf den anderen Standort (LAN's und Internet).Danach hatte ich diese Regel probiert:
Pass IPv4 * LAN net * <vpn tunnel="" gateway=""> * * none <beschreibung>Auch hier kein Zugriff durch den Tunnel auf den anderen Standort (LAN's und Internet).Ich kann in beiden Fällen das Tunnel NW erreichen, aber das Routing durch den Tunnel funktioniert damit nicht.
Gruß
Peter</beschreibung></vpn></beschreibung></vpn> -
Hallo!
Diese Regel muss unterhalb der "Policy based routing" Regel eingereiht sein, damit sie nur angewandt wird, wenn obige nicht zutrifft. Ist aber ohnehin hinfällig, denn bei dem Verhalten der pfSense bezüglich "Policy based routing", das wir ja mittlerweile geklärt haben, funktioniert das so nicht.
Die Regel wäre für den Fall gedacht gewesen, dass die "Policy based routing" Regel einfach deaktiviert wird, wenn das GW nicht da ist. Dann wäre diese zusätzlich Regel in Kraft getreten. Tatsächlich wird aber das VPN-GW einfach durch das Default Gateway ersetzt und damit wird "Policy based routing" Regel angewandt und nachfolgende ignoriert.
Kannst du dir demnach sparen und für die korrekte Funktion ist es nun ja auch nicht nötig.
Für deinen Regelsatz, den wir ja bislang nicht kennen, behalte im Kopf:
-
Es ist ausschließlich Traffic möglich, der explizit in Regeln erlaubt ist.
-
Die Regeln werden der Reihe nach von oben nach unten durchgegangen.
-
Trifft eine Regel zu, wird sie angewandt und nachfolgende ignoriert.
Mit diesen Grundsätzen ist es einfach, das Verhalten der pfSense nachzuvollziehen. Gleiches gilt für NAT-Regeln.
Grüße
-
-
Hallo,
ja, das ist mir klar, danke.
Ich werde das jetzt nicht weiter verfolgen, weil die andere Lösung sauber funktioniert.Es gibt aber auch noch eine andere Lösung um zu verhindern, dass Clients unberechtigt ins Internet gehen können.
1. Man kann auf dem pfsense OpenVPN Client die Regel NAT Outbound für das lokale LAN löschen/deaktivieren.2. Zusätzlich kann man das Tunnel Netz mit dem Ziel pfsense OpenVPN Server und dem Port z. B. 1194 definieren.
WAN 10.111.111.0/30 * 10.111.111.1/32 1194 WAN address * YES <beschreibung>Gruß
Peter</beschreibung>