เกิดอะไรขึ้นกับคอมพิวเตอร์เครื่องอื่นในเครือข่ายเมื่อคุณส่งต่อพอร์ต


1

ฉันแค่อ่านเกี่ยวกับการส่งต่อพอร์ตเมื่อคิดถึงการใช้ RaspberryPi เพื่อโฮสต์เว็บเซิร์ฟเวอร์

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


คุณควรจะสบายดีไม่ต้องกังวลคุณส่งต่อ incoming พอร์ตไปยังเครือข่ายท้องถิ่นมันจะไม่ส่งผลกระทบต่อเครือข่ายภายในไม่ว่าในทางใด
Alex

คำตอบ:


1

ในการตอบคำถามนี้คุณจำเป็นต้องรู้ว่าทราฟฟิกเครือข่ายทำงานระหว่างไคลเอนต์และเซิร์ฟเวอร์อย่างไร

เมื่อคุณมีโปรแกรมไคลเอนต์เซิร์ฟเวอร์เซิร์ฟเวอร์จะตั้งค่าพอร์ตการรับฟัง

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

เนื่องจากเซิร์ฟเวอร์อยู่หลัง 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 ใด ๆ ดังนั้นจึงไม่สามารถทดสอบกฎการส่งต่อ บนเราเตอร์ของคุณจากภายในเครือข่าย


ฉันได้อ่านแล้วว่าพอร์ต 80 นั้นใช้งานตามปกติสำหรับ HTTP และฉันเห็นว่าคุณใช้มันในตัวอย่างของคุณ ควรเป็นพอร์ต 80 บนเราเตอร์หรือเราเตอร์ควรใช้พอร์ตอื่นซึ่งส่งต่อไปยังพอร์ต 80 บน Pi หรือไม่
Hadrian Hughes

ขึ้นอยู่กับว่า หากไม่มีเซิร์ฟเวอร์อื่นในเครือข่ายของคุณที่คุณต้องการใช้พอร์ต 80 จริง ๆ คุณอาจจะต้องการใช้พอร์ต 80 หากไม่ใช้และคุณเริ่มใช้ชื่อโดเมนในอนาคตเช่น example.com และคุณใช้ พอร์ตสาธารณะของการพูด .... 12345 แล้วคุณจะต้องไป example.com:12345 เพื่อเข้าถึงเว็บไซต์บนราสเบอร์รี่ปี่ของคุณ นี่อาจเป็นทั้งคุณลักษณะด้านความปลอดภัยและอาจเป็นเรื่องที่น่ารำคาญ ขึ้นอยู่กับสิ่งที่คุณต้องการ
LPChip

ถูก แต่ถ้ามีเพียงเซิร์ฟเวอร์เดียวในเครือข่ายและฉันใช้พอร์ต 80 บน Pi และเราเตอร์เบราว์เซอร์ของผู้ใช้จะใช้พอร์ต 80 เมื่อพวกเขาพิมพ์ example.com โดยไม่ระบุพอร์ตหรือไม่
Hadrian Hughes

อ๋อ กฎง่ายๆเมื่อไม่มีการระบุพอร์ตเกือบทุกครั้งที่พอร์ตเริ่มต้นจะถูกลอง 80 คือ http, 21 คือ ftp, ฯลฯ
LPChip

เจ๋งขอบคุณ สิ่งที่เป็นประโยชน์มาก
Hadrian Hughes

0

ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับหัวข้อเครือข่าย แต่พอร์ต 80 เป็นเพียงพอร์ตที่เซิร์ฟเวอร์กำลังรับฟัง ไคลเอนต์ฟังพอร์ตแบบสุ่มด้านบน 1024 สำหรับการตอบสนองของเซิร์ฟเวอร์

ตัวอย่าง:

You --> asdf.com:Port 80  
asdf.com --> you:Port 12345 (response) 

ดังนั้นการส่งพอร์ต 80 ไปที่ราสเบอร์รี่จะไม่ส่งผลกระทบต่อพีซีเครื่องอื่นในเครือข่ายเมื่อใช้กฎเกณฑ์เครือข่าย

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

จากภายในเครือข่ายภายในบ้านของคุณเซิร์ฟเวอร์ทั้งหมดยังคงสามารถเข้าถึงได้ผ่านทางที่อยู่ IP ในพื้นที่

แน่นอนว่าสิ่งนี้ใช้ได้กับพอร์ตทั้งหมดไม่ใช่แค่ 80


0

ดังนั้นเมื่อคุณตั้งค่าเราเตอร์ที่บ้านเพื่อส่งต่อพอร์ต 80 ไปยัง Raspberry Pi ของคุณคุณจะส่งต่อพอร์ต 80 ของ สาธารณะ ที่อยู่ IP. ที่อยู่นี้ถูกกำหนดให้กับเราเตอร์ของคุณจาก ISP ของคุณ ไม่มีใครอยู่ข้างนอก (อินเทอร์เน็ต) สามารถมองเห็นอะไรอยู่ข้างหลังเราเตอร์ของคุณ (LAN ภายในของคุณ) ดังนั้นเมื่อมีการร้องขอจากหน้าเว็บภายนอกเราเตอร์จะส่งต่อไปยัง Raspberry Pi ของคุณ คำตอบจะถูกส่งกลับไปยังเราเตอร์ของคุณซึ่งจะรู้ว่าคำขอมาจากไหนและตอบกลับ ภายในไม่มีอะไรแตกต่าง คุณจะเข้าถึง Raspberry Pi ผ่านที่อยู่ IP ภายในพอร์ต 80

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