Direkt zum Hauptinhalt

Problem mit Split-VPN, DNS und Routing (Beispiel: Moodle)

Bei Nutzung des Split-VPN kann es zu Verbindungsproblemen kommen, wenn interne Clients einen externen DNS-Server verwenden und dadurch eine externe IP-Adresse für einen eigentlich internen Dienst erhalten.

Hintergrund

Beim Split-VPN wird nur bestimmter Netzwerkverkehr über das VPN geroutet (z. B. interne Netze).
Der restliche Verkehr wird direkt über das lokale Netzwerk bzw. das Internet gesendet.

Wenn ein Client jedoch externen DNS verwendet, kann Folgendes passieren:

  1. Die Domain wird auf eine externe IP-Adresse aufgelöst.
  2. Der Client versucht diese externe Adresse zu erreichen.
  3. Diese Adresse ist aus dem internen Netz nicht erreichbar.
  4. Die Verbindung schlägt daher fehl, obwohl der Dienst intern verfügbar ist.

Beispiel: Moodle

Die Adresse moodle.bszn-da.de kann auf zwei verschiedene IP-Adressen zeigen:

  • Intern: 172.31.200.11
  • Extern: 130.83.90.135

Wird ein interner DNS-Server verwendet, erhält der Client die interne Adresse und kann den Dienst direkt erreichen.

Wird jedoch ein externer DNS-Server genutzt, erhält der Client die externe Adresse.
Da diese aus dem internen Netz nicht erreichbar ist, schlägt die Verbindung fehl.

Ping-Tests

Auflösung über internen DNS

[09:52] moodle.bszn-da.de → 172.31.200.11 (intern) 6 Pakete, 0% loss | min/avg/max = 2.5 / 6.7 / 18.3 ms

Auflösung über externen DNS

[10:27] moodle.bszn-da.de → 130.83.90.135 (docker2.da.schule.hessen.de, extern) 8 Pakete, 0% loss | min/avg/max = 31.4 / 40.7 / 58.0 ms

Direkte Tests

[10:28] Direkt → 172.31.200.11 (intern) 7 Pakete, 0% loss | min/avg/max = 2.8 / 4.0 / 5.0 ms

[10:28] Direkt → 130.83.90.135 (extern) — kein Ergebnis

Ursache

Der Fehler entsteht durch die Kombination aus:

  • Split-VPN
  • externem DNS
  • einer externen Adresse, die intern nicht erreichbar ist

Der Client versucht den Dienst über eine Adresse zu erreichen, die aus dem aktuellen Netzwerkpfad nicht geroutet werden kann.

Lösungsmöglichkeiten

Folgende Maßnahmen verhindern das Problem:

  • Verwendung des internen DNS-Servers
  • Split-DNS für interne Dienste
  • Eintrag der internen Adresse in der Hosts-Datei

172.31.200.11 moodle.bszn-da.de

  • Sicherstellen, dass interne Clients interne Adressen bevorzugt nutzen

Damit wird verhindert, dass interne Systeme versuchen, einen intern gehosteten Dienst über eine nicht erreichbare externe Adresse aufzurufen.