Leiten Sie den gesamten Datenverkehr an angegebene Hosts hinter NAT um.

Leiten Sie den gesamten Datenverkehr an angegebene Hosts hinter NAT um.

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.

verwandte Informationen