Interner Zugriff auf einen öffentlich erreichbaren internen Server über seinen externen DNS-Namen

Aus JanaWiki
Wechseln zu: Navigation, Suche

Szenario

Angenommen Sie betreiben einen Server, auf den aus dem Internet zugegriffen werden kann - beispielsweise einen Web-Server (HTTP/HTTPS). Dieser ist von extern über eine sog. öffentliche IP-Adresse erreichbar (fiktives Beispiel: 111.111.111.111).

Damit sich die Benutzer dieses Servers nicht die IP-Adresse merken müssen, registrieren Sie im öffentlichen DNS einen DNS-Hostnamen (und zuvor ggf. noch einen Domainnamen) und ordnen so der normalerweise schlecht zu merkenden IP-Adresse einen "sprechenden" Namen zu. Sofern Sie über keine feste öffentliche IP-Adresse verfügen, verwenden Sie hierfür einen sog. DynDNS-Dienst. Nun kann der externe Benutzer den Server unter seinem (leichter zu merkenden) DNS-Hostnamen ansprechen. Als fiktives Beispiel wählen wir hier: "www.name.tld"

In vielen Fällen verfügt der Server jedoch nicht wirklich über eine öffentliche, sondern über eine sog. private IP-Adresse (als Beispiel verwenden wir nachfolgend die 192.168.1.1). Wenn der externe Nutzer auf den Server zugreift, erfolgt durch die Firewall/den Router eine Umsetzung der öffentlichen IP-Adresse in der Anfrage in die ihm bekannte private IP-Adresse des Servers (unser Beispiel: 111.111.111.111 in 192.168.1.1). Das Verfahren hierzu heisst NAT (Network Address Translation)


Skizze:

[externer Client] -- {Internet} -- (1)[Firewall/Router] -- {LAN} -- [Switch/Hub] -- (2)[Server]
                                              ^                          \                            
                                              |                           \
                                             NAT                    [interner Client]

Legende:

(1) = öffentliche IP-Adresse der Firewall: 111.111.111.111

(2) = interne IP-Adresse des Servers: 192.168.1.1


Sicherheitshinweis:

Die Beispielskizze zeigt eine sehr einfache Konfiguration, die häufig in privaten Umgebungen anzutreffen ist. Der öffentlich erreichbare Server befindet sich hier im internen Netzwerk. Unter Sicherheitsgesichtspunkten ist diese Konfiguration nicht empfehlenswert! Bitte platzieren Sie den Server wenn möglich in einem getrennten Netzwerkbereich (Demilitarisierte Zone/DMZ)!


Problemstellung

Wenn nun ein Benutzer am internen Client den Server über seinen Host-Namen "www.name.tld" anzusprechen versucht, liefert die DNS-Namensauflösung die öffentliche IP-Adresse 111.111.111.111 zurück. Der Datenverkehr geht also von einem internen Client über die Firewall/den Router zu einem vermeintlich extenen Server. Diese Ziel-IP-Adresse ist aber die externe IP-Adresse der Firewall/des Routers. Die Firewall/der Router muss also in dieser Situation so intelligent sein, die Ziel-IP-Adresse trotzdem auf die interne IP-Adresse des Servers zu "natten", obwohl die Anfrage von intern stammt (sog. NAT-Loopback). Viele Firewalls/Router unterstützen dies jedoch nicht. Mit der Folge, dass der Server von internen Clients nicht über seinen (externen) DNS-Hostnamen angesprochen werden kann.

Lösungsansatz

Die Lösung des Problems ist einfach: Wir müssen nur dafür sorgen, dass DNS-Anfragen auf den Host "www.name.tld" aus dem internen Netzwerk nicht die öffentliche, sondern die interne IP-Adresse zurückliefern (Split-DNS).

Hierzu benötigen wir einen DNS-Server oder einen erweiterten DNS-Forwarder, der von den internen Clients benutzt wird und diese abweichende Zuordnung vornimmt.


Umsetzung mit Janaserver

Janaserver beinhaltet zwar keinen kompletten DNS-Server, aber immerhin einen DNS-Forwarder/-Proxy, der sich für das hiesige Vorhaben sehr gut eignet.


Vorgehen:

1) Installieren Sie Janaserver (sofern noch nicht geschehen). Vergessen Sie nicht, ein Administratorpasswort zu setzen!


2) Wechseln Sie in der Administration nach "Servertypen"-->"DNS-Server" und tragen Sie dort den DNS-Server Ihres Providers oder Ihren Router als solchen ein (abhängig von Ihrer Umgebung).

Klicken Sie anschließend auf "übernehmen"!


3) Legen Sie auf dieser Seite etwas tiefer eine neue DNS-Umleitung an. Im Beispiel: www.name.tld-->192.168.1.1

Klicken Sie anschließend auf "übernehmen"!


4) Wechseln Sie in der Administration nach "Grundeinstellungen"-->"IP-Adressen" und tragen Sie im Bereich "IP-Adressen festlegen" die IP-Adresse ein, die der Host im internen Netzwerk hat, auf dem Janaserver installiert ist.

Klicken Sie anschließend auf "übernehmen"!


5) Setzen Sie auf der gleichen Seite etwas tiefer im Bereich "Funktionszuordnung an die Netzwerkkarte(n)" in der Zeile "DNS-Server" unter der Spalte mit der unter 4) eingetragenen IP-Adresse ein Häkchen.

Klicken Sie anschließend auf "übernehmen"!


6) Starten Sie Janaserver neu.


7) Tragen Sie die IP-Adresse des Janaservers auf den internen Clients in den TCP/IP-Einstellungen als DNS-Server ein.

Wenn Sie einen DHCP-Server im internen Netz haben, können Sie diese Option auch über diesen an die Clients zuweisen lassen.


Hinweise für Administratoren von Active-Directory-Domänen

Wenn Ihre Clients Mitglied einer Windows2000/2003-Domäne sind, müssen diese einen DNS-Server benutzen, der mit erweiterten Ressorcen-Einträgen umgehen kann und dynamische Aktualisierungen zulässt. I.d.R. verwenden Sie hierfür den vom Betriebssystem mitgelieferten DNS-Server. Janaserver ist für diese Aufgabe nicht geeignet!

Sie können die vorgestellte Konfiguration grds. auch mit dem MS DNS-Server realisieren. Jedoch können Sie hier nicht einzelne Hosts (z.B. www.name.tld) anlegen, sondern müssen zuvor eine Zone definieren (im Beispiel: name.tld). Dies hat zur Folge, dass sie im Extremfall die gesamte Zone doppelt pflegen müssen, wenn in dieser Zone sowohl interne als auch externe Hosts existieren. Beispiel: ftp.name.tld ist anders als www.name.tld ein Server, der bei einem externen Dienstleister gehostet wird. Um ihn von extern und intern erreichen zu können, müssen Sie diesen DNS-Eintrag nicht nur im externen DNS einpflegen, sondern auch auf dem internen DNS-Server, denn dieser wird den internen Clients ein "Host unbekannt" zurückliefern, wenn dieser Eintrag intern nicht existiert. Schließlich ist er selbst für die Zone name.tld authorisiert und wird deshalb die DNS-Anfrage nicht an externe DNS-Server weiterleiten. Ärgerlich ist dieser Umstand dann, wenn diese Zone deutlich weniger intern als extern stehende Server beinhaltet.

Sie können sich diese Arbeit ersparen, indem Sie einen Janaserver wie oben beschrieben konfigurieren und im MS DNS-Server lediglich eine Weiterleitung an den Janaserver einrichten. Auf dem Janaserver werden dann nur die intern stehenden Server eingepflegt. DNS-Anfragen nach extern stehenden Servern werden an den dort eingetragenen (externen) DNS-Server weitergeleitet.