
Gibt es eine Möglichkeit, den gesamten Datenverkehr auf bestimmte Hosts hinter NAT umzuleiten?
Ich habe beispielsweise einen Server, eine Domäne „mydomain.com“ und 3 Hosts hinter NAT. Ich möchte 3 Subdomänen konfigurieren:
host1.mydomain.com
host2.mydomain.com
host2.mydomain.com
und jeder von ihnen leitet alle Ports zum angegebenen Host im lokalen Netz um.
Diese Umleitung sollte folgende Funktionalität bieten:
http://host1.meinedomain.com(kann mit Apache erreicht werden)
ssh[email geschützt](???)
und andere Protokolle auf verschiedenen Ports
Vielen Dank für jede Hilfe.
Antwort1
Dies kann für HTTP und HTTPS mit einem „Reverse-Proxy“ erfolgen, der die Host-Header-Informationen in einer HTTP-Anforderung prüft, den entsprechenden Inhalt abruft und zurückgibt. Microsofts ISA (Internet Security and Acceleration) kann dies tun, ebenso Apache/Squid unter Linux.
Bei allen anderen Ports wird es schwieriger, da der meiste Datenverkehr nicht den gewünschten Hostnamen, sondern nur eine Ziel-IP enthält (z. B.: „Ich möchte per SSH auf 1.2.3.4 zugreifen“ statt „Ich möchte per SSH auf host1.mydomain.com zugreifen“).
Das Zuordnen bestimmter externer Ports zu internen Ports ist einfach (Port 22 -> Host1:22, Port 23 zu Host2:22, Port 24 -> Host3:22 usw.) und manchmal alles, was benötigt wird.
Wenn Sie wirklich alle Ports verschiedenen internen Servern zuordnen müssen, benötigen Sie mehrere externe IP-Adressen, die die meisten ISPs bereitstellen können (zumindest wenn Sie eine Geschäftsverbindung haben).
Antwort2
Apache mod_proxy?
Antwort3
Nein, eine Portweiterleitung auf Basis des DNS-Namens ist nicht möglich. Der Domänenname ist kein Teil des IP-Pakets, Ihr Router kann ihn daher nicht zur Unterscheidung eingehender Verbindungen verwenden.
Wenn ein Remote-Host eine Verbindung zu host1.mydomain.com herstellt, wird dieser Name in eine IP-Adresse aufgelöst, die in das IP-Paket eingefügt wird. Wenn host2.mydomain.com in dieselbe IP-Adresse aufgelöst wird, sieht das erstellte Paket genauso aus wie für host1.mydomain.com.
Aus diesem Grund ist es möglich, wenn auf Ihrem Server mehrere IP-Adressen konfiguriert sind.
Apache kann den eingehenden Domänennamen unterscheiden, aber das geschieht auf Anwendungsebene. In HTTP 1.1 sendet ein Browser den Domänennamen in den HTTP-Headern, nach denen Apache mithilfe virtueller Hosts filtern kann.