it-swarm.com.de

Wie kann ich IP und Ports für einen Hostnamen in der Windows-Hostdatei angeben?

Ich möchte Hostnamen mit zwei verschiedenen Ports in der Windows-Datei hosts angeben.

Gibt es eine Möglichkeit, dies zu tun? Oder ist es von Windows selbst nicht erlaubt?

Ich habe in den letzten 8 Stunden meine Zeit mit der Suche nach der Lösung verschwendet.

Ist es möglich, Ports in der Host-Datei anzugeben, hosts? Zum Beispiel: 127.0.0.1:80 und 127.0.0.1:9211

17
SIA

Sie können einer Portnummer keinen Hostnamen zuordnen, der einer IP in der Hostdatei zugeordnet ist. Sie können dies mit Fiddler erreichen, indem Sie FiddlerScript verwenden:

if (oSession.HostnameIs("somesite.com")){
    oSession.bypassGateway = true;
    oSession["x-overrideHost"] = "1.2.3.4:8080";
}
16
John T

Verwenden Sie einfach IP-Adressen ohne Ports. Beispiel:

192.168.2.50  example.com

So greifen Sie über Ihren Browser (oder ein anderes Programm) auf 192.168.2.50:5555 zu:

http://example.com:5555/

(Die Datei hosts befindet sich unter C:\Windows\System32\drivers\etc\hosts.)

14
devi
  • Die Datei hosts dient nur zur Auflösung des Hostnamens
  • Der Browser verwendet, wenn der Port nicht direkt angegeben wird: d. H. <hostname>:<port> standardmäßig den Port 80

Typisches Problemszenario

  1. anwendungen setzen ihre Server normalerweise auf dieselbe Standard-IP-Adresse 127.0.0.1 aka localhost (in der Hosts-Datei definiert) .
  2. um eine Kollision zwischen möglicherweise vorhandenen/ausgeführten Servern zu vermeiden, können Sie in der Regel den Port ändern, nicht jedoch die IP-Adresse.

    2a. Wenn Sie die IP-Adresse des Servers in einen anderen im reservierten Loopback-Adressraum127.0.0.0/8 ändern könnten, dann Sie Wahrscheinlich würde ich nicht versuchen, Ports in der Hosts-Datei festzulegen.

Mögliche Lösung

Sie können dies umgehen, indem Sie das in Windows enthaltene Netzwerk-Tool netsh als Port-Proxy verwenden.


Überblick

example.app
 |                               <--browser defaults to port 80
 +--> example.app:80
       |                         <--Hostname resolution by Hosts File
       +--> 127.65.43.21:80      
             |                   <--Link by netsh Utility
             +--> 127.0.0.1:8081

Aktionen

  • Starte deinen Server auf localhost:8081
  • Fügen Sie den "lokalen DNS" in der Hosts-Datei als neue Zeile hinzu
    • 127.65.43.21 example.app
      • Jede freie Adresse im Netzwerk 127.0.0.0/8 kann verwendet werden.
      • Hinweis: Ich gehe davon aus, dass 127.65.43.21:80 nicht von einem anderen Dienst belegt ist.
      • Sie können mit netstat -a -n -p TCP | grep "LISTENING" überprüfen
  • fügen Sie die folgende Netzwerkkonfiguration mit dem netsh-Befehl Dienstprogramm hinzu
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Zugriff auf den Server unter http://example.app

Anmerkungen:
- Diese Befehle/Dateiänderungen müssen mit Administratorrechten
ausgeführt werden

- netsh portproxy benötigt ipv6-bibliotheken , um v4tov4 zu verwenden. In der Regel werden sie auch standardmäßig einbezogen, andernfalls installieren Sie sie mithilfe der folgenden Methoden Befehl: netsh interface ipv6 install


Sie können den Eintrag sehen, den Sie mit dem Befehl hinzugefügt haben:

netsh interface portproxy show v4tov4

Sie können den Eintrag mit dem folgenden Befehl entfernen:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Links zu Ressourcen:

Hinweis: Diese Antwort ist eine Kopie meiner Antwort, die in dieser ähnlichen Frage/Antwort zum Stapelüberlauf erörtert wurde.

5