นายหน้า MQTT สามารถเข้าถึงได้จากภายนอกโดยไม่ต้องเปิดพอร์ตในไฟร์วอลล์?


9

ฉันต้องการให้นายหน้า MQTT ของฉันสามารถเข้าถึงได้จากนอกเครือข่ายในบ้านของฉัน แต่ฉันลังเลที่จะเปิดพอร์ตในไฟร์วอลล์ และฉันต้องการหลีกเลี่ยงการใช้ IP ที่บ้านของฉัน

มันค่อนข้างสะดวกที่จะมีนายหน้าเปิดที่ไม่มีการเข้ารหัสที่บ้าน แต่มันไม่ได้ผลถ้าฉันจะเปิดเผยมัน ฉันมีตัวเลือกอื่น ๆ อีกบ้าง?


@Bence Kaulics ข้อเสนอแนะใด ๆ เกี่ยวกับสิ่งที่ขาดหายไปจากคำตอบของฉันได้อย่างไร
hardillb

1
@hardillb คำตอบของคุณเป็นบทสรุปที่ดี แต่ฉันคิดว่ามันจะมีประโยชน์หากมีรายละเอียดเพิ่มเติมเกี่ยวกับแต่ละประเด็น เช่นวิธีการตั้งค่าบริดจ์ดังกล่าวระหว่างสองโบรกเกอร์ นอกจากนี้ฉันก็จะมาคิดอื่น ๆ ถ้ามีคำอธิบายที่โปรดปรานนี้เป็นสิ่งที่ดีที่สุดที่ฉันสามารถหาได้ บางทีฉันควรเลือกเหตุผล "ไม่ได้รับความสนใจเพียงพอ"
Bence Kaulics

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

โชคไม่ดีที่โบรกเกอร์แต่ละประเภทมีวิธีการกำหนดค่าบริดจ์ที่แตกต่างกันดังนั้นจึงเป็นไปไม่ได้ที่จะให้คำตอบทั่วไป (เช่นเดียวกันกับการตรวจสอบความถูกต้อง / การตั้งค่า TLS)
hardillb

คำตอบ:


10

โดยทั่วไปคุณมี 3 ตัวเลือกหากคุณไม่ต้องการส่งต่อพอร์ต

  1. ใช้นายหน้าในคลาวด์เพื่อให้ลูกค้าจากบ้านเชื่อมต่อกับมันเสมอ ใช้ TLS และการตรวจสอบสิทธิ์เพื่อให้ผู้อื่นไม่สามารถดักฟังหรือฉีดข้อความที่ไม่ต้องการ
  2. ใช้ตัวแทนการซื้อขายแบบคลาวด์และตั้งค่าบริดจ์ระหว่างนายหน้าภายในและคลาวด์โบรกเกอร์ (คุณยังคงต้องการเข้ารหัสและตั้งชื่อผู้ใช้ / รหัสผ่านในคลาวด์โบรกเกอร์) นี่เป็นข้อได้เปรียบที่สิ่งต่าง ๆ ภายในจะใช้งานได้หากการเชื่อมต่ออินเทอร์เน็ตล่ม
  3. VPN บนอุปกรณ์ภายนอกทั้งหมดเพื่ออนุญาตการเข้าถึงเครือข่ายในบ้านของคุณ (แต่ตามจริงแล้วคุณอาจต้องเปิดพอร์ตสำหรับ VPN หรือมีเราเตอร์ที่สนับสนุนการเป็นเซิร์ฟเวอร์ VPN)

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


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

3

เนื่องจากนายหน้าเป็นเซิร์ฟเวอร์คุณต้องเปิดพอร์ตอย่างน้อยหนึ่งพอร์ตเพื่อให้ลูกค้าเชื่อมต่อ

ดังนั้นปัญหาของคุณจะกลายเป็นกรณีพิเศษในการเปิดเผยบริการบนอินเทอร์เน็ต

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

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


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

3

@hardillb ให้คำตอบที่ดี แต่ให้ฉันลองเพิ่มรายละเอียดเล็ก ๆ น้อย ๆ เพิ่มสัมผัส "ชีวิตจริง" บางส่วน:

  1. เลือกโบรกเกอร์ MQTT บางส่วนที่มีให้สาธารณะ HiveMQเป็นตัวอย่างที่ดีและคุณสามารถเริ่มต้นด้วยหน้าทดลองที่อธิบายวิธีเชื่อมต่อกับโบรกเกอร์:

เชื่อมต่อกับโบรกเกอร์สาธารณะ

โฮสต์: broker.hivemq.com

พอร์ต: 1883

พอร์ต Websocket: 8000

  1. เลือกลูกค้าที่เหมาะกับคุณที่สุดและใช้สำหรับการเชื่อมต่อระหว่างโบรกเกอร์ภายในกับโบรกเกอร์ MQTT สาธารณะ ตัวอย่างเช่นลูกค้า C ของคุณอาจจะPAHO MQTT ไคลเอ็นต์รองรับ SSL / TLS เพื่อความปลอดภัยของคุณยังคงอยู่ในระดับสูง

  2. Paho MQTT ที่ฝังตัวสามารถเป็นทางเลือกของคุณสำหรับอุปกรณ์ภายนอก

  3. HiveMQ มีนโยบายสิทธิ์ใช้งานแบบจ่ายตามการใช้งานเพื่อให้คุณสามารถพิจารณาด้วยความระมัดระวัง อย่างไรก็ตามคุณสามารถตรวจสอบหน้านี้สำหรับรายชื่อของเมฆที่มีอยู่และการทดสอบโบรกเกอร์ MQTT ใช้ได้

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