Giới thiệu

Ngày nay, ngày càng có nhiều dự án phần mềm được xây dựng bởi các nhóm có thành viên làm việc cùng nhau từ các vị trí địa lý riêng biệt. Trong khi quy trình làm việc này có nhiều lợi thế rõ ràng, có những trường hợp các đội như vậy có thể muốn liên kết các máy tính của họ với nhau trên internet và đối xử với họ như thể họ đang ở trong cùng một phòng. Ví dụ, bạn có thể thử nghiệm các hệ thống phân tán như Kubernetes hoặc xây dựng một ứng dụng đa dịch vụ phức tạp. Đôi khi nó chỉ giúp với năng suất nếu bạn có thể xử lý các máy như thể chúng nằm ngay cạnh nhau, vì bạn sẽ không cần phải mạo hiểm để lộ các dịch vụ chưa hoàn thành của mình lên internet. Mô hình này có thể đạt được thông qua Mạng Phần mềm được Xác định (SDN), một công nghệ tương đối mới cung cấp một loại vải mạng động có sự tồn tại hoàn toàn được tạo thành từ phần mềm.

ZeroTier One là một ứng dụng mã nguồn mở sử dụng một số phát triển mới nhất trong SDN để cho phép người dùng tạo các mạng an toàn, có thể quản lý và xử lý các thiết bị được kết nối như thể chúng ở cùng một vị trí thực tế. ZeroTier cung cấp một giao diện điều khiển web để quản lý mạng và phần mềm điểm cuối cho khách hàng. Đó là một công nghệ ngang hàng được mã hóa, có nghĩa là không giống như các giải pháp VPN truyền thống, truyền thông không cần truyền qua máy chủ trung tâm hoặc các bộ định tuyến - được gửi trực tiếp từ máy chủ đến máy chủ. Kết quả là nó rất hiệu quả và đảm bảo độ trễ tối thiểu. Các lợi ích khác bao gồm quá trình triển khai và cấu hình đơn giản của ZeroTier, bảo trì đơn giản và cho phép đăng ký tập trung và quản lý các nút được ủy quyền thông qua Web Console.

Bằng cách làm theo hướng dẫn này, bạn sẽ kết nối một máy khách và máy chủ với nhau trong một mạng điểm-điểm-điểm đơn giản. Vì Mạng Phần mềm được Định nghĩa không sử dụng thiết kế máy khách / máy chủ truyền thống, nên không có máy chủ VPN trung tâm để cài đặt và cấu hình; điều này sắp xếp hợp lý việc triển khai công cụ và bổ sung bất kỳ nút bổ sung nào. Khi kết nối được thiết lập, bạn sẽ có cơ hội sử dụng khả năng VPN của ZeroTier bằng cách sử dụng một số chức năng thông minh của Linux để cho phép lưu lượng truy cập rời khỏi mạng ZeroTier từ máy chủ của bạn và hướng dẫn khách hàng gửi lưu lượng truy cập theo hướng đó.

Điều kiện tiên quyết

Trước khi làm việc thông qua hướng dẫn này, bạn sẽ cần các tài nguyên sau:

  • Máy chủ chạy Ubuntu 16.04. Trên máy chủ này, bạn cũng sẽ cần một người dùng không phải root với các đặc quyền sudo có thể được thiết lập bằng cách sử dụng hướng dẫn cài đặt máy chủ ban đầu cho Ubuntu 16.04.

  • Một tài khoản với ZeroTier One, mà bạn có thể thiết lập bằng cách truy cập My ZeroTier. Với mục đích của hướng dẫn này, bạn có thể sử dụng phiên bản miễn phí của dịch vụ này không kèm theo chi phí hoặc cam kết.

  • Máy tính cục bộ để tham gia SDN của bạn với tư cách khách hàng. Trong các ví dụ trong suốt hướng dẫn này, cả máy chủ và máy tính cục bộ đang chạy Ubuntu Linux nhưng bất kỳ hệ điều hành nào được liệt kê trên Trang tải xuống ZeroTier sẽ hoạt động trên máy khách.

Với những điều kiện tiên quyết đó, bạn đã sẵn sàng để thiết lập mạng được xác định bằng phần mềm cho máy chủ và máy cục bộ của bạn.

Bước 1 - Tạo mạng được xác định bằng phần mềm sử dụng ZeroTier One

Nền tảng ZeroTier cung cấp điểm kiểm soát trung tâm cho mạng được xác định phần mềm của bạn. Tại đó, bạn có thể ủy quyền và hủy cấp phép ứng dụng khách, chọn một lược đồ địa chỉ và tạo ID mạng để bạn có thể hướng khách hàng của mình khi thiết lập chúng.

Đăng nhập vào tài khoản ZeroTier của bạn, nhấp Mạng ở đầu màn hình, sau đó nhấp Tạo nên. Tên mạng được tạo tự động sẽ xuất hiện. Nhấp vào nó để xem màn hình cấu hình mạng của bạn. Ghi lại ID mạng hiển thị màu vàng vì bạn sẽ cần tham khảo sau này.

Nếu bạn muốn thay đổi tên mạng thành tên mô tả hơn, hãy chỉnh sửa tên ở phía bên trái của màn hình; bạn cũng có thể thêm mô tả, nếu bạn muốn. Mọi thay đổi bạn thực hiện sẽ được lưu và áp dụng tự động.

Tiếp theo, chọn dải địa chỉ IPv4 mà SDN sẽ hoạt động. Ở bên phải màn hình, trong khu vực có tiêu đề Tự động gán IPv4, chọn một dải địa chỉ mà các nút của bạn sẽ nằm xuống. Với mục đích của hướng dẫn này, bất kỳ phạm vi nào có thể được sử dụng, nhưng điều quan trọng là phải rời khỏi Tự động chỉ định từ Phạm vi hộp được đánh dấu.

Đảm bảo rằng Kiểm soát truy cập ở bên trái vẫn được đặt thành Giấy chứng nhận (Mạng riêng). Điều này đảm bảo rằng chỉ những máy được phê duyệt mới có thể kết nối với mạng của bạn và không chỉ bất kỳ ai biết ID mạng của bạn!

Sau khi hoàn tất, cài đặt của bạn sẽ trông giống như sau:

ZeroTier settings configuration

Tại thời điểm này, bạn đã kết hợp thành công nền tảng của một Mạng do ZeroTier xác định phần mềm. Tiếp theo, bạn sẽ cài đặt phần mềm ZeroTier trên máy chủ và máy khách của mình để cho phép chúng kết nối với SDN của bạn.

Bước 2 - Cài đặt ZeroTier One Client trên máy chủ của bạn và máy tính cục bộ

Vì ZeroTier One là một phần mềm tương đối mới, nó chưa được đưa vào kho phần mềm Ubuntu lõi. Vì lý do này, ZeroTier cung cấp một kịch bản cài đặt mà chúng tôi sẽ sử dụng để cài đặt phần mềm. Lệnh này là một tập lệnh được ký GPG, có nghĩa là mã bạn tải xuống sẽ được xác minh là được xuất bản bởi ZeroTier. Kịch bản này có bốn phần chính, và đây là một lời giải thích từng mảnh của mỗi người trong số họ:

  • curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' - Điều này nhập khóa công khai ZeroTier từ MIT.
  • gpg --import - Phần này của lệnh thêm khóa công khai ZeroTier vào keychain của chính quyền địa phương của bạn để tin tưởng vào các gói bạn cố gắng cài đặt. Phần tiếp theo của lệnh sẽ chỉ được thực thi nếu quá trình nhập GPG hoàn tất thành công
  • if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" - Có một vài điều xảy ra trong phần này, nhưng về cơ bản dịch là: "Nếu tập lệnh cài đặt được mã hóa được tải xuống từ ZeroTier.com đi qua GPG và không bị từ chối bởi unsigned bởi ZeroTier, hãy dán thông tin đó vào màn hình."
  • sudo bash; fi - Phần này lấy kịch bản trình cài đặt vừa được xác thực và thực thi nó trước khi kết thúc thường trình.

Cảnh báo: Bạn không bao giờ nên tải một cái gì đó từ internet và đường ống nó vào một chương trình khác, trừ khi bạn chắc chắn nó đến từ một nguồn đáng tin cậy. Nếu bạn muốn, bạn có thể kiểm tra phần mềm ZeroTier bằng cách xem lại mã nguồn trên trang GitHub chính thức của dự án.

Sử dụng một Bảng điều khiển SSH để kết nối với máy chủ mới được tạo của bạn và chạy lệnh sau với tư cách là người dùng bình thường của bạn (một giải thích về lệnh được cung cấp bên dưới). Hãy chắc chắn rằng bạn đừng chạy nó dưới dạng root, vì kịch bản tự động yêu cầu mật khẩu của bạn nâng cao mức đặc quyền của nó và nhớ giữ bảng điều khiển ZeroTier mở trong trình duyệt của bạn để bạn có thể tương tác với nó khi cần thiết.

curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

Khi tập lệnh hoàn tất, bạn sẽ thấy hai dòng đầu ra tương tự như các dòng được hiển thị bên dưới. Ghi lại địa chỉ ZeroTier của bạn (không có dấu ngoặc vuông) và tên của hệ thống đã tạo địa chỉ đó, cả hai bạn sẽ cần sau này:

Output*** Waiting for identity generation...

*** Success! You are ZeroTier address [ 916af8664d ].

Lặp lại bước này trên máy tính cục bộ của bạn nếu sử dụng Ubuntu, hoặc làm theo các bước liên quan cho hệ điều hành của bạn trên trang web của ZeroTier Tải xuống trang. Một lần nữa, hãy đảm bảo lưu ý địa chỉ ZeroTier và máy đã tạo địa chỉ đó. Bạn sẽ cần thông tin này trong bước tiếp theo của hướng dẫn này khi bạn thực sự kết nối máy chủ và máy khách với mạng.

Bước 3 - Tham gia mạng ZeroTier của bạn

Bây giờ cả máy chủ và máy khách đều có phần mềm ZeroTier đang chạy trên chúng, bạn đã sẵn sàng kết nối chúng với mạng mà bạn đã tạo trong giao diện điều khiển web ZeroTier.

Sử dụng lệnh sau để hướng dẫn khách hàng của bạn yêu cầu truy cập vào mạng ZeroTier thông qua nền tảng của họ. Yêu cầu ban đầu của khách hàng sẽ bị từ chối và bị treo, nhưng chúng tôi sẽ sửa lỗi đó trong giây lát. Hãy chắc chắn để thay thế NetworkID với ID mạng mà bạn đã lưu ý trước đó từ cửa sổ cấu hình Mạng của bạn.

sudo zerotier-cli join NetworkID

Output200 join OK

Bạn sẽ nhận được một 200 join OK thông báo, xác nhận rằng dịch vụ ZeroTier trên máy chủ của bạn đã hiểu lệnh. Nếu không, hãy kiểm tra lại ID mạng ZeroTier bạn đã nhập.

Vì bạn chưa tạo một mạng công cộng mà bất kỳ ai trên thế giới đều có thể tham gia, giờ đây bạn cần ủy quyền cho khách hàng của mình. Truy cập Bảng điều khiển Web ZeroTier và cuộn xuống dưới cùng ở phía dưới Các thành viên là. Bạn nên phát hiện hai mục được đánh dấu là Trực tuyến, với cùng địa chỉ mà bạn đã lưu ý trước đó.

Trong cột đầu tiên được đánh dấu Auth?, đánh dấu vào ô để cho phép họ tham gia mạng. Bộ điều khiển Zerotier sẽ cấp phát một địa chỉ IP cho máy chủ và máy khách từ phạm vi bạn đã chọn trước đó trong lần tiếp theo họ gọi SDN.

Việc phân bổ địa chỉ IP có thể mất một chút thời gian. Trong khi chờ đợi, bạn có thể cung cấp Tên ngắnSự miêu tả cho các nút của bạn trong Các thành viên phần.

Với điều đó, bạn sẽ kết nối hai hệ thống với mạng được xác định bởi phần mềm của bạn.

Cho đến nay, bạn đã đạt được một sự quen thuộc cơ bản với bảng điều khiển ZeroTier, đã sử dụng giao diện dòng lệnh để tải xuống và cài đặt ZeroTier, sau đó đính kèm cả máy chủ và máy khách vào mạng đó. Tiếp theo, bạn sẽ kiểm tra xem mọi thứ đã được áp dụng đúng chưa bằng cách thực hiện kiểm tra kết nối.

Bước 4 - Xác minh kết nối

Ở giai đoạn này, điều quan trọng là xác nhận rằng hai máy chủ thực sự có thể nói chuyện với nhau. Có một cơ hội mà mặc dù các máy chủ yêu cầu được tham gia vào mạng, họ không thể giao tiếp. Bằng cách xác minh kết nối ngay bây giờ, bạn sẽ không phải lo lắng về các sự cố kết nối cơ bản có thể gây ra sự cố sau này.

Một cách dễ dàng để tìm địa chỉ IP ZeroTier của mỗi máy chủ là tìm trong Các thành viên của Bảng điều khiển Web ZeroTier. Bạn có thể cần phải làm mới nó sau khi cho phép máy chủ và máy khách trước khi địa chỉ IP của họ xuất hiện. Ngoài ra, bạn có thể sử dụng dòng lệnh Linux để tìm các địa chỉ này. Sử dụng lệnh sau trên cả hai máy - địa chỉ IP đầu tiên được hiển thị trong danh sách là địa chỉ được sử dụng. Trong ví dụ được hiển thị bên dưới, địa chỉ đó là 203.0.113.0.

ip addr sh zt0 | grep 'inet'

Outputinet 203.0.113.0/24 brd 203.0.255.255 scope global zt0
inet6 fc63:b4a9:3507:6649:9d52::1/40 scope global
inet6 fe80::28e4:7eff:fe38:8318/64 scope link

Để kiểm tra kết nối giữa các máy chủ, hãy chạy ping lệnh từ một máy chủ theo sau là địa chỉ IP của máy chủ khác. Ví dụ: trên máy khách:

ping your_server_ip

Và trên máy chủ:

ping your_client_ip

Nếu các thư trả lời đang được trả về từ máy chủ đối diện (như được hiển thị trong kết quả được hiển thị bên dưới), thì hai nút giao tiếp thành công trên SDN.

OutputPING 203.0.113.0 (203.0.113.0) 56(84) bytes of data.
64 bytes from 203.0.113.0: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 203.0.113.0: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 203.0.113.0: icmp_seq=3 ttl=64 time=0.043 ms

Bạn có thể thêm bao nhiêu máy tùy thích cấu hình này bằng cách lặp lại quá trình cài đặt ZeroTier và tham gia các quy trình được nêu ở trên. Hãy nhớ rằng, những máy này không cần phải có bất kỳ cách nào gần gũi với nhau.

Bây giờ bạn đã xác nhận rằng máy chủ và máy khách của bạn có thể giao tiếp với nhau, hãy đọc tiếp để tìm hiểu cách điều chỉnh mạng để cung cấp cổng thoát và xây dựng VPN của riêng bạn.

Bước 5 - Kích hoạt khả năng VPN của ZeroTier

Như đã đề cập trong phần giới thiệu, có thể sử dụng ZeroTier làm công cụ VPN. Nếu bạn không có kế hoạch sử dụng ZeroTier làm giải pháp VPN, thì bạn không cần phải làm theo bước này và có thể chuyển sang Bước 6.

Sử dụng VPN ẩn nguồn thông tin liên lạc của bạn với các trang web trên internet. Nó cho phép bạn bỏ qua các bộ lọc và các hạn chế có thể tồn tại trên mạng bạn đang sử dụng. Đối với internet rộng hơn, bạn sẽ xuất hiện để được duyệt từ địa chỉ IP công cộng của máy chủ của bạn. Để sử dụng ZeroTier như một công cụ VPN, bạn sẽ cần thực hiện thêm một vài thay đổi đối với cấu hình máy chủ và máy khách của mình.

Bật dịch địa chỉ mạng và chuyển tiếp IP

Bản dịch địa chỉ mạng, thường được gọi là "NAT", là một phương thức mà router nhận các gói tin trên một giao diện được gắn thẻ với địa chỉ IP của người gửi và sau đó hoán đổi địa chỉ đó cho địa chỉ của router. Một bản ghi của sự hoán đổi này được lưu giữ trong bộ nhớ của bộ định tuyến để khi lưu lượng ngược trở lại theo hướng ngược lại, bộ định tuyến có thể dịch IP trở về địa chỉ ban đầu của nó. NAT thường được sử dụng để cho phép nhiều máy tính hoạt động sau một địa chỉ IP được hiển thị công khai, có ích cho một dịch vụ VPN. Một ví dụ về NAT trong thực tế là bộ định tuyến trong nước mà Nhà cung cấp dịch vụ Internet của bạn cung cấp cho bạn để kết nối tất cả các thiết bị trong nhà của bạn với internet. Máy tính xách tay, điện thoại, máy tính bảng và mọi thiết bị hỗ trợ internet khác đều xuất hiện để chia sẻ cùng một địa chỉ IP công khai với internet, bởi vì bộ định tuyến của bạn đang thực hiện NAT.

Mặc dù NAT thường được thực hiện bởi một bộ định tuyến, một máy chủ cũng có khả năng thực hiện nó. Trong suốt bước này, bạn sẽ tận dụng chức năng này trong máy chủ ZeroTier để kích hoạt khả năng VPN của nó.

Chuyển tiếp IP là một hàm được thực hiện bởi một bộ định tuyến hoặc máy chủ trong đó nó chuyển tiếp lưu lượng từ một giao diện này sang giao diện khác nếu các địa chỉ IP đó nằm trong các vùng khác nhau. Nếu một bộ định tuyến được kết nối với hai mạng, chuyển tiếp IP cho phép nó chuyển tiếp lưu lượng giữa chúng. Điều này nghe có vẻ đơn giản, nhưng nó có thể phức tạp đáng ngạc nhiên để thực hiện thành công. Tuy nhiên, trong trường hợp của hướng dẫn này, đó chỉ là vấn đề chỉnh sửa một vài tệp cấu hình.

Bằng cách cho phép chuyển tiếp IP, lưu lượng VPN từ máy khách của bạn trong mạng ZeroTier sẽ đến giao diện ZeroTier của máy chủ. Nếu không có những thay đổi về cấu hình thì nhân Linux sẽ (theo mặc định) sẽ vứt bỏ bất kỳ gói nào không được định sẵn cho giao diện mà chúng đến. Đây là hành vi bình thường đối với hạt nhân Linux, vì thường bất kỳ gói nào đến trên một giao diện có địa chỉ đích cho một mạng khác có thể do định cấu hình sai định tuyến ở nơi khác trong mạng.

Sẽ rất hữu ích khi nghĩ về chuyển tiếp IP như thông báo cho hạt nhân Linux rằng có thể chấp nhận chuyển tiếp các gói giữa các giao diện. Cài đặt mặc định là 0 â € "tương đương với" Tắt ". Bạn sẽ chuyển nó sang 1 â € "tương đương với" Bật ".

Để xem cấu hình hiện tại, hãy chạy lệnh sau:

sudo sysctl net.ipv4.ip_forward

Outputnet.ipv4.ip_forward = 0

Để bật chuyển tiếp IP, hãy sửa đổi /etc/sysctl.conf trên máy chủ của bạn và thêm vào dòng yêu cầu. Tệp cấu hình này cho phép quản trị viên ghi đè cài đặt hạt nhân mặc định và sẽ luôn được áp dụng sau khi khởi động lại, do đó bạn không cần phải lo lắng về việc thiết lập lại. Sử dụng nano hoặc trình soạn thảo văn bản yêu thích của bạn để thêm dòng sau vào cuối tệp.

sudo nano /etc/sysctl.conf

/etc/sysctl.conf

. . .
net.ipv4.ip_forward = 1

Lưu và đóng tệp, sau đó chạy lệnh tiếp theo để kích hoạt việc sử dụng cấu hình mới của hạt nhân

sudo sysctl -p

Máy chủ sẽ áp dụng bất kỳ chỉ thị cấu hình mới nào trong tệp và áp dụng chúng ngay lập tức mà không cần khởi động lại. Chạy lệnh tương tự như bạn đã làm trước đó và bạn sẽ thấy rằng chuyển tiếp IP được bật.

sudo sysctl net.ipv4.ip_forward

Outputnet.ipv4.ip_forward = 1

Giờ đây, tính năng chuyển tiếp IP được bật, bạn sẽ sử dụng tốt nó bằng cách cung cấp máy chủ với một số quy tắc định tuyến cơ bản. Vì hạt nhân Linux đã có khả năng định tuyến mạng bên trong nó, tất cả những gì bạn phải làm là thêm một số quy tắc để báo cho tường lửa và bộ định tuyến tích hợp rằng lưu lượng truy cập mới sẽ được chấp nhận và vị trí gửi nó .

Để thêm các quy tắc này từ dòng lệnh, trước tiên bạn sẽ cần phải biết tên mà Ubuntu đã gán cho cả giao diện Zerotier của bạn và giao diện ethernet thông thường của bạn. Đây thường là zt0eth0 tương ứng, mặc dù điều này không phải luôn luôn như vậy.

Để tìm các tên giao diện này, hãy sử dụng lệnh ip link show. Tiện ích dòng lệnh này là một phần của iproute2, một tập hợp các tiện ích không gian người dùng được cài đặt trên Ubuntu theo mặc định:

ip link show

Trong đầu ra của lệnh này, tên của các giao diện trực tiếp bên cạnh các số nhận dạng một giao diện duy nhất trong danh sách. Các tên giao diện này được đánh dấu trong đầu ra ví dụ sau. Nếu bạn khác với tên được hiển thị trong ví dụ, sau đó thay thế tên giao diện của bạn một cách thích hợp trong suốt hướng dẫn này.

Output1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 72:2d:7e:6f:5e:08 brd ff:ff:ff:ff:ff:ff
3: zt0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether be:82:8f:f3:b4:cd brd ff:ff:ff:ff:ff:ff

Với thông tin đó trong tay, hãy sử dụng iptables để bật tính năng giả mạo địa chỉ mạng và dịch địa chỉ mạng:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Cho phép chuyển tiếp lưu lượng và theo dõi các kết nối đang hoạt động:

sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Tiếp theo, cho phép chuyển tiếp lưu lượng truy cập từ zt0 đến eth0. Một quy tắc ngược lại là không cần thiết vì, trong hướng dẫn này, nó được giả định rằng máy khách luôn gọi ra thông qua máy chủ, và không phải là cách khác xung quanh:

sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT

Điều quan trọng cần nhớ là các quy tắc iptables mà bạn đã đặt cho máy chủ không tự động tồn tại giữa các lần khởi động lại. Bạn sẽ cần phải lưu các quy tắc này để đảm bảo chúng được đưa trở lại có hiệu lực nếu máy chủ được khởi động lại. Trên máy chủ của bạn chạy các lệnh dưới đây, làm theo hướng dẫn ngắn gọn trên màn hình để lưu các quy tắc IPv4 hiện tại, không bắt buộc phải có IPv6.

sudo apt-get install iptables-persistent

sudo netfilter-persistent save

Sau khi chạy sudo netfilter-persistent save nó có thể là đáng giá để khởi động lại máy chủ của bạn để xác nhận rằng các quy tắc iptables đã được lưu chính xác. Một cách dễ dàng để kiểm tra là chạy sudo iptables-save, sẽ đổ cấu hình hiện tại được nạp vào bộ nhớ cho thiết bị đầu cuối của bạn. Nếu bạn thấy các quy tắc tương tự như các quy tắc bên dưới liên quan đến giả mạo, chuyển tiếp và zt0 giao diện, sau đó chúng được lưu chính xác.

sudo iptables-save

Output# Generated by iptables-save v1.6.0 on Tue Apr 17 21:43:08 2018
. . .
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
. . .
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i zt0 -o eth0 -j ACCEPT
COMMIT
. . .

Bây giờ các quy tắc này đã được áp dụng cho máy chủ của bạn, nó đã sẵn sàng để sắp xếp lưu lượng truy cập giữa mạng ZeroTier và Internet công cộng. Tuy nhiên, VPN sẽ không hoạt động trừ khi bản thân Mạng ZeroTier được thông báo rằng máy chủ đã sẵn sàng để được sử dụng làm cổng.

Bật máy chủ của bạn để quản lý tuyến đường toàn cầu

Để máy chủ của bạn xử lý lưu lượng truy cập từ bất kỳ ứng dụng khách nào, bạn phải đảm bảo rằng các máy khách khác trong mạng ZeroTier biết gửi lưu lượng truy cập của chúng đến nó. Người ta có thể làm điều này bằng cách thiết lập một tuyến đường toàn cầu trong ZeroTier Console. Những người quen thuộc với mạng máy tính cũng có thể mô tả điều này như một Tuyến đường mặc định. Đó là nơi mà bất kỳ khách hàng nào gửi lưu lượng truy cập mặc định của họ, nghĩa là bất kỳ lưu lượng truy cập nào không được chuyển đến bất kỳ vị trí cụ thể nào khác.

Chuyển đến phía trên cùng bên phải của trang ZeroTier Networks của bạn và thêm tuyến mới với các thông số sau. Bạn có thể tìm thấy IP ZeroTier cho máy chủ của mình trong Các thành viên của trang cấu hình Mạng ZeroTier của bạn. bên trong mạng / bit , nhập vào 0.0.0.0/0, bên trong (LAN) , nhập địa chỉ IP của máy chủ ZeroTier của bạn.

Khi các chi tiết được đưa ra, hãy nhấp vào "+"biểu tượng và bạn sẽ thấy một quy tắc mới xuất hiện bên dưới biểu tượng hiện tại. Sẽ có một quả địa cầu màu da cam trong đó để truyền đạt rằng đó thực sự là một tuyến đường toàn cầu:

Global Route Rule

Với mạng ZeroTier của bạn đã sẵn sàng để đến đó chỉ còn một cấu hình được thực hiện trước khi VPN sẽ hoạt động: đó là của các máy khách.

Cấu hình máy khách Linux

Lưu ý: Các lệnh trong phần này chỉ áp dụng cho các máy khách Linux. Hướng dẫn cấu hình máy khách Windows hoặc macOS được cung cấp trong phần tiếp theo.

Nếu khách hàng của bạn đang chạy Linux, bạn sẽ cần thực hiện thay đổi thủ công đối với /etc/sysctl.conf tập tin. Thay đổi cấu hình này là cần thiết để thay đổi quan điểm của hạt nhân về những gì một đường dẫn trả về chấp nhận được cho lưu lượng khách hàng của bạn. Do cách mà ZeroTier VPN được định cấu hình, lưu lượng truy cập từ máy chủ của bạn về máy khách của bạn đôi khi có vẻ xuất phát từ một địa chỉ mạng khác với địa chỉ được gửi đến. Theo mặc định, hạt nhân Linux xem chúng là không hợp lệ và loại bỏ chúng, làm cho nó cần thiết để ghi đè hành vi đó.

Mở /etc/sysctl.conf trên máy khách của bạn:

sudo nano /etc/sysctl.conf

Sau đó thêm dòng sau:

Output. . .

net.ipv4.conf.all.rp_filter=2

Lưu và đóng tệp, sau đó chạy sudo sysctl -p để áp dụng các thay đổi.

sudo sysctl -p

Tiếp theo, hãy nói với phần mềm ZeroTier Client rằng mạng của bạn được phép mang lưu lượng truy cập tuyến mặc định. Điều này sửa đổi định tuyến của khách hàng và do đó được coi là một chức năng đặc quyền, đó là lý do tại sao nó phải được kích hoạt bằng tay. Lệnh sẽ in cấu trúc cấu hình cho đầu ra. Kiểm tra điều này để xác nhận rằng nó hiển thị allowDefault=1 ở trên cùng:

sudo zerotier-cli set NetworkID allowDefault=1

Nếu tại bất kỳ thời điểm nào bạn muốn ngừng sử dụng ZeroTier làm VPN với tất cả lưu lượng truy cập của bạn thông qua nó, hãy đặt allowDefault Quay lại 0:

sudo zerotier-cli set NetworkID allowDefault=0

Mỗi khi dịch vụ ZeroTier trên máy khách được khởi động lại, allowDefault=1 giá trị được đặt lại về 0, vì vậy hãy nhớ thực hiện lại để kích hoạt chức năng VPN.

Theo mặc định, dịch vụ ZeroTier được đặt để khởi động tự động khi khởi động cho cả máy khách Linux và máy chủ. Nếu bạn không muốn điều này xảy ra, bạn có thể vô hiệu hóa thói quen khởi động bằng lệnh sau đây.

sudo systemctl disable zerotier-one

Nếu bạn muốn sử dụng các Hệ điều hành khác trên mạng ZeroTier của bạn thì hãy đọc phần tiếp theo. Nếu không, hãy bỏ qua phần Quản lý dòng.

Định cấu hình ứng dụng khách không phải Linux

Phần mềm máy khách ZeroTier có sẵn cho nhiều hệ thống và không chỉ dành cho các điện thoại thông minh của hệ điều hành Linux được hỗ trợ. Khách hàng tồn tại cho Windows, macOS, Android, iOS và thậm chí cả các hệ điều hành chuyên biệt như QNAP, Synology và WesternDigital NAS.

Để nối các máy khách chạy hệ điều hành MacOS và Windows vào mạng, khởi chạy công cụ ZeroTier (mà bạn đã cài đặt trong Bước 1) và nhập NetworkID của bạn vào trường được cung cấp trước khi nhấp vào Tham gia. Hãy nhớ kiểm tra lại trong bảng điều khiển ZeroTier để đánh dấu vào Cho phép để cho phép một máy chủ lưu trữ mới vào mạng của bạn.

Hãy chắc chắn đánh dấu vào ô có nhãn Định tuyến tất cả lưu lượng truy cập qua ZeroTier. Nếu bạn không, khách hàng của bạn sẽ được gắn vào mạng ZeroTier của bạn nhưng sẽ không bận tâm cố gắng gửi lưu lượng truy cập internet của nó trên nó.

Sử dụng công cụ kiểm tra IP như ICanHazIP để xác minh rằng lưu lượng truy cập của bạn đang xuất hiện trên internet từ IP của máy chủ của bạn. Để kiểm tra điều này, hãy dán URL sau vào thanh địa chỉ của trình duyệt của bạn. Trang web này sẽ hiển thị địa chỉ IP mà máy chủ của nó (và phần còn lại của internet) thấy bạn sử dụng để truy cập trang web:

http://icanhazip.com

Với những bước này hoàn thành, bạn có thể bắt đầu sử dụng VPN của bạn tuy nhiên bạn vui lòng. Phần tùy chọn tiếp theo bao gồm một công nghệ được tích hợp vào SDN ZeroTier được gọi là "quy tắc luồng", nhưng chúng không theo bất kỳ cách nào cần thiết để chức năng VPN hoạt động.

Bước 6 - Quản lý luồng (Tùy chọn)

Một trong những lợi ích của Mạng Phần mềm được Xác định là bộ điều khiển tập trung. Đối với ZeroTier, bộ điều khiển tập trung là Giao diện người dùng Web nằm trên đỉnh dịch vụ SDN ZeroTier tổng thể. Từ giao diện này, có thể viết các quy tắc được gọi là quy tắc lưu lượng xác định lưu lượng truy cập nào trên mạng có thể hoặc không thể thực hiện. Ví dụ, bạn có thể chỉ định một lệnh cấm trên một số cổng mạng nhất định mang lưu lượng qua mạng, giới hạn những máy chủ nào có thể nói chuyện với nhau, và thậm chí là chuyển hướng lưu lượng.

Đây là một khả năng cực kỳ mạnh mẽ có hiệu lực gần như ngay lập tức, vì bất kỳ thay đổi nào được thực hiện cho bảng lưu lượng đều được đẩy ra thành các thành viên mạng và chỉ có hiệu lực sau vài phút. Để chỉnh sửa quy tắc luồng, hãy quay lại Giao diện người dùng web ZeroTier, nhấp vào Mạng và cuộn xuống cho đến khi bạn thấy một hộp có tiêu đề Quy tắc luồng (nó có thể bị sập và cần mở rộng). Thao tác này sẽ mở một trường văn bản nơi bạn có thể nhập bất kỳ quy tắc nào bạn muốn. Một hướng dẫn đầy đủ có sẵn trong bảng điều khiển ZeroTier trong một hộp ngay bên dưới Quy tắc luồng hộp đầu vào, có tiêu đề Trợ giúp về các quy tắc.

Dưới đây là một số quy tắc mẫu để giúp bạn khám phá chức năng này.

Để chặn bất kỳ lưu lượng truy cập nào bị ràng buộc cho Google 8.8.8.8 Máy chủ DNS, thêm quy tắc này:

drop
    ipdest 8.8.8.8/32
;

Để chuyển hướng bất kỳ lưu lượng truy cập nào bị ràng buộc cho máy chủ DNS công cộng của Google đến một trong các nút ZeroTier của bạn, hãy thêm quy tắc sau. Đây có thể là một sự lựa chọn tuyệt vời để ghi đè các lần tra cứu DNS:

redirect NetworkID
    ipdest 8.8.8.8/32
;

Nếu mạng của bạn có các yêu cầu bảo mật đặc biệt, bạn có thể thả bất kỳ hoạt động nào trên các cổng FTP, Telnet và HTTP không được mã hóa bằng cách thêm quy tắc này:

drop
    dport 80,23,21,20
;

Khi bạn đã hoàn tất việc thêm quy tắc luồng, hãy nhấp vào Lưu thay đổi và ZeroTier sẽ ghi lại các thay đổi của bạn.

Phần kết luận

Trong hướng dẫn này, bạn đã thực hiện bước đầu tiên vào thế giới của Mạng Phần mềm được Xác định, và làm việc với ZeroTier cung cấp một số hiểu biết sâu sắc về những lợi ích của công nghệ này. Nếu bạn làm theo ví dụ VPN, thì mặc dù thiết lập ban đầu có thể tương phản với các công cụ khác mà yo có thể đã sử dụng trong quá khứ, việc thêm khách hàng bổ sung có thể là lý do thuyết phục để sử dụng công nghệ ở nơi khác.

Để tóm tắt, bạn đã học cách sử dụng ZeroTier làm nhà cung cấp SDN, cũng như định cấu hình và đính kèm các nút vào mạng đó. Phần tử VPN sẽ cung cấp cho bạn một sự hiểu biết sâu hơn về cách định tuyến trong mạng như vậy hoạt động, và một trong hai đường dẫn trong hướng dẫn này sẽ cho phép bạn sử dụng công nghệ quy tắc luồng mạnh mẽ.

Bây giờ mạng tồn tại, bạn có thể kết hợp nó với một chức năng khác như File Sharing. Nếu bạn có một NAS hoặc máy chủ tập tin ở nhà, bạn có thể liên kết nó với ZeroTier và truy cập nó khi đang di chuyển. Nếu bạn muốn chia sẻ nó với bạn bè, bạn có thể chỉ cho họ cách tham gia mạng ZeroTier của bạn. Nhân viên được phân phối trên một khu vực rộng lớn thậm chí có thể liên kết trở lại cùng một không gian lưu trữ trung tâm. Để bắt đầu xây dựng chia sẻ tệp cho bất kỳ ví dụ nào trong số này, hãy xem Làm thế nào để thiết lập một chia sẻ Samba cho một tổ chức nhỏ trên Ubuntu 16.04.