मैं Windows होस्ट्स फ़ाइल में होस्टनाम के लिए आईपी और पोर्ट कैसे निर्दिष्ट कर सकता हूं?


18

मैं विंडोज hostsफ़ाइल में दो अलग-अलग बंदरगाहों के साथ होस्ट नाम निर्दिष्ट करना चाहता हूं ।

क्या इसे करने का कोई तरीका है? या यह विंडोज द्वारा ही अनुमति नहीं है?

मैं पिछले 8 घंटों से समाधान की तलाश में अपना समय बर्बाद कर रहा हूं।

क्या होस्ट फ़ाइल में पोर्ट निर्दिष्ट करना संभव है hosts,? जैसे: 127.0.0.1:80और127.0.0.1:9211


1
HOSTS फ़ाइल केवल IP पते के साथ नामों को जोड़ती है, न कि IPs + port (s)। हालांकि, आप क्या कर रहे हैं (वेब ​​सर्वर आदि के लिए यह है) आदि की अधिक बारीकियों के बारे में अधिक बताकर superuser.com देखें, क्योंकि इस प्रकार की मैपिंग को प्राप्त करने के कई तरीके हैं, लेकिन हमेशा बारीकियों के आधार पर उपलब्ध।

उचित अनुरोध के लिए http अनुरोधों को अग्रेषित करने के लिए आपको NGNIX या Apache HTTP सर्वर को प्रॉक्सी सर्वर की आवश्यकता है -> जो विशेष पोर्ट को सुनता है
मूसा

जवाबों:


17

आप होस्ट फ़ाइल में होस्ट किए गए आईपी के लिए एक होस्टनाम के साथ एक पोर्ट नंबर नहीं जोड़ सकते हैं। आप इसे Fiddler के साथ प्राप्त कर सकते हैं, हालांकि FiddlerScript का उपयोग करके: 

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

7
टेक उपयोगकर्ताओं के लिए अच्छा सुझाव। बस स्पष्ट करने के लिए, 1) पहले फिडलर 2 स्थापित करें) फिर इसे खोलें और नियम मेनू पर जाएं और अनुकूलित नियम विकल्प चुनें (या विंडोज़ पर Ctrl + R दबाएं)। यह नोटपैड में एक जेएस फाइल खोलेगा। 3) स्थैतिक समारोह खोजें OnBeforeRequest और उसके शरीर के अंदर @ जॉन द्वारा सुझाई गई स्क्रिप्ट चिपकाएँ। इसके अलावा HostNameIs काम नहीं करेगा, यह HostnameIs होना चाहिए। उम्मीद है की यह मदद करेगा।
रिज

क्या आप किसी भी ओपन सोर्स विकल्प (james, owasp zap, या अन्य) से अवगत हैं, जिनका उपयोग उसी प्रभाव के लिए किया जा सकता है?
Marc.2377

17

बस बंदरगाहों के बिना आईपी पते का उपयोग करें। उदाहरण:

192.168.2.50  example.com

फिर, अपने ब्राउज़र (या अन्य प्रोग्राम) से 192.168.2.50:5555 तक पहुँचने के लिए:

http://example.com:5555/

hostsफ़ाइल में पाया जा सकता:

लिनक्स /etc/hosts

विंडोज :C:\Windows\System32\drivers\etc\hosts


यह संपादित करने के लिए पथ और फ़ाइल का नाम दोनों को जोड़ने में मददगार होगा ।
nyedidikeke

@nyedidikeke टिप्पणी के लिए धन्यवाद, मैंने यह तय किया
devi

1
क्या आप संभवतः फ़ाइल को संपादित करते समय पोर्ट संख्या को निर्दिष्ट नहीं करने के कारण के साथ अपडेट कर सकते हैं C:\Windows\System32\drivers\etc\hosts?
nyedidikeke 19

वह अन्य उत्तरों में शामिल है।
स्कॉट

5
  • hostsफ़ाइल होस्ट नाम संकल्प के लिए ही है
  • ब्राउज़र , बंदरगाह सीधे निर्दिष्ट करने के अभाव में: यानी <hostname>:<port>, चूक बंदरगाह के लिए80

विशिष्ट समस्या परिदृश्य

  1. एप्लिकेशन आमतौर पर अपने सर्वरों को एक ही डिफ़ॉल्ट आईपी एड्रेस 127.0.0.1उर्फ localhost (होस्ट्स फ़ाइल में परिभाषित) में सेट करते हैं
  2. संभवतः अन्य मौजूदा / चल रहे सर्वरों के बीच टकराव से बचने के लिए, एप्लिकेशन आमतौर पर आपको पोर्ट बदलने की अनुमति देता है, लेकिन आईपी पते की नहीं।

    2 ए। यदि आप सर्वर आईपी पते को लूपबैक आरक्षित पता स्थान में दूसरे में बदल सकते हैं 127.0.0.0/8, तो आप संभवतः होस्ट्स फ़ाइल में पोर्ट सेट करने का प्रयास नहीं करेंगे।

संभावित समाधान

आप पोर्ट प्रॉक्‍सी के रूप में विंडोज शामिल नेटवर्किंग टूल का उपयोग करके इसके आसपास काम कर सकते हैं netsh


अवलोकन

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

क्रिया

  • अपना सर्वर चालू करें localhost:8081
  • मेजबानों फ़ाइल में "स्थानीय डीएनएस" को एक नई लाइन के रूप में जोड़ें
    • 127.65.43.21 example.app
      • नेटवर्क में किसी भी मुफ्त पते का 127.0.0.0/8उपयोग किया जा सकता है।
      • नोट: मैं यह मान रहा हूं कि127.65.43.21:80किसी अन्य सेवा द्वारा कब्जा नहीं किया गया है।
      • आप के साथ जाँच कर सकते हैं netstat -a -n -p TCP | grep "LISTENING"
  • netsh कमांड उपयोगिता के साथ निम्नलिखित नेटवर्क कॉन्फ़िगरेशन जोड़ें
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • सर्वर पर पहुँचें http://example.app

नोट्स:
- इन कमांड / फ़ाइल संशोधनों को व्यवस्थापक अधिकारों के साथ निष्पादित करने की आवश्यकता है

- netsh portproxy IPv6 पुस्तकालयों की जरूरत के लिए निम्न आदेश का उपयोग कर उन्हें स्थापित करते हैं, v4tov4 उपयोग करने के लिए भी केवल आम तौर पर वे भी डिफ़ॉल्ट रूप से शामिल किया जाएगा, अन्यथा:netsh interface ipv6 install


कमांड के साथ आपके द्वारा जोड़ी गई प्रविष्टि देख सकते हैं :

netsh interface portproxy show v4tov4

आप निम्न आदेश के साथ प्रविष्टि को हटा सकते हैं :

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


संसाधनों के लिए लिंक:

नोट: यह उत्तर स्टैकओवरफ़्लो पर इसी तरह के प्रश्न / उत्तर में चर्चा किए गए मेरे उत्तर का दोहराव है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.