ฉันจะทำให้ IIS ทำงานได้และเข้าถึงได้จากภายนอกเครือข่ายของฉันที่ด้านหลังเราเตอร์หรือไม่ [ปิด]


9

เครื่องของฉันใช้ Windows 7 Ultimate นี่คือสิ่งที่ฉันได้ทำ (สำเร็จ) จนถึงตอนนี้:

  1. ติดตั้ง IIS 7.5 พร้อม PHP ผ่าน FastCGI
  2. มันทำงานได้! เมื่อฉันไปที่http: //localhost/index.phpสคริปต์ PHP ของฉันจะทำงานได้ดี
  3. Ran ipconfig เพื่อค้นหาว่าที่อยู่ IP ในพื้นที่ของฉันคือ 192.168.1.102 ฉันยืนยันว่าhttp://192.168.1.102/index.phpทำงานเหมือนกับที่อยู่ localhost ด้านบน
  4. เข้าสู่การบริหารเราเตอร์ของฉัน (ฉันมี Linksys WRT54G2) และตั้งค่าการส่งต่อพอร์ตบนพอร์ต 80 ถึง 192.168.1.102 ตอนนี้พอร์ต 80 กำลังส่งต่อไปยังเครื่องของฉัน
  5. ตั้งค่ากฎขาเข้าใน Windows Firewall เพื่ออนุญาตกิจกรรมทั้งหมดในพอร์ต 80
  6. ค้นหาว่าที่อยู่ IP ภายนอกของฉันคืออะไรจาก Google มาเรียกมันว่า XXX.XX.XX.XX

อย่างไรก็ตามเมื่อฉันพยายามไปที่http: //XXX.XX.XX.XX/index.phpจากเครื่องของฉันหรือจากคอมพิวเตอร์ที่อยู่ไกลและไม่ได้อยู่ในเครือข่ายของฉันไม่ว่าด้วยวิธีใด ... ฉันไม่ได้อะไรเลย มันพยายามเชื่อมต่อชั่วขณะ (ไม่สำเร็จ) แต่ในที่สุดก็ยอมแพ้

นี่คือสิ่งที่ฉันสงสัย:

  1. ฉันพลาดอะไรไป ฉันลืม / มองข้ามอะไร ฉันจะทำให้มันใช้งานได้และเข้าถึงได้จากเครือข่ายท้องถิ่นของฉันเอง
  2. สมมติว่าฉันทำงานนี้ได้ฉันจะใช้พอร์ตอื่นที่ไม่ใช่พอร์ต 80 ได้อย่างไร ฉันต้องทำการเปลี่ยนแปลงอะไรบ้าง (เช่น IIS, Windows Firewall, การจัดการเราเตอร์และอื่น ๆ ) เพื่อให้เป็นไปได้

ขอบคุณมากล่วงหน้า!


1
ดูว่าพอร์ตของคุณถูกส่งต่อสำเร็จที่นี่yougetsignal.com/tools/open-ports
smohamed

คำตอบ:


5

ดูเหมือนว่าปัญหา HTTP.SYS ที่คุณมี

ด้านล่างนี้เป็นข้อความที่ตัดตอนมาจากบล็อกของ Scott Hanselmanที่อธิบายวิธีเปิดเผย IISExpress ภายนอก localhost โพสต์บล็อกนั้นมีความยาวมากกว่าซึ่งจะอธิบายถึงวิธีการโอนสาย SSL ทั้งหมด แต่ฉันเชื่อว่าคำสั่งที่ฉันโพสต์ด้านล่างซึ่งฉันดึงออกมาจากโพสต์ของเขาจะช่วยให้คุณแก้ไขปัญหาที่คุณมี

ก่อนอื่นเราต้องบอก HTTP.SYS ในระดับเคอร์เนลว่ามันใช้ได้หรือไม่ที่จะให้ทุกคนพูดคุยกับ URL นี้โดยการ "จอง Url" จากพรอมต์คำสั่งของผู้ดูแลระบบ:

netsh http add urlacl url=http://<LocalComputerName>:80/ user=everyone

ต่อไปเนื่องจากฉันต้องการที่จะสามารถพูดคุยกับ IIS Express จากภายนอก (ผู้คนในเครือข่ายของฉัน ฯลฯ ไม่ใช่เฉพาะ localhost) จากนั้นฉันต้องอนุญาต IIS Express ผ่านไฟร์วอลล์ Windows ฉันสามารถทำกราฟิกจาก Windows หรือพิมพ์:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

คุณอาจไม่ต้องการคำสั่งสุดท้ายเนื่องจากคุณระบุว่าคุณได้สร้างกฎไฟร์วอลล์แล้ว


ฉันรันคำสั่ง netsh แรกเพื่อเพิ่มการจอง URL แต่สิ่งนี้ไม่ได้ทำอะไรเลย (ยังทำงานได้ในเครื่อง แต่ไม่ใช่นอกเครือข่ายของฉัน) ความคิดอื่น ๆ ?
soapergem

สิ่งนี้ดูไม่ถูกต้อง คุณไม่จำเป็นต้องโคลนด้วย http.sys เพื่อรับอินสแตนซ์ IIS 7.5 จริง (ไม่ใช่ IIS Express) ส่งต่อพอร์ต
TristanK

2
  1. (การเข้าถึงจากนอกเครือข่ายของคุณ) ISP ที่อยู่อาศัยจำนวนมาก (และ ISP ธุรกิจบางแห่ง) จะบล็อกทราฟฟิกขาเข้าบนพอร์ตบริการบางพอร์ตเช่นพอร์ต 80 หรือ 25 โดยทั่วไปจะเป็นการป้องกันไม่ให้คุณใช้บริการธุรกิจบนสายที่อยู่อาศัย ทางเลือกอื่นคือเรียกใช้บนพอร์ตอื่น (ดูด้านล่าง)

  2. (เข้าถึงจากภายในเครือข่ายของคุณ) สถานการณ์ที่คุณกำลังอธิบายเสียงเหมือนกิ๊บ NAT นี่คือสิ่งที่ดีระดับสูงภาพรวมของกิ๊บ NAT คุณจะต้องเพิ่มกฎ NAT ลงในเราเตอร์ของคุณเพื่อให้การรับส่งข้อมูลที่กำหนดไว้สำหรับ IP ภายนอกของคุณพอร์ต 80 ผ่านเราเตอร์ของคุณและไม่ได้โดยตรงจากโฮสต์ไปยังโฮสต์ภายในเครือข่ายของคุณ Caveat: เราเตอร์ของคุณอาจไม่สามารถทำได้

  3. เปลี่ยนการโยงพอร์ตใน IIS จากนั้นรีสตาร์ทเว็บไซต์


ฉันได้เพิ่มการเชื่อมโยงกับ IIS เพื่อให้ทำงานบนพอร์ต 8080 และอีกครั้งสิ่งนี้ทำงานได้ในเครื่อง ดังนั้น192.168.1.102:8080/index.phpจึงทำงาน ฉันได้เพิ่มกฎขาเข้าของ Windows Firewall สำหรับพอร์ต 8080 ด้วย แต่มันก็ยังไม่ทำงานนอกเครือข่ายของฉัน ฉันค้นหาการเพิ่มกฎ NAT ลงในเราเตอร์ Linksys WRT54G2 ของฉันและความช่วยเหลือที่ฉันพบทางออนไลน์กล่าวว่าสิ่งนี้จะเกี่ยวข้องกับการตั้งค่าตัวเลือก "พอร์ตทริกเกอร์" ฉันตั้งค่านี้ แต่ยัง ... ไม่มีลูกเต๋า ข้อเสนอแนะอื่น ๆ ?
soapergem

1
หากคุณสามารถเข้าถึงได้ภายใน Windows Firewall จะไม่ใช่ปัญหาของคุณ การเรียกพอร์ตไม่ใช่สิ่งที่คุณต้องการ คุณกำลังจะใช้การส่งต่อพอร์ต (หากเราเตอร์ของคุณรองรับ) ส่งต่อทราฟฟิกบนพอร์ต 8080 บนอินเตอร์เฟสภายนอกของเราเตอร์ของคุณไปยัง 192.168.1.102:8080
Joel E Salas

ฉันทำเช่นนั้นแล้ว (การส่งต่อพอร์ตทั้งบนพอร์ต 80 และ 8080) ก่อนที่ฉันจะถามคำถาม เห็นได้ชัดว่าฉันยังขาดอะไรบางอย่าง
soapergem

เราเตอร์มีกฎไฟร์วอลล์จริง ๆ (นอกเหนือจากกฎ NAT) ที่อาจบล็อกทราฟฟิกหรือไม่? หากเป็นไปได้ให้ตั้งค่ากล่องที่ใช้ pfSense เพื่อใช้เป็นเราเตอร์ของคุณเพื่อการตรวจแก้จุดบกพร่อง เราเตอร์ของคุณ (ซึ่งไม่ได้ออกแบบมาสำหรับการให้บริการโฮสต์) เป็นสาเหตุของความฉิบหายของคุณ
Joel E Salas

ดูเหมือนว่าคุณไม่ได้ทำอะไรผิดพลาดในระดับ IIS เพียงว่าเราเตอร์นั้นไม่ได้ใช้งานง่าย / ISP ของคุณปิดกั้นคุณ อาจเป็นไปได้ว่าคุณคิดว่า IP ของคุณเป็นแบบอ้อมคู่ ตรวจสอบแนวคิดของเราเตอร์ว่า IP ภายนอกคืออะไร
TristanK

0

ผมมีปัญหาเดียวกัน. Windows Firewall กำลังบล็อกการเข้าถึง ปิดและตรวจสอบอีกครั้ง ฉันเดาว่ามันจะทำงาน


2
โดยทั่วไปจะไม่ใช่วิธีที่ดีในการปิดไฟร์วอลล์
user9517

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