ฉันจะระบุ IP และพอร์ตสำหรับชื่อโฮสต์ในไฟล์โฮสต์ Windows ได้อย่างไร


18

ฉันต้องการระบุชื่อโฮสต์ด้วยสองพอร์ตที่ต่างกันในhostsไฟล์Windows

มีวิธีทำหรือไม่? หรือ Windows ไม่อนุญาตหรือไม่

ฉันเสียเวลาไปกับการหาทางออกในช่วง 8 ชั่วโมงที่ผ่านมา

เป็นไปได้หรือไม่ที่จะระบุพอร์ตในไฟล์โฮสต์hosts? เช่น: 127.0.0.1:80และ127.0.0.1:9211


1
ไฟล์ HOSTS จะเชื่อมโยงเฉพาะชื่อที่มีที่อยู่ IP ไม่ใช่ IP + พอร์ต ตรวจสอบ superuser.com อย่างไรโดยอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณพยายามทำ (นี่คือเว็บเซิร์ฟเวอร์ ฯลฯ ฯลฯ ) เนื่องจากมีหลายวิธีในการทำแผนที่ประเภทนี้ แต่ขึ้นอยู่กับเฉพาะ ที่มือ.

คุณต้องใช้เซิร์ฟเวอร์ NGNIX หรือ Apache HTTP เป็นพร็อกซีเซิร์ฟเวอร์สำหรับการส่งต่อคำร้องขอ http ไปยังแอปพลิเคชันที่เหมาะสม -> ซึ่งรับฟังพอร์ตเฉพาะ
Musa

คำตอบ:


18

เพียงใช้ที่อยู่ IP ที่ไม่มีพอร์ต ตัวอย่าง:

192.168.2.50  example.com

จากนั้นเพื่อเข้าถึง 192.168.2.50:5555 จากเบราว์เซอร์ของคุณ (หรือโปรแกรมอื่น ๆ ):

http://example.com:5555/

hostsไฟล์สามารถพบได้ที่:

ลินุกซ์ /etc/hosts

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


การเพิ่มทั้งพา ธและชื่อของไฟล์ที่จะแก้ไขจะเป็นประโยชน์
nyedidikeke

@nyedidikeke ขอบคุณสำหรับความคิดเห็นฉันแก้ไขสิ่งนี้
devi

1
คุณสามารถอัพเดตด้วยเหตุผลที่ไม่ระบุหมายเลขพอร์ตเมื่อแก้ไขไฟล์ที่C:\Windows\System32\drivers\etc\hosts?
nyedidikeke

ที่ครอบคลุมในคำตอบอื่น ๆ
สกอตต์

17

คุณไม่สามารถเชื่อมโยงหมายเลขพอร์ตกับชื่อโฮสต์ที่จับคู่กับ IP ในไฟล์โฮสต์ คุณสามารถทำสิ่งนี้ได้ด้วยFiddlerโดยใช้ FiddlerScript: 

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

7
ข้อเสนอแนะที่ดีสำหรับผู้ใช้เทคโนโลยี เพื่อชี้แจง 1) ติดตั้ง Fiddler ก่อน 2) จากนั้นเปิดและไปที่เมนูกฎและเลือกตัวเลือกกำหนดกฎเอง (หรือกด Ctrl + R บน windows) นี่จะเป็นการเปิดไฟล์ JS ในแผ่นจดบันทึก 3) ค้นหาฟังก์ชั่นคงที่ OnBeforeRequest และวางสคริปต์ที่แนะนำโดย @John ภายในร่างกายของมัน นอกจากนี้ชื่อโฮสต์จะไม่ทำงานก็ควรเป็นชื่อโฮสต์ หวังว่านี่จะช่วยได้
Riz

คุณรู้จักทางเลือกโอเพนซอร์ซ (james, owasp zap หรืออื่น ๆ ) ที่สามารถใช้กับเอฟเฟกต์เดียวกันได้หรือไม่?
Marc.2377

5
  • hostsไฟล์สำหรับการจำแนกชื่อโฮสต์เท่านั้น
  • เบราว์เซอร์ในกรณีที่ไม่มีการระบุโดยตรงพอร์ต: IE <hostname>:<port>, ค่าเริ่มต้นไปยังท่าเรือ80

สถานการณ์ปัญหาทั่วไป

  1. การใช้งานมักจะตั้งเซิร์ฟเวอร์ของพวกเขาไปยังที่อยู่ IP เริ่มต้นเดียวกัน127.0.0.1อาคา(ที่กำหนดไว้ในไฟล์โฮสต์)localhost
  2. เพื่อหลีกเลี่ยงการชนกันระหว่างเซิร์ฟเวอร์ที่มีอยู่ / ที่ใช้งานอยู่อื่น ๆ โดยทั่วไปแอปพลิเคชันจะอนุญาตให้คุณเปลี่ยนพอร์ต แต่ไม่ใช่ที่อยู่ IP

    2a หากคุณสามารถเปลี่ยนที่อยู่ ip ของเซิร์ฟเวอร์เป็นที่อยู่อื่นในพื้นที่ที่อยู่สำรองที่สำรองลูปแบ็คได้ 127.0.0.0/8คุณอาจจะไม่พยายามตั้งค่าพอร์ตในไฟล์โฮสต์

ทางออกที่เป็นไปได้

คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยใช้เครื่องมือWindows ที่มีระบบเครือข่าย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
  • เพิ่ม "local DNS" ในไฟล์โฮสต์เป็นบรรทัดใหม่
    • 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


ลิงค์ไปยังแหล่งข้อมูล:

หมายเหตุ: คำตอบนี้ซ้ำคำตอบของฉันกล่าวถึงในคำถาม / คำตอบที่คล้ายกันนี้ใน stackoverflow

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.