Làm cách nào để tránh chuyển tiếp cổng khi đưa thiết bị IoT ra Internet bên ngoài?


15

Tôi đã nhận được một số câu trả lời hay trong câu hỏi Tôi cần gì để tạo đám mây cá nhân của riêng mình cho các thiết bị IoT? và một trong những điều mà tôi hiểu từ đó là tôi cần "phơi bày" HUB hoặc GATEWAY của mình ra internet bên ngoài. Giải pháp đề xuất cho điều đó là chuyển tiếp cổng .

Tôi đã tạo ra câu hỏi này như một câu hỏi riêng biệt bởi vì rất khó để theo dõi đúng cách chỉ với nhận xét về tất cả các câu trả lời, ai đó có thể bị lạc. Ngoài ra, thông tin này có thể hữu ích cho ai đó có câu hỏi tương tự.

Tôi không thích ý tưởng phải đi đến cấu hình bộ định tuyến của mình và định cấu hình chuyển tiếp cổng bởi vì điều đó có nghĩa là tôi phải định cấu hình một thiết bị mặc dù là một phần của cơ sở hạ tầng IoT, không phải là một trong những thiết bị "của tôi". Nó phải càng ít phá vỡ mạng gia đình hiện có càng tốt. Ngoài ra, tôi đã có những trường hợp tôi không biết mật khẩu quản trị viên của một bộ định tuyến cụ thể và thực sự rất khó để có được nó.

Tôi chắc chắn rằng có một cách xung quanh rằng ngay cả khi điều đó có nghĩa là có một IoT HUB mạnh hơn có thể chạy Linux, tôi chỉ không biết điều đó có thể là gì. Có thể có HUB phức tạp hơn một chút nếu cách "thay thế" đó cho phép tránh cấu hình chuyển tiếp cổng đó.

Tôi nói rằng tôi chắc chắn có một cách suy nghĩ về cách các ứng dụng như trình xem nhóm không cần định cấu hình chuyển tiếp cổng.

Vì vậy, câu hỏi là, có ai biết một cách "phơi bày" một thiết bị nhúng IoT ra internet bên ngoài để truy cập nó từ bất cứ nơi nào trên thế giới không liên quan đến chuyển tiếp cổng không?

Câu trả lời:


10

Nếu bạn không thể chuyển tiếp bộ định tuyến của mình, bạn có thể phải dùng đến cách bấm lỗ :

Hole punching là một kỹ thuật trong mạng máy tính để thiết lập kết nối trực tiếp giữa hai bên trong đó một hoặc cả hai đứng sau tường lửa hoặc đằng sau các bộ định tuyến sử dụng dịch địa chỉ mạng (NAT). Để đục lỗ, mỗi khách hàng kết nối với máy chủ bên thứ ba không hạn chế, tạm thời lưu trữ thông tin cổng và địa chỉ bên ngoài và bên ngoài cho mỗi khách hàng. Sau đó, máy chủ chuyển tiếp thông tin của từng khách hàng với nhau và sử dụng thông tin đó mà mỗi khách hàng cố gắng thiết lập kết nối trực tiếp; là kết quả của các kết nối sử dụng số cổng hợp lệ, tường lửa hoặc bộ định tuyến hạn chế chấp nhận và chuyển tiếp các gói đến ở mỗi bên.

Các NAT trên các phương tiện router của bạn mà khách hàng bên ngoài mạng của bạn không thể kết nối với các cổng mở của các thiết bị bên trong mạng của bạn, nhưng nó không hạn chế các thiết bị trong mạng của bạn từ kết nối với một 'môi giới'. Sử dụng một chút gián tiếp , bạn có thể thiết lập kết nối trực tiếp giữa hai thiết bị mà không thực sự mở bất kỳ cổng nào - đây thực chất là những dịch vụ như Skype và Hamachi làm.

Tất nhiên, điều này không yêu cầu một máy chủ bên ngoài phối hợp kết nối và có lẽ bạn sẽ muốn tin tưởng vào máy chủ đang thực hiện việc bấm lỗ.

Truyền thông ngang hàng qua các dịch giả địa chỉ mạng của Bryan Ford, Pyda Srisuresh và Dan Kegel là một bài đọc thú vị để biết thêm thông tin về các cơ chế đục lỗ và độ tin cậy của nó.


Tuyệt vời! Tuy nhiên, một câu hỏi, máy chủ của bên thứ ba hoặc "nhà môi giới" có thể ở trong nhà tôi không? Và ví dụ như một bảng Linux nhúng? Bởi vì nếu không, cách tiếp cận này sẽ giới thiệu một vấn đề thậm chí còn lớn hơn khi nói về việc có các yếu tố bên thứ 3 bên ngoài trong việc triển khai IoT. Nếu một bảng Linux nhúng không thể là cái này thì nó sẽ là gì?
m4l490n

3
@ m4l490n: Nó sẽ phải ở ngoài mạng của bạn theo một cách nào đó. Tôi sẽ tưởng tượng nó có thể là một máy chủ đám mây ở đâu đó hoặc bạn có thể sử dụng bảng Linux nếu đó là cổng được chuyển tiếp. Đấm lỗ UDP chỉ hoạt động khi bạn có máy chủ / thiết bị có thể truy cập công khai trên Internet ở đâu đó. Điều đó không lý tưởng, nhưng bạn không thể hiểu được thực tế rằng một cái gì đó phải được công khai trên Internet để kết nối. Tôi nghi ngờ một bảng Linux nhúng trong mạng gia đình của bạn sẽ không có lợi thế; bạn chỉ phải chuyển tiếp điều đó thay vì thiết bị IoT của bạn.
Aurora0001

1
Thông minh! Mặc dù đó không phải là ý định trực tiếp của câu trả lời của bạn và không phải là ý định ban đầu của câu hỏi của tôi, cuối cùng tôi cũng hiểu vai trò của một máy chủ đám mây trong cơ sở hạ tầng IoT!.
m4l490n

Nếu tôi hiểu, lỗ hổng là loại ảo, không giống như chuyển tiếp cổng nơi trạng thái bộ định tuyến được sửa đổi. Mỗi đầu của liên kết chỉ giao tiếp với máy chủ? Vì vậy, đây sẽ là mô hình điển hình cho IoT, tôi tin, vì mạng chung có nhiều đối với nhiều người?
Sean Houlihane

7

Trong thế giới IoT nơi các thiết bị có tài nguyên thấp để xử lý lưu lượng không mong muốn từ các kết nối bên ngoài và tất nhiên nhu cầu xử lý bất kỳ sự cố chuyển tiếp và tường lửa nào với bộ định tuyến đã dẫn đến cách tiếp cận sau đây mà bạn có thể thấy trong rất nhiều giải pháp hỗ trợ IoT:

Các thiết bị sẽ không chấp nhận bất kỳ thông tin mạng không mong muốn. Tất cả các kết nối và tuyến đường sẽ được thiết lập theo thiết bị theo kiểu bên ngoài. Vì vậy, thiết bị sẽ mở một kết nối ra bên ngoài, do đó không cần chỉnh sửa tường lửa / bộ định tuyến và nó sẽ giữ cho kênh mở miễn là cần thiết.

Một bài viết hay về các vấn đề và giải pháp truyền thông trong thế giới IoT.


Đối với MQTT, thiết bị là máy khách (nhà xuất bản hoặc thuê bao hoặc cả hai) và bắt đầu kết nối với nhà môi giới (máy chủ).
Hỗ trợ Gambit

"Thiết bị có tài nguyên thấp để xử lý lưu lượng không mong muốn từ các kết nối ra ngoài " ???? Điều đó làm cho không có ý nghĩa gì cả. Outbound kết nối chỉ có thể được tiến hành bên trong mạng.
Chris Stratton

@ChrisStratton, các kết nối ngoài có thể được chuyển trực tiếp đến các thiết bị sử dụng chuyển tiếp cổng nếu NAT đang được sử dụng. Họ cũng có thể có IP riêng và có thể được truy cập trực tiếp từ internet.
shachar

Bạn dường như đang hiểu sai ý nghĩa của từ "hướng ngoại" và sử dụng nhầm nó trong đó điều bạn thực sự muốn nói là "hướng nội". Và kết nối ra ngoài là một thiết bị IoT tiếp cận với máy chủ đám mây. Kết nối gửi đến là một cái gì đó bên ngoài mạng gia đình của bạn (giả sử điện thoại của bạn, trong khi bạn đang đi bộ trên đường) cố gắng tiếp cận với một thiết bị trong mạng của bạn.
Chris Stratton

@ChrisStratton, Bạn đã đúng, Khi tôi viết ra nước ngoài tôi có nghĩa là lưu lượng truy cập từ bên ngoài, về cơ bản là kết nối "Trong nước" cho cảm biến. Tôi đã chỉnh sửa câu trả lời của mình, Cảm ơn
shachar

3

Hãy thử gõ cổng . Bạn vẫn phải chuyển tiếp cổng, nhưng cổng chỉ mở sau khi bạn gửi kết hợp bí mật (bạn chọn) ping. Sau đó, bạn có thể đóng cổng với một kết hợp bí mật khác của ping. Nó có thể chạy trên linux nhúng, chẳng hạn như bộ định tuyến wifi với OpenWrt.


3

Mặc dù tôi không thể khuyên bạn nên cho phép mọi thiết bị IoT có thể truy cập được từ internet công cộng, nhưng bạn có thể đạt được điều này bằng cách sử dụng IPv6.

Nếu ISP và mạng cục bộ của bạn được định cấu hình cho IPv6 và các thiết bị IoT của bạn hỗ trợ nó, họ có thể tự động lấy địa chỉ IPv6 có thể định tuyến từ mọi nơi trên internet (IPv6 loại bỏ nhu cầu chuyển tiếp NAT và cổng). Bạn chỉ cần đảm bảo rằng mọi tường lửa (bộ định tuyến) của bạn được cấu hình để cho phép lưu lượng truy cập đến từng thiết bị. Một số có thể cho phép điều này (không an toàn) theo mặc định.


2

Thiết lập máy chủ VPN tại nhà, sau đó kết nối với nó từ bất cứ đâu. Tôi nghĩ rằng điều này sẽ an toàn hơn nhiều so với việc đưa bất kỳ loại thiết bị IoT nào ra Internet mở.


Không phải đó chỉ là một loại cổng?
Helmar

hm VPN là kết nối điểm-điểm (thường được mã hóa) giữa thiết bị và mạng. nó làm cho thiết bị kết nối hoạt động như thể nó là một phần của mạng. Tôi đoán bạn có thể nghĩ về nó như một cửa ngõ ... nhưng đó là một dịch vụ.
Maurice

Chắc chắn, nhưng dịch vụ đó vẫn phải vượt qua bộ định tuyến gia đình thường thông qua chuyển tiếp cổng hoặc kết nối ra ngoài không ngừng.
Helmar

vâng, bạn vẫn sẽ cần chuyển tiếp cổng mà VPN đang chạy. nhưng nó an toàn hơn so với việc phơi bày các thiết bị riêng lẻ (tho có khả năng ít thuận tiện hơn, tùy thuộc vào những gì bạn đang cố gắng đạt được)
Maurice
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.