เราเตอร์ของคุณใช้ Linux และลักษณะการทำงานนี้ง่ายต่อการนำไปใช้กับ Linux distro ที่มีอยู่ ฉันสามารถเดาได้ว่าต้องมีกฎใดในไฟร์วอลล์ของเราเตอร์ของคุณจึงจะทำงานได้เช่นนี้ แต่โปรดทราบว่านี่เป็นเพียงการคาดเดาเท่านั้น เราไม่รู้ว่ากฎที่แท้จริงมีลักษณะอย่างไร
เมื่อคุณส่งต่อพอร์ตไปยังเว็บเซิร์ฟเวอร์ของคุณ พอร์ตนั้นจะเพิ่มกฎ DNAT เฉพาะ ซึ่งน่าจะมีลักษณะดังนี้:
iptables -t nat -A PREROUTING -p tcp -d <ที่อยู่ภายนอกของคุณ> --dport 443 -j DNAT --to-destination <raspberry-pi-address>
หมายความว่า: "ก่อนที่จะตัดสินใจว่าแพ็กเก็ตนี้ถูกส่งไปยังอุปกรณ์หรือต้องส่งต่อหรือไม่ ให้ตรวจสอบว่าที่อยู่ปลายทางของแพ็กเก็ตเป็นที่อยู่ภายนอกของคุณหรือไม่ และพอร์ตปลายทางคือ 443 หากตรงกัน ให้เปลี่ยนที่อยู่ปลายทางเป็น LAN ของ raspberry pi ที่อยู่". โปรดสังเกตว่า กฎนี้ไม่ได้กรองตามอินเทอร์เฟซ
นอกจากนี้ยังมีกฎประเภท SNAT แน่นอน (สำหรับการให้การเข้าถึงอินเทอร์เน็ตสำหรับ LAN) อาจมีลักษณะดังนี้:
iptables -t nat -A โพสต์ -s 192.168.1.0/24 -j MASQUERADE
กล่าวอีกนัยหนึ่ง หลังจากที่เราเตอร์ตัดสินใจว่าแพ็กเก็ตต้องไปที่ใด ก่อนที่จะส่งแพ็กเก็ต เราเตอร์จะเปลี่ยนที่อยู่ต้นทางเป็นที่อยู่ใดก็ตามที่อินเทอร์เฟซขาออกมี (หากแพ็กเก็ตถูกส่งมาจาก LAN) ไม่มีอะไรถูกกรองโดยอินเทอร์เฟซ
พิจารณาการเชื่อมต่อ HTTPS ของคุณ คุณกำลังระบุชื่อโฮสต์ในเบราว์เซอร์ใช่ไหม คุณตั้งค่าเพื่อให้แก้ไขเป็นที่อยู่ภายนอกของเราเตอร์ ซึ่งจะกลายเป็นที่อยู่ปลายทาง ที่อยู่ต้นทางของคุณอยู่ใน LAN ดังนั้น ดูเหมือนว่ากฎทั้งสองนี้จะใช้กับแพ็กเก็ตของการเชื่อมต่อของคุณ
การประมวลผล เราเตอร์จะพบกฎ DNAT ก่อน ตรวจสอบที่อยู่ปลายทางและพอร์ต และตัดสินใจเปลี่ยนที่อยู่ปลายทางเป็นของ raspberry piจากนั้นจะพบอินเทอร์เฟซที่แพ็กเก็ตต้องออกไปคือ LAN หนึ่ง จากนั้นจะตรวจสอบแพ็กเก็ตที่แปลบางส่วนเทียบกับกฎข้อที่สอง และพบว่าที่อยู่ต้นทางนั้นมาจาก LAN ดังนั้นจึงแทนที่ที่อยู่ต้นทางของแพ็คเก็ตด้วยที่อยู่ของอินเทอร์เฟซ LAN, 192.168.1.1 นี่คือสิ่งที่ราสเบอร์รี่ pi ของคุณเห็น
การดำเนินการ NAT นั้นมีสถานะ กล่าวคือ ยังรักษาบันทึกตารางซึ่งระบุว่าสิ่งใดถูกแทนที่ด้วยอะไรและจะตรวจหาแพ็กเก็ตส่งต่อและตอบกลับที่ตามมาได้อย่างไร ดังนั้นมันจึงแปลทั้งหมดได้อย่างถูกต้อง ใช่ ปรากฎว่า Linux สามารถทำ DNAT และ SNAT ได้พร้อมกันภายในสตรีมเดียวกัน
คุณสามารถไว้วางใจพฤติกรรมนี้ได้หรือไม่? ฉันไม่รู้. หากเฟิร์มแวร์ของเราเตอร์เป็นแบบโอเพ่นซอร์ส เรามีโอกาสที่จะตรวจสอบได้ เราไม่สามารถแน่ใจได้หากไม่มีแหล่งที่มา นี่เป็นกรณีเสมอเมื่อแหล่งที่มาถูกปิด นั่นคือเหตุผลที่ต้องหลีกเลี่ยงผลิตภัณฑ์จากแหล่งปิดหากคุณกังวลเกี่ยวกับความปลอดภัย