การส่งต่อพอร์ตไม่ทำงานใน DSL Router


3

ฉันกำลังใช้การเชื่อมต่อ BSNL BroadBand และมีเราเตอร์ DSL ที่ทำหน้าที่เป็นเกตเวย์เริ่มต้นสำหรับอุปกรณ์ไร้สายจำนวนมาก หนึ่งอุปกรณ์ดังกล่าวคือเซิร์ฟเวอร์ของฉัน ฉันซื้อ IP แบบคงที่สำหรับการเช่า เพื่อให้การรับส่งข้อมูลทั้งหมดไปยัง IP นั้นตรงไปยังเราเตอร์
แต่การส่งต่อคำขอจากเราเตอร์ไปยังเซิร์ฟเวอร์ของฉัน (ซึ่งเชื่อมต่อโดยใช้ wifi) ต้องมีการส่งต่อพอร์ต (ขอความช่วยเหลือจากที่นี่ ) การส่งต่อพอร์ตสำหรับเราเตอร์ DSL BSNL สามารถทำได้โดยไปที่VIRTUAL SERVERส่วนของNATส่วน มีฉันได้ส่งคำขอทั้งหมดที่พอร์ต 8080 (JBOSS ของฉันใช้พอร์ต 8080) 192.168.1.7ไปยังเซิร์ฟเวอร์ซึ่งมีที่อยู่
ฉันสามารถเชื่อมต่ออินเทอร์เน็ตจากเซิร์ฟเวอร์(192.168.1.7) อุปกรณ์ทั้งหมดที่เชื่อมต่อกับเราเตอร์ผ่าน wifi จะสามารถ ping ซึ่งกันและกัน แต่ปริมาณการใช้งานบนพอร์ต 8080 ไม่ได้ถูกนำไปยังเซิร์ฟเวอร์
อะไรคือเหตุผลที่เป็นไปได้สำหรับสิ่งนี้

หมายเหตุ

ผมสามารถเข้าถึงเซิร์ฟเวอร์เมื่อ URL http://192.168.1.7:8080/myappคำขอของฉันคือ แต่เมื่อ URL http://118.XXX.XXX.XXX:8080/myappของฉันคือ ฉันไม่สามารถเข้าถึงได้ 118.xxx.xxx.xxx เป็น ip สาธารณะของเราเตอร์

คำตอบ:


10

มันจะไม่ทำงานจากภายใน LAN ของคุณ มันจะทำงานจากส่วนที่เหลือของอินเทอร์เน็ต นี่คือเหตุผล:

  1. คุณพยายามเข้าถึงที่อยู่ IP สาธารณะของคุณจากเครื่อง LAN

  2. เครื่องจะเห็นว่าที่อยู่นั้นอยู่นอก LAN และส่งแพ็กเก็ตไปยังเราเตอร์

  3. เราเตอร์ NATs ปลายทางไปยังเครื่อง LAN แต่ที่อยู่ต้นทางไม่ได้รับการแก้ไข (ยังคงเป็นเครื่อง LAN ที่เป็นต้นกำเนิดคำขอ)

  4. เซิร์ฟเวอร์ของคุณได้รับการร้องขอและส่งการตอบสนองไปยังแหล่งที่มาของการเชื่อมต่อ (ยังคงเป็นเครื่อง LAN)

  5. เครื่อง LAN ได้รับการตอบสนองจากเซิร์ฟเวอร์ แต่คาดว่าจะได้รับการตอบสนองจากเราเตอร์ (เนื่องจากเชื่อมต่อกับที่อยู่ IP สาธารณะจะต้องได้รับการตอบสนองจากที่อยู่ IP สาธารณะไม่ใช่ที่อยู่ LAN ของเซิร์ฟเวอร์) เนื่องจากการตอบกลับมีที่อยู่ผิดแหล่งจึงไม่ได้รับการยอมรับ อุ่ย

การส่งต่อพอร์ต (เขียนที่อยู่ปลายทางใหม่) ใช้งานได้เฉพาะจากภายนอกสู่ภายในไม่ใช่จากภายในสู่ภายใน สำหรับสิ่งนั้นคุณต้องใช้กิ๊บ NAT ซึ่งจะเขียนที่อยู่ปลายทางเพิ่มเติมจากแหล่งที่มา


นี่คือสิ่งที่ฉันพยายามจะพูด แต่ไม่สามารถอยู่ด้วยกันได้อย่างถูกต้อง :) คำอธิบายที่ดี
The_aLiEn

1
@ David Schwartz: มันใช้งานได้! ฉันลองจากเครือข่ายอื่น ขอบคุณ :) ในสถานการณ์สมมติก่อนหน้านี้การเชื่อมต่อถูกยกเลิกระหว่างการจับมือ tcp หรือไม่ อีกหนึ่งข้อสงสัย - ในจุดที่ 3 คุณพูดว่า "เราเตอร์ NATs ปลายทางไปยังเครื่อง LAN แต่ที่อยู่ต้นทางนั้นไม่ได้รับการแก้ไข (ยังคงเป็นเครื่อง LAN ที่กำเนิดการร้องขอ)" เมื่อแพ็กเก็ตมาถึงเราเตอร์เราเตอร์จะไม่รับผิดชอบในการเปลี่ยนที่อยู่ต้นทางที่เลเยอร์สามเป็นที่อยู่ IP สาธารณะ (เนื่องจากนี่เป็นหน้าที่ของ NAT)
Ashwin

1
@Ashwin: 1) การจับมือ TCP จะไม่สมบูรณ์เนื่องจากเครื่องต้นทางจะไม่ได้รับคำตอบที่คาดหวัง 2) การส่งต่อพอร์ตไม่เกี่ยวข้องกับการเปลี่ยนที่อยู่ต้นทางเพียงปลายทาง เมื่อคุณพอร์ตส่งต่อไปยังเซิร์ฟเวอร์เซิร์ฟเวอร์ยังคงเห็นที่อยู่ IP ต้นทางดั้งเดิมที่ไม่ได้แก้ไขสำหรับการเชื่อมต่อที่ส่งต่อไปยังเซิร์ฟเวอร์
David Schwartz

@DavidSchwartz: ฉันคิดว่าฉันยังสับสนอยู่ ฉันพยายามเข้าถึง 74.125.236.165 (public ip ของ google) จากอุปกรณ์ใดอุปกรณ์หนึ่ง (ลืมเซิร์ฟเวอร์) ในอุปกรณ์นี้ในระหว่างการห่อหุ้มเลเยอร์ 3 IP ต้นทางคือ 192.168.1.5 สิ่งนี้จะถูกส่งต่อไปยังเราเตอร์ (ซึ่งเป็นเกตเวย์เริ่มต้น) เราเตอร์ต้องซ่อนที่อยู่ส่วนตัวนี้ ดังนั้นจึงทำหน้าที่เป็น NAT มันไม่เปลี่ยน ip ต้นทางนี้เป็น ip สาธารณะของเราเตอร์หรือไม่ (ซ่อนไอพีส่วนตัวหลายตัวไว้บนไอพีสาธารณะเดียว)
Ashwin

@Ashwin: ใช่แน่นอน แต่เรากำลังพูดถึงการส่งต่อพอร์ต (ภายในปลายทาง) ไม่ใช่การปลอมแปลง (ปลายทางภายนอก) การปลอมตัวเปลี่ยนแหล่งที่มา แต่ไม่ใช่ปลายทาง การส่งต่อพอร์ตเปลี่ยนปลายทางและไม่ใช่แหล่งที่มา
David Schwartz

3

เราเตอร์จำนวนมากไม่อนุญาตให้มีการเชื่อมต่อที่พวกเขาส่งต่อจากเครือข่ายท้องถิ่นไปยังพอร์ต WAN เพื่อย้อนกลับไปยัง LAN (NAT ลูปแบ็คหรือกิ๊บ) WAN IP นั้นไม่สามารถเข้าถึงได้จากภายในและคุณจะต้องใช้ที่อยู่ที่แตกต่างกันในการติดต่อเราเตอร์หรือเครื่องที่พอร์ตที่ถูกส่งต่อในกรณีของคุณ 192.168.1.7 คุณสามารถทดสอบพอร์ตไปข้างหน้าจากภายนอก กับเว็บเซิร์ฟเวอร์วิธีที่ง่ายที่สุดที่จะทำเช่นนี้อาจจะใช้พร็อกซี่เช่นhttp://hidemyass.com

หากคุณต้องการเข้าถึงเซิร์ฟเวอร์ผ่านชื่อโดเมนคุณจะพบปัญหาเดียวกัน เซิร์ฟเวอร์ DNS จะนำคุณไปยังที่อยู่ IP สาธารณะ โดยการแก้ไขไฟล์โฮสต์บนเครื่องท้องถิ่นคุณสามารถกำหนดให้ชี้ไปที่ IP โลคัลของเซิร์ฟเวอร์แทนและคุณจะสามารถใช้ที่อยู่เดียวกันได้ทุกที่


1
  1. ตรวจสอบว่าคุณสามารถเข้าถึง 8080 โดยตรง (โดยใช้ 192.168 IP ของคุณ)
  2. จากนั้นในเราเตอร์ของคุณส่งต่อ 8080 ไปยังเซิร์ฟเวอร์ jboss 8080 ของคุณในบางครั้งเราเตอร์เองอาจกำลังฟังบน 8080 ในกรณีนี้เปลี่ยนพอร์ตของคุณไม่

ฉันสามารถเข้าถึง 8080 ได้โดยตรงโดยใช้ 192.168.1.7 (ip ของเซิร์ฟเวอร์ของฉัน)
Ashwin

1

เราเตอร์ที่ซื้อจาก BSNL ส่วนใหญ่ปิดใช้งานสิ่งอำนวยความสะดวกการส่งต่อพอร์ต นั่นคือแม้ว่าคุณจะสามารถเห็นหน้าการส่งต่อพอร์ตและสามารถตั้งค่าได้การล็อกภายในจะบล็อกพอร์ต

ซื้อเราเตอร์ของบุคคลที่สามเช่น netgear, linksys .. เพื่อให้คุณสามารถใช้การส่งต่อพอร์ต


1

2)

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

หากคุณต้องการทดสอบเว็บไซต์ผ่าน IP ภายนอกคุณสามารถใช้พรอกซี ฉันชอบ Anonymouse แต่คุณสามารถเลือกจากพวกเขานับพันได้ที่ proxy.org

ดู NAT Loopback บนเราเตอร์ของฉันเป็นปัญหาด้านความปลอดภัยหรือไม่ สำหรับการถกเถียงว่าการค้นหา NAT นั้นปลอดภัยหรือไม่


0

อาจมีปัญหาไฟร์วอลล์บางอย่าง เราเตอร์ DSL บางตัวอาจมีไฟร์วอลล์อยู่ แม้จะมีการส่งต่อพอร์ตบางครั้งคุณต้องสร้างกฎหรือปิดการใช้งานไฟร์วอลล์ภายในอย่างสมบูรณ์

ตรวจสอบไฟร์วอลล์ของเซิร์ฟเวอร์ด้วย ข้อเสนอแนะอันดับที่ 1 ของ Srin ก็เช่นกัน


ดูความคิดเห็นของฉันสำหรับคำตอบแรกของ Srin
Ashwin

สิ่งนี้เกี่ยวข้องกับการกำหนดเส้นทางแล้ว คุณไม่สามารถ NAT 118.x.x.x trafficจากอินเตอร์เฟส LAN http://118.XXX.XXX.XXX:8080/myappทราฟฟิกต้องมาจากอินเตอร์เฟสของเราเตอร์เพื่อที่จะ NAT และส่งต่อไปยังเซิร์ฟเวอร์ของคุณ คุณได้ทดสอบเซิร์ฟเวอร์ของคุณจากภายนอกหรือไม่
The_aLiEn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.