Windows hosts dosyasında bir ana bilgisayar adı için IP ve bağlantı noktalarını nasıl belirtebilirim?


18

Windows hostsdosyasında iki farklı bağlantı noktasına sahip ana bilgisayar adları belirtmek istiyorum .

Bunu yapmanın bir yolu var mı? Yoksa Windows'un kendisi tarafından izin verilmiyor mu?

Son 8 saattir çözüm aramak için zamanımı boşa harcıyorum.

Ana makine dosyasında bağlantı noktaları belirtmek mümkün mü hosts? Örn: 127.0.0.1:80ve127.0.0.1:9211


1
HOSTS dosyası, adları IP'ler ile değil, yalnızca IP adresleriyle ilişkilendirir. Bununla birlikte, bu tür bir eşleme elde etmenin birçok yolu olduğundan, ancak her zaman spesifikasyonlara bağlı olarak, yapmaya çalıştığınız şeyin (web sunucusu için bu vb.) Daha fazla ayrıntısını açıklayarak superuser.com'u kontrol edin. elde.

Http isteklerini uygun uygulamaya iletmek için proxy sunucusu olarak NGNIX veya Apache HTTP sunucusuna ihtiyacınız vardır -> belirli bağlantı noktasını dinler
Musa

Yanıtlar:


18

IP adreslerini bağlantı noktası olmadan kullanın. Misal:

192.168.2.50  example.com

Ardından, tarayıcınızdan (veya başka bir programdan) 192.168.2.50:5555'e erişmek için:

http://example.com:5555/

hostsDosya bulunabilir:

Linux /etc/hosts

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


Düzenlenecek dosyanın hem yolunu hem de adını eklemek yararlı olacaktır .
nyedidikeke

@nyedidikeke yorum için teşekkürler, bu düzeltildi
devi

1
Dosyayı adresinde düzenlerken bağlantı noktası numarasını belirtmeme nedeninizle güncelleme yapabilir misiniz C:\Windows\System32\drivers\etc\hosts?
nyedidikeke

Bu diğer cevaplarda kapsanmıştır.
Scott

17

Bir bağlantı noktası numarasını hosts dosyasındaki IP ile eşlenen bir ana makine adıyla ilişkilendiremezsiniz. FiddlerScript'i kullanarak bunu Fiddler ile yapabilirsiniz: 

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

7
Teknoloji kullanıcıları için güzel bir öneri. Sadece açıklığa kavuşturmak için, 1) Önce Fiddler 2'yi yükleyin) Sonra açın ve Kurallar Menüsüne gidin ve Kuralları Özelleştir seçeneğini seçin (veya pencerelerde Ctrl + R tuşlarına basın). Bu bir JS dosyasını not defterinde açar. 3) OnBeforeRequest statik fonksiyonunu bulun ve @John tarafından önerilen komut dosyasını vücuduna yapıştırın. Ayrıca HostNameIs çalışmaz, HostnameIs olmalıdır. Bu yardımcı olur umarım.
Riz

Aynı etki için kullanılabilecek herhangi bir açık kaynak alternatifinin (james, owasp zap veya diğer) farkında mısınız?
Marc.2377

5
  • hostsDosya ana bilgisayar adı çözümlemesi içindir
  • Tarayıcı , direkt olarak belirten bağlantı yokluğunda: örneğin <hostname>:<port>, varsayılan noktasına80

Tipik Sorun Senaryosu

  1. uygulamalar genellikle sunucularını aynı varsayılan ip adresine (anasistem dosyasında tanımlanır)127.0.0.1 ayarlarlar .localhost
  2. diğer varolan / çalışan sunucular arasında çakışmayı önlemek için, uygulama genellikle bağlantı noktasını değiştirmenize izin verir, ancak ip adresini değiştirmez.

    2a. Eğer siz de başkasına sunucularının IP adresini değiştirebilir geri döngü saklıdır adres alanı 127.0.0.0/8 , sonra muhtemelen ana dosyasında set limanlara çalışmadan olmaz.

Olası çözüm

Windows dahil olan Ağ aracını netshbağlantı noktası proxy'si olarak kullanarak bu sorunu çözebilirsiniz .


genel bakış

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

Hareketler

  • Sunucunuzu açın localhost:8081
  • Hosts dosyasına "yerel DNS" yi yeni bir satır olarak ekleyin
    • 127.65.43.21 example.app
      • Ağdaki herhangi bir boş adres 127.0.0.0/8kullanılabilir.
      • Not:127.65.43.21:80 Başka bir servis tarafından işgal edilmediğinivarsayıyorum.
      • İle kontrol edebilirsiniz netstat -a -n -p TCP | grep "LISTENING"
  • netsh komut yardımcı programı ile aşağıdaki ağ yapılandırmasını ekleyin
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Sunucuya şuradan erişin: http://example.app

Notlar:
- Bu komutların / dosya değişikliklerinin Yönetici haklarıyla yürütülmesi gerekir

- netsh portproxy, yalnızca v4tov4'ü kullanmak için bile ipv6 kitaplıklarına ihtiyaç duyar, genellikle varsayılan olarak dahil edilirler, aksi takdirde aşağıdaki komutu kullanarak yükleyin:netsh interface ipv6 install


Sen edebilirsiniz girişine bakın size komutla ekledik:

netsh interface portproxy show v4tov4

Sen edebilirsiniz girişi kaldırmak şu komutla:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Kaynaklara Bağlantılar:

Not: Bu cevap stackoverflow bu benzer soru / cevap tartışılan cevabımın bir kopyasıdır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.