Freitag, 4. September 2020

Windows Active Directory Domain mit Split-Horizon DNS

Man hat nicht oft den Luxus, eine Windows Domäne neu aufzusetzen. wenn es dann doch so weit ist, kommt man nicht umhin, sich über den Namen Gedanken zu machen. Sehr gut werden die einzelnen Optionen im Samba Wiki beleuchtet.

Ich möchte kurz beschreiben, welche Herausforderungen überwunden werden müssen, wenn die AD Domain der externen DNS Domain entspricht - insbesondere auf die Überschneidung mit der Unternehmenswebseite unter http://domain.tld.

Grundsätzlich sind in diesem Fall zwei DNS Server zu pflegen (daher Split-Horizon oder Split-Brain DNS):
  1. die AD integrierten Windows DNS Server
  2. die externen Internet DNS Server
Während die internen DNS Server sämtliche Namen der lokalen Infrastruktur enthalten, sollten nur in Ausnahmefällen interne Einträge im externen DNS veröffentlicht werden, da so vertrauliche Informationen der eigenen Infrastruktur bekannt werden können.
Allerdings ist es umgekehrt zwingend erforderlich sämtliche externe Einträge zusätzlich auf den internen Servern zu pflegen, da eine DNS Weiterleitung wegen der lokalen Zuständigkeit nicht möglich ist.

Sofern nicht täglich neue externe Dienste hinzukommen, bzw. geändert werden müssen, hat sich diese Vorgehensweise bewährt.

Einen Schönheitsfehler hat diese Lösung allerdings: prinzipbedingt muss die Domain domain.tld auf die AD Domain Controller zeigen. Soll die Unternehmenswebseite neben www.domain.tld auch unter domain.tld verfügbar sein, so würden Browser im internen Netz immer die Domain Controller kontaktieren. Naturgemäß sollten Domain Controller keine weiteren Dienste anbieten und so erhält der Browser immer einen Timeout.

Eine Lösung für dieses Problem ist ein kleiner Proxy, der Verbindungen auf Port 80/443 an den eigentlichen Webserver weiterleitet. Ich habe dazu HA-Proxy unter Cygwin kompiliert und nutze die Windows Aufgabenplanung, um den Proxy beim Systemstart zu starten. Die Konfiguration sieht z.B. so aus:
global
    maxconn 256

defaults
    log	global
    mode	tcp
    option	dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000

listen http_proxy
    bind *:80
    mode http
    default_backend http_backend

backend http_backend
    mode http
    server web www.domain.tld:80 check

listen ssl_proxy
    bind *:443
    mode tcp
    default_backend ssl_backend

backend ssl_backend
    tcp-request inspect-delay 5s
    tcp-request content accept if { req_ssl_hello_type 1 }
    server web www.domain.tld:443 check
Da die Unternehmensseite auf www.domain.tld eingerichtet ist, vermittelt der Proxy eigentlich auch nur den HTTP-Redirect und wird für die weitere Kommunikation mit dem Webserver nicht weiter beansprucht.
HA-Proxy könnte diesen Redirect ebenfalls selbst beisteuern, bräuchte allerdings für den HTTPS-Redirect ein entsprechendes Zertifikat. Mithilfe des TCP Tunnels im ssl_backend kann darauf verzichtet werden.

Keine Kommentare:

Kommentar veröffentlichen