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

18

Ich möchte Hostnamen mit zwei verschiedenen Ports in der Windows- hostsDatei 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 Hostdatei anzugeben hosts? ZB: 127.0.0.1:80und127.0.0.1:9211

Peter Mortensen
quelle
1
Die HOSTS-Datei ordnet Namen nur IP-Adressen zu, nicht IPs + Ports. Überprüfen Sie jedoch superuser.com, indem Sie mehr Details zu dem, was Sie versuchen, beschreiben (gilt für einen Webserver usw. usw.), da es viele Möglichkeiten gibt, diese Art der Zuordnung zu erreichen, die jedoch immer von den Besonderheiten abhängen zur Hand.
Sie müssen NGNIX oder Apache HTTP - Server als Proxy - Server für die Weiterleitung von HTTP - Anforderungen an entsprechender Anwendung -> die bestimmt Port lauscht
Musa

Antworten:

18

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 hostsDatei finden Sie unter:

Linux /etc/hosts

Windows :C:\Windows\System32\drivers\etc\hosts

devi
quelle
Es ist hilfreich, sowohl den Pfad als auch den Namen der zu bearbeitenden Datei hinzuzufügen .
Nyedidikeke
@nyedidikeke Danke für den Kommentar, ich habe dies behoben
Devi
1
Können Sie möglicherweise mit dem Grund für die Angabe der Portnummer bei der Bearbeitung der Datei unter aktualisieren C:\Windows\System32\drivers\etc\hosts?
Nyedidikeke
Das ist in den anderen Antworten abgedeckt.
Scott
17

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";
}
John T
quelle
7
Netter Vorschlag für Techniknutzer. Zur Verdeutlichung: 1) Installieren Sie zuerst Fiddler. 2) Öffnen Sie Fiddler und wählen Sie im Menü "Regeln" die Option "Regeln anpassen" (oder drücken Sie in Windows Strg + R). Dadurch wird eine JS-Datei im Editor geöffnet. 3) Suchen Sie die statische Funktion OnBeforeRequest und fügen Sie das von @John vorgeschlagene Skript in den Text ein. Auch HostNameIs funktionieren nicht, es sollten HostnameIs sein. Hoffe das hilft.
Riz
Kennen Sie eine Open-Source-Alternative (james, owasp zap oder eine andere), mit der Sie denselben Effekt erzielen können?
Marc.2377
5
  • Das hosts Datei ist nur für die Auflösung von Hostnamen vorgesehen
  • Wenn der Browser den Port nicht direkt angibt <hostname>:<port>, wird standardmäßig der Port verwendet80

Typisches Problemszenario

  1. Anwendungen setzen ihre Server normalerweise auf dieselbe Standard-IP-Adresse, auch 127.0.0.1bekannt als 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 im reservierten Loopback- Adressraum in eine andere ändern könnten 127.0.0.0/8, würden Sie wahrscheinlich 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 netshals 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

  • Starten Sie Ihren 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/8kann verwendet werden.
      • Hinweis: Ich gehe davon aus, dass127.65.43.21:80kein anderer Dienstverfügbarist.
      • Sie können mit überprüfen netstat -a -n -p TCP | grep "LISTENING"
  • Fügen Sie die folgende Netzwerkkonfiguration mit dem Dienstprogramm netsh hinzu
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Greifen Sie auf den Server unter zu http://example.app

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

- netsh portproxy benötigt IPv6-Bibliotheken, auch wenn sie nur v4tov4 verwenden. In der Regel sind sie auch standardmäßig enthalten. Andernfalls installieren Sie sie mit dem folgenden 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.

Pau Coma Ramirez
quelle