Frage zu OpenVPN Server auf OPNsense

balombi

Cadet 2nd Year
Registriert
Okt. 2021
Beiträge
31
Hallo zusammen,

ich habe einen OpenVPN-Server auf meiner OPNsense eingerichtet. Vorher hatte ich ein anderes Subnetz für meine OPNsense und habe gestern auf ein anderes gewechselt. Jetzt gibt es in der OpenVPN-Server-Konfiguration immer noch eine "push route " zum alten Subnetz.

Ich habe überall nachgeschaut, ob irgendwo auf der OPNsense noch das alte Subnetz konfiguriert ist, aber ich habe nichts gefunden. Auch wenn ich versuche, die Serverkonfiguration manuell zu bearbeiten, wird sie nach einem Neustart des OpenVPN-Servers wieder überschrieben.

Weiß jemand, woher die Subnetzinformationen kommen, um die "push route" Optionen in der OpenVPN-Serverkonfiguration auf der OPNsense zu erstellen?

Ich glaube, ich habe vergessen, das neue Subnetz irgendwo zu konfigurieren.


Außerdem habe ich aktiviert, dass der gesamte Datenverkehr durch den VPN-Tunnel läuft, aber wenn ich bei meinen Großeltern bin und das VPN aktiviert habe, kann ich von meinem Smartphone aus ihren Drucker in ihrem lokalen Netzwerk nicht erreichen.

Welche Route muss ich in die Client-Konfiguration aufnehmen, damit das lokale Subnetz 192.168.180.0/24 von meinem Telefon aus erreichbar ist, um etwas auszudrucken, aber der gesamte andere Daten- und Internetverkehr durch den Tunnel läuft, auch wenn ich mit dem Netzwerk 192.168.180.0/24 verbunden bin?

Ich bin für jeden Hinweis/Hilfe dankbar.


Mit freundlichen Grüßen

balombi
 
Lösung
Sorry, ich komme erst jetzt zum Antworten, ich konnte beide Probleme mittlerweile lösen.

Zum 1. Problem: In der OpenVPN Server-Konfiguration auf der OPNsense gibt es eine Option, "Redirect Gateway" zu aktivieren. Wenn der entsprechende Haken entfernt wird, kann man das lokale Subnetz angeben. Hier war noch das Subnetz 192.168.192.0/24 angegeben, man hat die Option aber nicht gesehen, da sie durch die aktivierte Option "Redirect Gateway" ausgeblendet war.

Zum 2. Problem: Ich habe nochmal getestet, ich konnte den Drucker tatsächlich auch ohne das Eintragen einer Route erreichen. Das Drucken über mein iPhone ging auch ohne Route. Ein Android-Smartphone hingegen hat den Drucker ohne eingetragene Route zwar auch gefunden, konnte aber keine...
redjack1000 schrieb:
Such mal nach Split Tunneling.
Das habe ich bereits, ich habe aber keinen gleichen Anwendungsfall, wie ich ihn habe, gefunden, bei dem nur eine bestimmte IP-Adresse aus dem Tunnel ausgenommen wird und der restliche Datenverkehr und Internetverkehr weiterhin durch das VPN getunnelt werden soll.

Wie muss ich das konkret umsetzen ?
 
redjack1000 schrieb:
Damit ich dir eine Konfiguration schreiben kann die funktioniert?
Damit mir jemand helfen kann, wie ich es konkret umsetzen kann, ein Split Tunneling für genau eine IP-Adresse zu erhalten um das Drucken zu ermöglichen. Und der Rest weiterhin alles durch das VPN getunnelt wird... Du meintest, du kannst mangels Dokumentation meinerseits nichts konkretes sagen. Was muss ich dokumentieren bzw. welche Informationen brauchst du, um helfen zu können ?
 
Konkret, hmm mal überlegen

Vollständige openvpn konfig und die Adresse von dem Gerät das angesprochen werden soll.

Kennwörter usw logischerweise auslassen, interessant ist die damit verbundene Netzwerkkonfiguration

Cu
redjack
 
balombi schrieb:
Vorher hatte ich ein anderes Subnetz für meine OPNsense und habe gestern auf ein anderes gewechselt. Jetzt gibt es in der OpenVPN-Server-Konfiguration immer noch eine "push route " zum alten Subnetz.
Welches Subnetz konkret? Das ist keine sicherheitskritische Information, aber wenn du sie uns vorenthälst, sehen wir womöglich den Fehler nicht - zB wenn du hüben wie drüben dasselbe Subnetz verwendest, was mich hierzu führt:

balombi schrieb:
Welche Route muss ich in die Client-Konfiguration aufnehmen, damit das lokale Subnetz 192.168.180.0/24 von meinem Telefon aus erreichbar ist, um etwas auszudrucken, aber der gesamte andere Daten- und Internetverkehr durch den Tunnel läuft, auch wenn ich mit dem Netzwerk 192.168.180.0/24 verbunden bin?
Normalerweise benötigt man bei OpenVPN gar keine Route dafür. Wenn in der Konfiguration redirect-gateway def1 steht, fügt OpenVPN automatisch zwei "halbe" Standardrouten hinzu, die das Standardgateway des Systems überlagern. Dadurch geht sämtlicher nicht-lokale Datenverkehr über eben dieses Gateway, den VPN-Server. Nicht-lokal ist dabei das Stichwort. Alles, was ins lokale Netzwerk zielt, funktioniert weiterhin, also Drucker, NAS, etc.


Um zielgerichteter helfen zu können, brauchen wir natürlich die OpenVPN-Konfiguration sowie Angaben zu den beteiligten Subnetzen, weil es auf die Details ankommt.
 
Die OPNsense hängt an meiner Fritz!Box und hat am WAN-Port die IP-Adresse 192.168.188.250. Zuvor hatte das lokale Netzwerk der OPNsense das Subnetz 192.168.192.0/24. Ich habe dieses dann auf 192.168.190.0/24 abgeändert. Das OpenVPN-Netz nutzt das Subnetz 10.10.10.0/24. Dies ist meine OpenVPN-Server-Konfiguration:

dev ovpns1
verb 3
dev-type tun
dev-node /dev/tun1
writepid /var/run/openvpn_server1.pid
script-security 3
daemon openvpn_server1
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
proto tcp-server
cipher AES-256-CBC
auth SHA512
up /usr/local/etc/inc/plugins.inc.d/openvpn/ovpn-linkup
down /usr/local/etc/inc/plugins.inc.d/openvpn/ovpn-linkdown
local 192.168.188.250
client-disconnect "/usr/local/opnsense/scripts/openvpn/ovpn_event.py '1'"
tls-server
server 10.10.10.0 255.255.255.0
client-config-dir /var/etc/openvpn-csc/1
username-as-common-name
auth-user-pass-verify "/usr/local/opnsense/scripts/openvpn/ovpn_event.py --defer '1'" via-env
learn-address "/usr/local/opnsense/scripts/openvpn/ovpn_event.py '1'"
tls-verify "/usr/local/opnsense/scripts/openvpn/ovpn_event.py '1'"
lport xxxx
management /var/etc/openvpn/server1.sock unix
max-clients 10
push "route 192.168.192.0 255.255.255.0"
push "route 192.168.188.0 255.255.255.0"
push "dhcp-option DNS 192.168.190.1"
push "register-dns"
push "block-outside-dns"
push "dhcp-option NTP 192.168.190.1"
push "redirect-gateway def1"
ca /var/etc/openvpn/server1.ca
cert /var/etc/openvpn/server1.cert
key /var/etc/openvpn/server1.key
dh /usr/local/etc/inc/plugins.inc.d/openvpn/dh.rfc7919
tls-crypt /var/etc/openvpn/server1.tls-crypt
persist-remote-ip
float


Ich habe manuell nichts daran angepasst, die Konfiguration wurde automatisch über die Eingaben in der grafischen Oberfläche der OPNsense erstellt. Komischerweise bleibt der Eintrag "push "route 192.168.192.0 255.255.255.0"" aber immer bestehen, obwohl ich meine, die Subnetzadresse überall in der OPNsense geändert zu haben.

Wenn ich die Adresse in der Serverkonfiguration manuell anpasse, wird diese Änderung nach einem Neustart des OpenVPN-Servers leider wieder überschrieben. Ich vermute, da muss an irgendeiner Stelle in der OPNsense noch das alte Subnetz hinterlegt sein, sodass dieser Eintrag die geänderte OpenVPN-Serverkonfiguration immer wieder überschriebt. Ich weiß nur nicht, an welcher Stelle ich das vergessen haben könnte.

Zu meinem zweiten Problem, die Option
Raijin schrieb:
redirect-gateway def1
wird ja als "Push" an den Client übergeben, allerdings kann ich den Drucker im Netzwerk meiner Großeltern (Subnetz 192.168.180.0/24) bei aktiviertem VPN trotzdem nicht erreichen. Mein Ziel ist es, nur die eine IP-Adresse des Druckers (z.B. 192.168.180.10) aus dem VPN-Tunnel auszunehmen, um den Drucker erreichen zu können. Wenn es eine Option gibt, dass das ganze lokale Subnetz erreichbar ist, wäre das auch okay, nur soll halt der restliche Datenverkehr und auch aller Internettraffic weiterhin durch den Tunnel gehen.

Ich hoffe, es ist jetzt besser verständlich, was ich meine :).

balombi
 
Die Config sieht soweit in Ordnung aus würde ich sagen. Allerdings ist das natürlich nur die Server-Config und in der Client-Config stehen womöglich noch zusätzliche Optionen drin.

Code:
# Server läuft auf der OPNsense-IP aus dem Fritz-Subnetz. OK
local 192.168.188.250

# VPN-Subnet 10.10.10.0/24. OK
server 10.10.10.0 255.255.255.0

# Route ins alte OPNsense Subnetz - überflüssig, weil redirect-gateway konfiguriert
push "route 192.168.192.0 255.255.255.0"

# Route für den Client ins Fritz-Subnetz - überflüssig, weil redirect-gateway konfiguriert
push "route 192.168.188.0 255.255.255.0"

# Client soll die OPNsense als DNS und NTP verwenden
push "dhcp-option DNS 192.168.190.1"
push "dhcp-option NTP 192.168.190.1"

# Client soll den Server als Standardgateway verwenden (mit 2x /1 Routen). Beinhaltet implizit obige Routen
push "redirect-gateway def1"

Streng genommen sind die push routen überflüssig, weil redirect-gateway das Standard-Gateway überlagert und somit alles, was nicht zum lokalen Subnetz gehört, über das VPN geht. Aber augenscheinlich werden sie automatisch generiert und sie tun ja nicht weh.

Die Option topology ist nicht angegeben und soweit ich weiß ist net30 nach wie vor Standard. Das hieße, dass jeder Client ein eigenes /30er VPN-Subnetz bekommt, mit sich selbst darin und einer Instanz des Servers, zB 10.10.10.8/30 und folglich 10.10.10.9 = VPN-Server und .10 = Client. Schöner wäre topology subnet, aber auch hier wohl automatisch generiert.

Die Routingtabelle eines Clients bei deinen Großeltern sollte daraufhin in etwa so aussehen:


Code:
 0.0.0.0        0.0.0.0         via 192.168.180.1   # die Standardroute zum Router
+0.0.0.0        128.0.0.0       via VPN-Server-IP   # 1. Hälfte von redirect def1
+128.0.0.0      128.0.0.0       via VPN-Server-IP   # 2. Hälfte von redirect def1
+11.22.33.44    255.255.255.255 via 192.168.180.1   # Route zum www-VPN-Server
 192.168.180.0  255.255.255.0   via 192.168.180.123 # die lokale Interface-Route
+192.168.188.0  255.255.255.0   via VPN-Server      # 1. push-route
+192.168.192.0  255.255.255.0   via VPN-Server      # 2. push-route

Die + Routen werden von OpenVPN hinzugefügt und resultieren aus der Config. Die übrigen Routen sind bereits vorhanden und haben mit dem VPN an sich nichts zu tun. Insbesondere die Interface-Route ist dafür verantwortlich, dass der lokale Traffic auch weiterhin lokal fließen sollte.

Solange es keine zusätzliche Route zu 192.168.180.0/24 gibt, die die bestehende Interface-Route überlagert (zB durch niedrigere Metrik oder spezifischere Subnetzmaske als /24), müsste der lokale Traffic weiterhin lokal bleiben, der Drucker also erreichbar sein. Wenn nicht, muss man tiefer einsteigen und zB mit einem Laptop besagte Routingtabelle überprüfen und gegebenenfalls mit WireShark/tcpdump den Netzwerktraffic mitschneiden, um zu sehen was genau passiert. Smartphones sind das so ziemlich besch..eidenste Diagnosewerkzeug auf diesem Planeten.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: redjack1000
Sorry, ich komme erst jetzt zum Antworten, ich konnte beide Probleme mittlerweile lösen.

Zum 1. Problem: In der OpenVPN Server-Konfiguration auf der OPNsense gibt es eine Option, "Redirect Gateway" zu aktivieren. Wenn der entsprechende Haken entfernt wird, kann man das lokale Subnetz angeben. Hier war noch das Subnetz 192.168.192.0/24 angegeben, man hat die Option aber nicht gesehen, da sie durch die aktivierte Option "Redirect Gateway" ausgeblendet war.

Zum 2. Problem: Ich habe nochmal getestet, ich konnte den Drucker tatsächlich auch ohne das Eintragen einer Route erreichen. Das Drucken über mein iPhone ging auch ohne Route. Ein Android-Smartphone hingegen hat den Drucker ohne eingetragene Route zwar auch gefunden, konnte aber keine Verbindung zum Drucker herstellen. Ich habe nun die Option "push "route 192.168.180.0 255.255.255.0 net_gateway"" zur OpenVPN-Serverkonfiguration hinzugefügt und nun kann sich auch das Android-Smartphone mit dem Drucker verbinden.

Beide Probleme sind nun also gelöst.

Vielen Dank für die Tipps und Hinweise.

balombi
 
Zurück
Oben