ในการตอบคำถามนี้คุณจำเป็นต้องรู้ว่าทราฟฟิกเครือข่ายทำงานระหว่างไคลเอนต์และเซิร์ฟเวอร์อย่างไร
เมื่อคุณมีโปรแกรมไคลเอนต์เซิร์ฟเวอร์เซิร์ฟเวอร์จะตั้งค่าพอร์ตการรับฟัง
ไคลเอนต์ใด ๆ สามารถเชื่อมต่อกับพอร์ตฟังนี้และขอให้เชื่อมต่อ เนื่องจากคุณสามารถทำการเชื่อมต่อพอร์ตเดียวได้เพียงครั้งเดียวทันทีที่เซิร์ฟเวอร์ยอมรับการเชื่อมต่อ (ไปในเสี้ยววินาที) เซิร์ฟเวอร์จะเริ่มการเชื่อมต่อใหม่กลับไปยังไคลเอ็นต์ ) เพื่อทำการถ่ายโอนข้อมูลจริง พอร์ตเริ่มต้นจากไคลเอนต์ไปยังเซิร์ฟเวอร์จะถูกดร็อปเพื่อเพิ่มพอร์ตการฟัง
เนื่องจากเซิร์ฟเวอร์อยู่หลัง NAT (เราเตอร์) เมื่อไคลเอนต์เชื่อมต่อกับ IP สาธารณะด้วยพอร์ตหมายเลขเราเตอร์จึงตอบไม่ใช่เซิร์ฟเวอร์ที่อยู่ด้านหลัง เนื่องจากเราเตอร์ไม่มีซอฟต์แวร์ของเซิร์ฟเวอร์ (ในกรณีของคุณเป็นเว็บเซิร์ฟเวอร์) จึงไม่รู้วิธีตอบและการเชื่อมต่อล้มเหลวเนื่องจากเราเตอร์เพียงเพิกเฉยต่อคำขอ
คุณจะบอกเราเตอร์ว่าต้องทำอย่างไรเมื่อมีคนพยายามเชื่อมต่อกับไอพีสาธารณะด้วยพอร์ตที่ระบุ ในกรณีของคุณกฎบอกว่า: ถ่ายทอดการจราจรไปยังราสเบอร์รี่ปี่
ทีนี้อย่างที่คุณเห็นสิ่งเดียวที่เกิดขึ้นคือเราเตอร์เรียนรู้ว่าจะทำอย่างไรเมื่อมีการร้องขอไปยังไอพีและพอร์ตสาธารณะ พีซีภายในเครือข่ายไม่ได้ร้องขอการเข้าถึงจากไอพีสาธารณะ แต่ใช้ไอพีส่วนตัวแทน นอกจากนี้เราเตอร์ยังอนุญาตให้ตั้งค่าพอร์ตสาธารณะที่รับฟัง ดังนั้นหากคุณมี 3 ราสเบอร์รี่ pi ของแต่ละคนมีที่อยู่ IP ของตัวเองคุณสามารถตั้งค่ากฎ 3:
- port 8081 to pi1, port 80
- port 8082 to pi2, port 80
- port 8083 to pi3, port 80
จากนั้นไคลเอนต์จะเชื่อมต่อกับไอพีสาธารณะของคุณต่อท้าย: 8081 เพื่อเปิดพอร์ตนั้นและยังคงใช้งานได้
ไม่มีการเชื่อมโยงทางกายภาพที่ถูกวางไว้ดังนั้นพอร์ตทั้งหมดจึงยังคงอยู่เหมือนเดิม เป็นเพียงแค่ว่าเราเตอร์เข้าใจสิ่งที่จะทำอย่างไรกับพอร์ตในขณะนี้และที่การจราจรควรมุ่ง
โปรดทราบว่าเราเตอร์บางตัวอาจไม่สามารถรับส่งข้อมูลย้อนกลับได้ซึ่งหมายถึงพวกเขาคาดหวังว่าการเชื่อมต่อใน NAT ด้วยที่อยู่ IP สาธารณะจะมาจากพอร์ต WAN ไม่ใช่พอร์ต LAN ใด ๆ ดังนั้นจึงไม่สามารถทดสอบกฎการส่งต่อ บนเราเตอร์ของคุณจากภายในเครือข่าย
incoming
พอร์ตไปยังเครือข่ายท้องถิ่นมันจะไม่ส่งผลกระทบต่อเครือข่ายภายในไม่ว่าในทางใด