Bagaimana saya bisa menentukan IP dan port untuk nama host di file host Windows?

18

Saya ingin menentukan nama host dengan dua port berbeda di hostsfile Windows .

Apakah ada cara untuk melakukannya? Atau tidak diizinkan oleh Windows sendiri?

Saya telah membuang waktu untuk mencari solusi selama 8 jam terakhir.

Apakah mungkin untuk menentukan port di file host hosts,? Misalnya: 127.0.0.1:80dan127.0.0.1:9211

Peter Mortensen
sumber
1
File HOSTS hanya mengaitkan nama dengan alamat IP, bukan IP + port. Namun, periksa superuser.com, dengan menjelaskan lebih banyak hal spesifik dari apa yang Anda coba lakukan (apakah ini untuk server web, dll.) Karena ada banyak cara untuk mencapai pemetaan jenis ini, tetapi selalu bergantung pada spesifik di tangan.
Anda memerlukan NGNIX atau Apache HTTP server sebagai server proxy untuk meneruskan permintaan http ke aplikasi yang sesuai -> yang mendengarkan port tertentu
Musa

Jawaban:

18

Cukup gunakan alamat IP tanpa port. Contoh:

192.168.2.50  example.com

Kemudian, untuk mengakses 192.168.2.50-5555 dari browser Anda (atau program lain):

http://example.com:5555/

Itu hosts file dapat ditemukan di:

Linux /etc/hosts

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

devi
sumber
Akan sangat membantu untuk menambahkan path dan nama file yang akan diedit.
nyedidikeke
@nyedidikeke terima kasih atas komentarnya, saya perbaiki ini
devi
1
Bisakah Anda memperbarui dengan alasan TIDAK menentukan nomor port saat mengedit file di C:\Windows\System32\drivers\etc\hosts?
nyedidikeke
Itu tercakup dalam jawaban lain.
Scott
17

Anda tidak dapat mengaitkan nomor port dengan nama host yang dipetakan ke IP dalam file host. Anda dapat mencapai ini dengan Fiddler melalui FiddlerScript: 

if (oSession.HostnameIs("somesite.com")){
    oSession.bypassGateway = true;
    oSession["x-overrideHost"] = "1.2.3.4:8080";
}
John T
sumber
7
Saran yang bagus untuk pengguna teknologi. Hanya untuk memperjelas, 1) Pertama instal Fiddler 2) Kemudian buka dan pergi ke Menu Aturan dan pilih opsi Kustomisasi Aturan (atau tekan Ctrl + R pada windows). Ini akan membuka file JS di notepad. 3) Temukan fungsi statis OnBeforeRequest dan rekatkan skrip yang disarankan oleh @John di dalam tubuhnya. HostNameIs juga tidak akan berfungsi, itu harus HostnameIs. Semoga ini membantu.
Riz
Apakah Anda mengetahui adanya alternatif sumber terbuka (james, owasp zap, atau lainnya) yang dapat digunakan untuk efek yang sama?
Marc.2377
5
  • The hostsfile untuk resolusi nama host hanya
  • The Browser , dengan tidak adanya langsung menentukan port: yaitu <hostname>:<port>, default port80

Skenario Masalah Khas

  1. aplikasi biasanya mengatur server mereka ke alamat ip default yang sama 127.0.0.1alias localhost (didefinisikan dalam file host) .
  2. untuk menghindari tabrakan antara kemungkinan server lain yang ada / berjalan, aplikasi biasanya memungkinkan Anda untuk mengubah port, tetapi bukan alamat ip.

    2a. Jika Anda bisa mengubah alamat IP server ke yang lain di ruang alamat loopback yang dicadangkan 127.0.0.0/8 , maka Anda mungkin tidak akan mencoba untuk mengatur port di file host.

Solusi yang mungkin

Anda dapat mengatasi ini menggunakan alat Jaringan yang disertakan Windowsnetsh sebagai proxy port.


Gambaran

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

Tindakan

  • Mulai server Anda localhost:8081
  • Tambahkan "DNS lokal" di file host sebagai baris baru
    • 127.65.43.21 example.app
      • Setiap alamat gratis di jaringan 127.0.0.0/8dapat digunakan.
      • Catatan: Saya berasumsi127.65.43.21:80tidak ditempati oleh layanan lain.
      • Anda bisa memeriksanya netstat -a -n -p TCP | grep "LISTENING"
  • tambahkan konfigurasi jaringan berikut dengan utilitas perintah netsh
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Akses server di http://example.app

Catatan:
- Perintah / modifikasi file ini perlu dijalankan dengan hak Admin

- netsh portproxy membutuhkan pustaka ipv6 bahkan hanya untuk menggunakan v4tov4, biasanya mereka juga akan disertakan secara default, jika tidak menginstalnya menggunakan perintah berikut:netsh interface ipv6 install


Anda dapat melihat entri yang telah Anda tambahkan dengan perintah:

netsh interface portproxy show v4tov4

Anda dapat menghapus entri dengan perintah berikut:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Tautan ke Sumber Daya:

Catatan: jawaban ini merupakan duplikat dari jawaban saya yang dibahas dalam pertanyaan / jawaban serupa ini di stackoverflow.

Pau Coma Ramirez
sumber