
“Bạn có thể tạo ra giải pháp (giải quyết vấn đề) theo nhiều cách, nhưng phương pháp đắt tiền nhất và/hoặc phổ biến nhất không phải lúc nào cũng hiệu quả nhất!”
Lời nói đầu
Khoảng ba năm trước, trong quá trình phát triển một mô hình từ xa để phục hồi dữ liệu sau thảm họa, tôi đã gặp phải một trở ngại mà không được nhận thấy ngay - thiếu thông tin về các giải pháp ban đầu mới cho ảo hóa mạng trong các nguồn cộng đồng.
Thuật toán cho mô hình phát triển đã được lên kế hoạch như sau:
- Một người dùng từ xa đã liên hệ với tôi, máy tính của họ đã từng từ chối khởi động, hiển thị thông báo “không phát hiện/không định dạng đĩa hệ thống”, tải nó bằng USB life.
- Trong quá trình khởi động, hệ thống sẽ tự động kết nối với mạng cục bộ riêng an toàn, ngoài ra mạng này còn chứa máy trạm của quản trị viên, trong trường hợp này là máy tính xách tay và nút NAS.
- Sau đó, tôi kết nối - để phục hồi các phân vùng đĩa hoặc để trích xuất dữ liệu từ đó.
Ban đầu, tôi triển khai mô hình này bằng cách sử dụng máy chủ VPN trên bộ định tuyến cục bộ trong mạng do tôi kiểm soát, sau đó trên VDS thuê. Nhưng, như thường lệ và theo định luật đầu tiên của Chisholm, nếu trời mưa, mạng của nhà cung cấp dịch vụ Internet sẽ bị hỏng, khi đó tranh chấp giữa các chủ thể kinh doanh sẽ khiến nhà cung cấp dịch vụ mất “năng lượng”…
Vì vậy, trước tiên tôi quyết định đưa ra các yêu cầu cơ bản mà công cụ cần thiết phải đáp ứng. Đầu tiên là sự phân quyền. Thứ hai, vì tôi có một số USB life như vậy nên mỗi chiếc đều có một mạng riêng biệt. Chà, thứ ba, kết nối nhanh chóng với mạng của nhiều thiết bị khác nhau và quản lý chúng đơn giản, kể cả trong trường hợp máy tính xách tay của tôi cũng trở thành nạn nhân của luật nêu trên.
Dựa trên điều này và đã dành hai tháng rưỡi để nghiên cứu thực tế về một số lựa chọn không phù hợp lắm, tôi, với nguy cơ và rủi ro của riêng mình, đã quyết định thử một công cụ khác từ một công ty khởi nghiệp mà tôi chưa biết đến vào thời điểm đó có tên là ZeroTier. Điều mà sau này tôi không bao giờ hối hận.
Trong những ngày nghỉ Tết này, cố gắng tìm hiểu xem liệu tình hình nội dung có thay đổi kể từ thời điểm đáng nhớ đó hay không, tôi đã tiến hành kiểm tra có chọn lọc về tính sẵn có của các bài viết về chủ đề này, sử dụng Habr làm nguồn. Đối với truy vấn “ZeroTier” trong kết quả tìm kiếm, chỉ có ba bài viết đề cập đến nó và không có bài nào có ít nhất một mô tả ngắn gọn. Và điều này bất chấp thực tế là trong số đó có bản dịch một bài báo được viết bởi chính người sáng lập ZeroTier, Inc. — .
Kết quả thật đáng thất vọng và thôi thúc tôi bắt đầu nói về ZeroTier một cách chi tiết hơn, giúp những “người tìm kiếm” hiện đại không phải đi theo con đường giống như tôi đã đi.
Vậy bạn là gì?
Nhà phát triển định vị ZeroTier là bộ chuyển mạch Ethernet thông minh cho hành tinh Trái đất.
“Nó là một công cụ ảo hóa mạng phân tán được xây dựng dựa trên mạng ngang hàng toàn cầu (P2P) được bảo mật bằng mật mã. Một công cụ tương tự như bộ chuyển mạch SDN của công ty, được thiết kế để tổ chức các mạng ảo trên mạng vật lý, cả cục bộ và toàn cầu, với khả năng kết nối hầu hết mọi ứng dụng hoặc thiết bị.”
Đây thiên về mô tả tiếp thị hơn, bây giờ là về các tính năng công nghệ.
▍Hạt nhân:
ZeroTier Network Hypervisor là một công cụ ảo hóa mạng độc lập mô phỏng mạng Ethernet, tương tự như VXLAN, trên mạng ngang hàng (P2P) được mã hóa toàn cầu.
Các giao thức được sử dụng trong ZeroTier là nguyên bản, mặc dù có hình thức tương tự như VXLAN và IPSec và bao gồm hai lớp riêng biệt nhưng có liên quan chặt chẽ về mặt khái niệm: VL1 và VL2.
→
▍VL1 là lớp truyền tải ngang hàng (P2P) cơ bản, một loại “cáp ảo”.
“Một trung tâm dữ liệu toàn cầu cần có một 'tủ cáp toàn cầu'."
Trong các mạng thông thường, L1 (OSI Lớp 1) đề cập đến các loại cáp thực tế hoặc radio không dây mang dữ liệu và các chip thiết bị thu phát vật lý điều chế và giải điều chế dữ liệu đó. VL1 là mạng ngang hàng (P2P) thực hiện chức năng tương tự, sử dụng mã hóa, xác thực và các thủ thuật mạng khác để tổ chức cáp ảo khi cần.
Hơn nữa, nó thực hiện việc này một cách tự động, nhanh chóng và không cần sự tham gia của người dùng khi khởi chạy nút ZeroTier mới.
Để đạt được điều này, VL1 được tổ chức tương tự như hệ thống tên miền. Trung tâm của mạng là một nhóm các máy chủ gốc có tính sẵn sàng cao, có vai trò tương tự như các máy chủ tên miền gốc DNS. Hiện tại, các máy chủ gốc (hành tinh) chính đang nằm dưới sự kiểm soát của nhà phát triển - ZeroTier, Inc. và được cung cấp như một dịch vụ miễn phí.
Tuy nhiên, có thể tạo máy chủ gốc tùy chỉnh (luns) cho phép bạn:
- giảm sự phụ thuộc vào cơ sở hạ tầng của ZeroTier, Inc.;
- tăng năng suất bằng cách giảm thiểu sự chậm trễ;
- tiếp tục hoạt động bình thường nếu mất kết nối Internet.
Ban đầu, các nút được khởi chạy mà không có kết nối trực tiếp với nhau.
Mỗi thiết bị ngang hàng trên VL1 có một địa chỉ ZeroTier 40 bit (10 thập lục phân) duy nhất, không giống như địa chỉ IP, địa chỉ này là một mã định danh được mã hóa không chứa thông tin định tuyến. Địa chỉ này được tính từ phần công khai của cặp khóa chung/riêng. Địa chỉ của nút, khóa chung và khóa riêng cùng nhau tạo thành danh tính của nút đó.
Member ID: df56c5621c
|
ZeroTier address of nodeVề vấn đề mã hóa, đây là lý do cần có một bài viết riêng.
→
Để thiết lập liên lạc, trước tiên các đồng nghiệp gửi các gói “lên” cây máy chủ gốc và khi các gói này di chuyển qua mạng, chúng sẽ bắt đầu tạo ngẫu nhiên các kênh chuyển tiếp trên đường đi. Cái cây không ngừng cố gắng “tự sụp đổ” để tự tối ưu hóa bản đồ lộ trình mà nó lưu trữ.
Cơ chế thiết lập kết nối ngang hàng như sau:

- Nút A muốn gửi một gói đến Nút B, nhưng vì nó không biết đường dẫn trực tiếp nên nó sẽ gửi gói tin ngược dòng đến Nút R (moon, máy chủ gốc của người dùng).
- Nếu nút R có kết nối trực tiếp với nút B, nó sẽ chuyển tiếp gói đến đó. Nếu không, nó sẽ gửi gói ngược dòng trước khi đến các gốc hành tinh biết về tất cả các nút, vì vậy gói cuối cùng sẽ đến nút B nếu nó trực tuyến.
- Nút R cũng gửi một thông báo gọi là "điểm hẹn" đến nút A, chứa các gợi ý về cách nó có thể đến nút B. Trong khi đó, máy chủ gốc, chuyển tiếp gói đến nút B, gửi một "điểm hẹn" thông báo cho nó về cách nó có thể đến nút A.
- Các nút A và B nhận được các tin nhắn điểm hẹn của chúng và cố gắng gửi các tin nhắn thử nghiệm cho nhau nhằm cố gắng vi phạm bất kỳ tường lửa NAT hoặc trạng thái nào gặp phải trên đường đi. Nếu điều này hoạt động thì kết nối trực tiếp sẽ được thiết lập và các gói không còn chuyển qua lại nữa.
Nếu không thể thiết lập kết nối trực tiếp, quá trình liên lạc sẽ tiếp tục thông qua chuyển tiếp và các nỗ lực kết nối trực tiếp sẽ tiếp tục cho đến khi đạt được kết quả thành công.
VL1 cũng có các tính năng khác để thiết lập kết nối trực tiếp, bao gồm khám phá mạng LAN ngang hàng, dự đoán cổng để truyền tải IPv4 NAT đối xứng và ánh xạ cổng rõ ràng bằng uPnP và/hoặc NAT-PMP nếu có trên mạng LAN vật lý cục bộ.
→
▍VL2 là giao thức ảo hóa mạng Ethernet giống như VXLAN với các chức năng quản lý SDN. Môi trường giao tiếp quen thuộc của hệ điều hành và ứng dụng...
Không giống như VL1, việc tạo mạng VL2 (VLAN) và kết nối các nút với chúng cũng như quản lý chúng cần có sự tham gia trực tiếp của người dùng. Anh ta có thể làm điều này bằng cách sử dụng bộ điều khiển mạng. Về bản chất, nó là một nút ZeroTier thông thường, trong đó các chức năng của bộ điều khiển được điều khiển theo hai cách: trực tiếp, bằng cách thay đổi tệp hoặc, như nhà phát triển đặc biệt khuyến nghị, sử dụng API đã xuất bản.
Phương pháp quản lý mạng ảo ZeroTier này không thuận tiện lắm đối với người bình thường, vì vậy có một số GUI:
- Một từ nhà phát triển ZeroTier, có sẵn dưới dạng giải pháp SaaS trên đám mây công cộng với bốn gói đăng ký, bao gồm cả gói miễn phí nhưng bị giới hạn về số lượng thiết bị được quản lý và mức hỗ trợ
- Thứ hai là từ một nhà phát triển độc lập, có chức năng được đơn giản hóa phần nào nhưng có sẵn dưới dạng giải pháp nguồn mở riêng để sử dụng tại chỗ hoặc trên tài nguyên đám mây.
VL2 được triển khai trên VL1 và được nó vận chuyển. Tuy nhiên, nó kế thừa tính năng mã hóa và xác thực của điểm cuối VL1, đồng thời sử dụng các khóa bất đối xứng để ký và xác minh thông tin xác thực. VL1 cho phép bạn triển khai VL2 mà không phải lo lắng về cấu trúc liên kết mạng vật lý hiện có. Nghĩa là, các vấn đề về kết nối và hiệu quả định tuyến là vấn đề của VL1. Điều quan trọng cần hiểu là không có kết nối nào giữa mạng ảo VL2 và đường dẫn VL1. Tương tự như ghép kênh Vlan trong mạng LAN có dây, hai nút chia sẻ nhiều thành viên mạng sẽ vẫn chỉ có một đường dẫn VL1 (cáp ảo) giữa chúng.
Mỗi mạng VL2 (VLAN) được xác định bằng địa chỉ mạng ZeroTier 64 bit (16 thập lục phân), chứa địa chỉ ZeroTier 40 bit của bộ điều khiển và số 24 bit xác định mạng được tạo bởi bộ điều khiển đó.
Network ID: 8056c2e21c123456
| |
| Network number on controller
|
ZeroTier address of controllerKhi một nút tham gia mạng hoặc yêu cầu cập nhật cấu hình mạng, nó sẽ gửi thông báo yêu cầu cấu hình mạng (thông qua VL1) tới bộ điều khiển mạng. Sau đó, bộ điều khiển sử dụng địa chỉ VL1 của nút để tìm nó trên mạng và gửi cho nó các chứng chỉ, thông tin xác thực và thông tin cấu hình thích hợp. Từ quan điểm của mạng ảo VL2, địa chỉ VL1 ZeroTier có thể được coi là số cổng trên một bộ chuyển mạch ảo toàn cầu khổng lồ.
Tất cả thông tin xác thực do bộ điều khiển mạng cấp cho các nút thành viên của một mạng nhất định đều được ký bằng khóa bí mật của bộ điều khiển để tất cả những người tham gia mạng có thể xác minh chúng. Thông tin xác thực có dấu thời gian do bộ điều khiển tạo ra, cho phép so sánh tương đối mà không cần phải truy cập vào đồng hồ hệ thống cục bộ của máy chủ.
Thông tin xác thực chỉ được cấp cho chủ sở hữu của chúng và sau đó được gửi đến các đồng nghiệp muốn liên lạc với các nút khác trên mạng. Điều này cho phép mạng mở rộng quy mô đến kích thước khổng lồ mà không cần phải lưu trữ lượng lớn thông tin xác thực trên các nút hoặc liên tục liên hệ với bộ điều khiển mạng.
Mạng ZeroTier hỗ trợ phân phối multicast thông qua hệ thống xuất bản/đăng ký đơn giản.
→
Khi một nút muốn nhận một chương trình phát đa hướng cho một nhóm phân phối cụ thể, nó sẽ quảng cáo tư cách thành viên trong nhóm đó cho các thành viên khác của mạng mà nó đang liên lạc với và với bộ điều khiển mạng. Khi một nút muốn gửi một multicast, nó sẽ đồng thời truy cập vào bộ đệm của các ấn phẩm gần đây và định kỳ yêu cầu các ấn phẩm bổ sung.
Một chương trình phát sóng (Ethernet ff: ff: ff: ff: ff: ff) được coi là một nhóm phát đa hướng mà tất cả những người tham gia đăng ký. Nó có thể bị vô hiệu hóa ở cấp độ mạng để giảm lưu lượng nếu không cần thiết.
ZeroTier mô phỏng một bộ chuyển mạch Ethernet thực sự. Thực tế này cho phép chúng tôi thực hiện kết hợp các mạng ảo đã tạo với các mạng Ethernet khác (mạng LAN có dây, WiFi, bảng nối đa năng ảo, v.v.) ở cấp liên kết dữ liệu - sử dụng cầu Ethernet thông thường.
Để hoạt động như một cầu nối, bộ điều khiển mạng phải chỉ định một máy chủ như vậy. Lược đồ này được triển khai vì lý do bảo mật, vì các máy chủ mạng thông thường không được phép gửi lưu lượng truy cập từ một nguồn khác ngoài địa chỉ MAC của chúng. Các nút được chỉ định làm cầu nối cũng sử dụng một chế độ đặc biệt của thuật toán multicast, chế độ này tương tác với chúng mạnh mẽ hơn và có mục tiêu hơn trong quá trình đăng ký nhóm và sao chép tất cả lưu lượng phát sóng và yêu cầu ARP.
Bộ chuyển mạch cũng có khả năng tạo mạng công cộng và mạng đặc biệt, cơ chế QoS và trình chỉnh sửa quy tắc mạng.
▍Nút:
KhôngCấp Một là dịch vụ chạy trên máy tính xách tay, máy tính để bàn, máy chủ, máy ảo và bộ chứa cung cấp kết nối với mạng ảo thông qua cổng mạng ảo, tương tự như máy khách VPN.
Sau khi dịch vụ được cài đặt và khởi động, bạn có thể kết nối với mạng ảo bằng địa chỉ 16 chữ số của chúng. Mỗi mạng xuất hiện dưới dạng một cổng mạng ảo trên hệ thống, hoạt động giống như cổng Ethernet thông thường.
ZeroTier One hiện có sẵn cho hệ điều hành và hệ thống sau.
Các hệ điều hành:
- microsoft Windows - Trình cài đặt MSI x86/x64
- Dành cho MacOS - Trình cài đặt PKG
- apple iOS - Cửa hàng ứng dụng
- Android - Cửa hang tro chơi
- Linux - DEB/RPM
- FreeBSD - Gói FreeBSD
NAS:
- Synology NAS
- NAS QNAP
- WD MyCloud NAS
Другие:
- phu bến tàu - tập tin docker
- OpenWRT - cổng cộng đồng
- Nhúng ứng dụng - SDK (libzt)
Để tóm tắt tất cả những điều trên, tôi lưu ý rằng ZeroTier là một công cụ tuyệt vời và nhanh chóng để kết hợp các tài nguyên vật lý, ảo hoặc đám mây của bạn vào một mạng cục bộ chung, với khả năng chia nó thành Vlan và không có một điểm lỗi nào .
Đó là phần lý thuyết theo dạng bài viết đầu tiên về ZeroTier cho Habr - có lẽ chỉ vậy thôi! Trong bài viết tiếp theo, tôi dự định trình diễn trên thực tế việc tạo cơ sở hạ tầng mạng ảo dựa trên ZeroTier, trong đó VDS với mẫu GUI nguồn mở riêng tư sẽ được sử dụng làm bộ điều khiển mạng.
Gởi bạn đọc! Bạn có sử dụng công nghệ ZeroTier trong các dự án của mình không? Nếu không, bạn sử dụng công cụ nào để kết nối các tài nguyên của mình?
Nguồn: www.habr.com
