ฉันจะหลีกเลี่ยงการส่งต่อพอร์ตเมื่อเปิดเผยอุปกรณ์ IoT ไปยังอินเทอร์เน็ตภายนอกได้อย่างไร


15

ฉันได้รับคำตอบที่ดีในคำถามฉันต้องสร้างระบบคลาวด์ส่วนตัวสำหรับอุปกรณ์ IoT อย่างไร และสิ่งหนึ่งที่ฉันเข้าใจจากที่นั่นคือฉันต้อง "เปิดเผย" HUB หรือ GATEWAY ของฉันไปยังอินเทอร์เน็ตภายนอก วิธีการแก้ปัญหาที่เสนอนั่นคือการส่งต่อพอร์ต

ฉันสร้างสิ่งนี้เป็นคำถามแยกต่างหากเพราะมันยากที่จะติดตามอย่างเหมาะสมเพียงแค่แสดงความคิดเห็นในคำตอบทั้งหมดใครบางคนอาจหลงทาง นอกจากนี้ข้อมูลนี้อาจเป็นประโยชน์สำหรับคนที่มีคำถามคล้ายกัน

ฉันไม่ชอบความคิดที่จะต้องไปที่การกำหนดค่าเราเตอร์ของฉันและกำหนดค่าการส่งต่อพอร์ตเพราะนั่นหมายความว่าฉันต้องกำหนดค่าอุปกรณ์ที่แม้จะเป็นส่วนหนึ่งของโครงสร้างพื้นฐาน IoT ไม่ใช่หนึ่งในอุปกรณ์ "ของฉัน" จะต้องมีการทำลายน้อยลงของเครือข่ายในบ้านที่มีอยู่แล้วที่เป็นไปได้ นอกจากนี้ฉันมีอินสแตนซ์ที่ฉันไม่ทราบรหัสผ่านผู้ดูแลระบบของเราเตอร์หนึ่งและมันยากที่จะได้รับ

ฉันแน่ใจว่ามีวิธีแก้ไขที่แม้ว่าจะหมายถึงการมี IoT HUB ที่ทรงพลังกว่าอาจใช้งาน Linux แต่ฉันไม่รู้ว่ามันจะเป็นอะไร มันก็โอเคที่จะมี HUB ที่ซับซ้อนกว่านี้เล็กน้อยถ้าวิธี "สลับ" นั้นอนุญาตให้หลีกเลี่ยงการกำหนดค่าการส่งต่อพอร์ตนั้น

ฉันบอกว่าฉันแน่ใจว่ามีวิธีคิดเกี่ยวกับวิธีที่แอปพลิเคชันเช่นผู้ดูทีมไม่จำเป็นต้องกำหนดค่าการส่งต่อพอร์ต

ดังนั้นคำถามคือไม่มีใครรู้วิธี "เปิดเผย" อุปกรณ์ IoT ที่ฝังตัวกับอินเทอร์เน็ตภายนอกเพื่อเข้าถึงจากทุกที่ในโลกที่ไม่เกี่ยวข้องกับการส่งต่อพอร์ตหรือไม่

คำตอบ:


10

หากคุณไม่สามารถส่งต่อเราเตอร์ของคุณได้คุณอาจต้องเจาะรู :

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

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

แน่นอนว่าสิ่งนี้ต้องใช้เซิร์ฟเวอร์ภายนอกในการประสานการเชื่อมต่อและคุณอาจต้องการเชื่อถือเซิร์ฟเวอร์ที่กำลังทำการเจาะรู

การสื่อสารแบบ Peer-to-Peer ข้ามเครือข่ายนักแปลที่อยู่โดยไบรอันฟอร์ด, Pyda Srisuresh และ Dan Kegel เป็นการอ่านที่น่าสนใจสำหรับข้อมูลเพิ่มเติมเกี่ยวกับกลไกของการเจาะรูและความน่าเชื่อถือ


ยอดเยี่ยม! แม้ว่าคำถามหนึ่งอาจเซิร์ฟเวอร์บุคคลที่สามหรือ "นายหน้า" สามารถอยู่ในบ้านของฉันได้หรือไม่ และยกตัวอย่างเช่นบอร์ด Linux แบบฝังตัว? เพราะมิฉะนั้นวิธีการนี้จะนำเสนอปัญหาที่ยิ่งใหญ่กว่าที่พูดถึงการมีองค์ประกอบบุคคลภายนอกในการปรับใช้ IoT หากบอร์ด Linux ในตัวไม่สามารถเป็นเช่นนี้ได้จะเป็นอย่างไร
m4l490n

3
@ m4l490n: จะต้องอยู่นอกเครือข่ายของคุณด้วยวิธีใดวิธีหนึ่ง ฉันจะคิดว่ามันอาจจะเป็นที่ใดที่หนึ่งเซิร์ฟเวอร์เมฆหรือคุณอาจจะใช้คณะกรรมการลินุกซ์ถ้าว่าเป็นพอร์ตการส่งต่อ การเจาะรู UDP จะทำงานได้ก็ต่อเมื่อคุณมีเซิร์ฟเวอร์ / อุปกรณ์ที่สาธารณชนสามารถเข้าถึงได้ทางอินเทอร์เน็ตที่ใดที่หนึ่ง มันไม่เหมาะ แต่คุณไม่สามารถหลีกเลี่ยงความจริงที่ว่าบางสิ่งต้องอยู่บนอินเทอร์เน็ตในการเชื่อมต่อกับสาธารณะ ฉันสงสัยว่าบอร์ด Linux แบบฝังตัวในเครือข่ายในบ้านของคุณจะไม่ได้รับประโยชน์ใด ๆ คุณเพียงแค่ส่งต่อพอร์ตนั้นแทนอุปกรณ์ IoT ของคุณ
Aurora0001

1
ยอดเยี่ยม แม้ว่ามันไม่ใช่ความตั้งใจโดยตรงของคำตอบของคุณและไม่ใช่ความตั้งใจดั้งเดิมของคำถามของฉัน แต่ในที่สุดฉันก็เข้าใจบทบาทของคลาวด์เซิร์ฟเวอร์ในโครงสร้างพื้นฐาน IoT!
m4l490n

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

7

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

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

บทความที่ดีเกี่ยวกับปัญหาการสื่อสารและการแก้ปัญหาในโลก IOT


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

"อุปกรณ์มีทรัพยากรเหลือน้อยเพื่อจัดการทราฟฟิกที่ไม่ต้องการจากการเชื่อมต่อขาออก " ???? มันไม่สมเหตุสมผลเลย การเชื่อมต่อขาออกสามารถเริ่มได้ภายในเครือข่ายเท่านั้น
Chris Stratton

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

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

@ ChrisStratton คุณถูกต้องเมื่อฉันเขียนขาออกฉันหมายถึงการรับส่งข้อมูลจากภายนอกซึ่งโดยทั่วไปแล้วจะเป็นการเชื่อมต่อ "ขาเข้า" สำหรับเซ็นเซอร์ ฉันได้แก้ไขคำตอบของฉันแล้วขอบคุณ
shachar

3

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


3

แม้ว่าฉันไม่สามารถแนะนำให้คุณอนุญาตให้อุปกรณ์ IoT ใด ๆ สามารถเข้าถึงได้จากอินเทอร์เน็ตสาธารณะ แต่คุณสามารถทำได้โดยใช้ IPv6

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


2

ติดตั้งเซิร์ฟเวอร์ VPN ที่บ้านจากนั้นเชื่อมต่อกับเซิร์ฟเวอร์ได้จากทุกที่ ฉันคิดว่านี่จะปลอดภัยกว่าการเปิดเผยอุปกรณ์ IoT ทุกประเภทไปยังอินเทอร์เน็ตเปิด


นั่นเป็นเพียงเกตเวย์บางประเภทใช่ไหม
Helmar

hm? VPN คือการเชื่อมต่อแบบจุดต่อจุด (ปกติเข้ารหัส) ระหว่างอุปกรณ์และเครือข่าย มันทำให้อุปกรณ์เชื่อมต่อทำหน้าที่เสมือนเป็นส่วนหนึ่งของเครือข่าย ฉันคิดว่าคุณคงคิดว่ามันเป็นเกตเวย์ ... แต่มันเป็นบริการ
มอริซ

แน่นอน แต่บริการนั้นยังต้องผ่านเราเตอร์ที่บ้านโดยปกติจะผ่านการส่งต่อพอร์ตหรือการเชื่อมต่อขาออกที่ไม่หยุด
Helmar

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