Come posso specificare IP e porte per un nome host nel file hosts di Windows?


18

Voglio specificare i nomi host con due porte diverse nel hostsfile Windows .

C'è un modo per farlo? O non è consentito da Windows stesso?

Ho perso tempo a cercare la soluzione nelle ultime 8 ore.

E 'possibile specificare le porte nel file host, hosts? Ad esempio: 127.0.0.1:80e127.0.0.1:9211


1
Il file HOSTS associa solo i nomi agli indirizzi IP, non agli IP + alle porte. Controlla superuser.com, tuttavia, descrivendo più specifiche di ciò che stai cercando di fare (è questo per un server web ecc. Ecc.) In quanto ci sono molti modi per ottenere questo tipo di mappatura, ma sempre a seconda delle specifiche a mano.

È necessario il server HTTP NGNIX o Apache come server proxy per l'inoltro delle richieste http all'applicazione appropriata -> che ascolta una porta particolare
Musa

Risposte:


18

Usa semplicemente gli indirizzi IP senza porte. Esempio:

192.168.2.50  example.com

Quindi, per accedere a 192.168.2.50:5555 dal tuo browser (o altro programma):

http://example.com:5555/

Il hostsfile è disponibile all'indirizzo:

Linux /etc/hosts

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


Sarà utile aggiungere sia il percorso che il nome del file da modificare.
nyedidikeke,

@nyedidikeke grazie per il commento, ho risolto questo problema
devi il

1
È possibile aggiornare con il motivo per NON specificare il numero di porta durante la modifica del file in C:\Windows\System32\drivers\etc\hosts?
nyedidikeke,

Questo è coperto nelle altre risposte.
Scott,

17

Non è possibile associare un numero di porta a un nome host associato a un IP nel file hosts. Puoi farlo con Fiddler usando FiddlerScript: 

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

7
Bel suggerimento per gli utenti della tecnologia. Solo per chiarire, 1) Prima installa Fiddler 2) Quindi aprilo e vai al menu Regole e seleziona l'opzione Personalizza regole (o premi Ctrl + R su Windows). Questo aprirà un file JS nel blocco note. 3) Trova la funzione statica OnBeforeRequest e incolla lo script suggerito da @John nel suo corpo. Anche HostNameIs non funzionerà, dovrebbe essere HostnameIs. Spero che sia di aiuto.
Riz,

Sei a conoscenza di qualche alternativa open source (james, owasp zap o altro) che può essere utilizzata per lo stesso effetto?
Marc.2377,

5
  • Il hostsfile è solo per la risoluzione del nome host
  • Il browser , in assenza di specificare direttamente la porta: ovvero <hostname>:<port>, per impostazione predefinita porta80

Scenario tipico del problema

  1. le applicazioni in genere impostano i loro server sullo stesso indirizzo IP predefinito 127.0.0.1aka localhost (definito nel file hosts) .
  2. per evitare la collisione tra eventuali altri server esistenti / in esecuzione, l'applicazione in genere consente di modificare la porta, ma non l'indirizzo IP.

    2a. Se potessi cambiare l'indirizzo IP del server con un altro nello spazio degli indirizzi riservati del loopback127.0.0.0/8 , probabilmente non tenteresti di impostare le porte nel file hosts.

Possibile soluzione

È possibile aggirare questo problema utilizzando lo strumento di rete incluso di Windowsnetsh come proxy di porta.


Panoramica

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

Azioni

  • Avvia il tuo server localhost:8081
  • Aggiungi il "DNS locale" nel file hosts come nuova riga
    • 127.65.43.21 example.app
      • È 127.0.0.0/8possibile utilizzare qualsiasi indirizzo gratuito nella rete .
      • Nota: presumo che127.65.43.21:80non sia occupato da un altro servizio.
      • Puoi verificare con netstat -a -n -p TCP | grep "LISTENING"
  • aggiungere la seguente configurazione di rete con l' utilità del comando netsh
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Accedi al server all'indirizzo http://example.app

Note:
- Questi comandi / modifiche ai file devono essere eseguiti con diritti di amministratore

- netsh portproxy necessita delle librerie ipv6 anche solo per usare v4tov4, in genere saranno incluse anche di default, altrimenti installale usando il seguente comando:netsh interface ipv6 install


Puoi vedere la voce che hai aggiunto con il comando:

netsh interface portproxy show v4tov4

È possibile rimuovere la voce con il seguente comando:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Collegamenti alle risorse:

Nota: questa risposta è una duplicazione della mia risposta discussa in questa domanda / risposta simile su stackoverflow.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.