Mạng riêng ảo (VPN) là mạng riêng an toàn hoạt động trên mạng công cộng lớn hơn như internet. VPN ngày càng trở nên phổ biến trong những năm gần đây, chủ yếu là vì chúng cung cấp khả năng bảo mật và quyền riêng tư được tăng cường mà không cần phải thiết lập phần cứng mới phức tạp và đắt tiền. Chúng cũng cung cấp một số lợi thế khác, bao gồm giảm chi phí mạng và hỗ trợ.
VPN hoạt động bằng cách tạo đường hầm được mã hóa qua mạng công cộng và sử dụng đường hầm này để gửi dữ liệu an toàn giữa các máy chủ và thiết bị đầu cuối. Các kết nối này có thể được mã hóa theo nhiều cách khác nhau và có nhiều trình khách và daemon VPN khác nhau phù hợp với kiến trúc, ngân sách và trình độ kinh nghiệm của bạn.
Tinclà một giải pháp như vậy (1). Là một trình khách VPN mã nguồn mở, hiện có sẵn cho nhiều nền tảng khác nhau và có một số ưu điểm so với các trình khách VPN tương tự. Nó cung cấp mã hóa an toàn và đáng tin cậy, tùy chọn nén và có thể dễ dàng mở rộng khi mạng của bạn phát triển. Định tuyến lưới đầy đủ tự động có nghĩa là lưu lượng VPN luôn (bất cứ khi nào có thể) được gửi trực tiếp đến máy đích, mà không cần trải qua các lần chuyển trung gian, và điều này cải thiện đáng kể tính bảo mậtbằng cách hạn chế khả năng bị đánh cắp dữ liệu (3). Ngoài ra, vì Tinc VPN xuất hiện với mã mạng cấp IP như một thiết bị mạng bình thường, sau khi thiết lập Tinc VPN, không cần phải điều chỉnh phần mềm hiện có. Điều này làm cho Tinc VPN có khả năng mở rộng vốn có.
Vấn đề nhỏ duy nhất với Tinc là một số người thấy hơi khó thiết lập. Nếu bạn thấy giống vậy, đừng lo lắng – hôm nay tôi sẽ hướng dẫn bạn một cách (ít nhiều) không rắc rối để thiết lập và chạy Tinc VPN trên máy chủ của bạn.
Nếu bạn đang xây dựng một hệ thống máy chủ từ đầu, trước tiên bạn cần phảinghĩ về cách các máy của bạn sẽ giao tiếp với nhau. Trong hướng dẫn này, tôi sẽ sử dụng các tên biến mà tôi nghĩ hầu hết mọi người sẽ chọn, nhưng hãy lưu ý rằng bạn có thể cần phải điều chỉnh một số tên biến để phù hợp với thiết lập của riêng bạn.
Nếu bạn muốn làm theo chính xác hướng dẫn này, trước tiên bạn sẽ cần thiết lập hai VPS trong cùng một trung tâm dữ liệu, sau đó tạo một VPS thứ ba trong một trung tâm dữ liệu thứ hai. Trung tâm dữ liệu của tôi được gọi là NYC2, có hai VPS và AMS2, có VPS thứ ba. Các VPS này được gọi như sau:
externalnyc – Tất cả các nút VPN của chúng tôi sẽ kết nối với máy chủ này, nghĩa là máy chủ phải luôn được kết nối và sẵn sàng để đảm bảo mạng hoạt động bình thường. Nếu cuối cùng bạn muốn thêm máy chủ bổ sung vào thiết lập của mình, chúng sẽ cần được thiết lập theo cùng cách như externalnyc.
internalnyc – VPS này kết nối với nút VPN externalnyc bằng giao diện mạng riêng.
ams1 – Đây là kết nối VPN công khai của chúng tôi. Nó kết nối với externalnyc bằng internet công cộng.
Mạng riêng của chúng tôi được biểu thị bằng đường màu xanh lá cây và kết nối cả ba máy chủ. Màu cam là mạng riêng của chúng tôi, liên kết hai máy chủ NYC2 với nhau. Cả ba máy chủ đều có thể kết nối thông qua VPN, mặc dù mạng riêng không thể truy cập được vào AMS1.
Để thực hiện việc này, hãy làm theo các bước sau:
Sau đó, cài đặt Tinc theo cách thông thường thông qua apt:
Và thế là xong! Máy của bạn bây giờ sẽ tải xuống Tinc, cùng với bất kỳ điều kiện tiên quyết nào bạn cần. Bây giờ, chúng ta cần xem xét cấu hình.
Bây giờ đối với mỗi máy chủ của chúng ta. Mỗi máy chủ sẽ cần ba thành phần cấu hình:
Các tệp cấu hình: tinc.conf, tinc-up, tinc-down và một số tệp tùy chọn khác.
Cặp khóa công khai và riêng tư: dùng để mã hóa và xác thực.
Tệp cấu hình máy chủ: Chứa khóa công khai và các thành phần cấu hình VPN khác.
Bây giờ chúng ta hãy cấu hình từng máy chủ của chúng ta theo lượt. Đầu tiên là externalnyc.
Bây giờ hãy mở tinc.conf trong trình soạn thảo văn bản bạn đã chọn:
Khi bạn đã có tệp trước mặt, hãy thêm nội dung sau vào cuối tệp:
Tất cả những gì bạn đang làm ở đây là cấu hình một nút có tên là externalnyc và thông báo cho máy chủ rằng giao diện mạng của nó sẽ sử dụng ipv4 và được gọi là "tun0". Lưu tệp và đóng tệp.
Tiếp theo, chúng ta cần tạo tệp cấu hình máy chủ cho externalnyc. Để thực hiện việc này, hãy mở tệp cấu hình máy chủ trong trình soạn thảo văn bản:
Thêm một số dòng vào cuối tệp này, thay thế địa chỉ IP công khai của VPS của bạn vào dòng đầu tiên:
Đây là tệp mà các máy chủ khác sẽ sử dụng để kết nối với externalnyc. Địa chỉ cho các nút khác biết cách và nơi kết nối với máy chủ này, và địa chỉ mạng con là mạng con mà daemon này sẽ hoạt động. Một lần nữa, hãy lưu các thay đổi của bạn vào tệp này và đóng tệp.
Bây giờ chúng ta cần tạo cặp khóa công khai/riêng tư cho máy chủ này. Điều này khá dễ, chỉ cần chạy:
Điều này tạo ra một khóa RSA riêng tư và thêm một cặp khóa công khai vào cuối tệp cấu hình mà chúng ta vừa tạo. Bạn có thể mở lại tệp để xem điều này đã được thực hiện chưa, nếu bạn muốn.
Bây giờ, chúng ta cần tạo tinc-up, một tập lệnh nhỏ sẽ chạy khi VPN của chúng ta được khởi động. Mở tệp sau để chỉnh sửa:
Và thêm:
Bất cứ khi nào VPN netname được khởi động, tập lệnh này sẽ chạy. Nó sẽ tạo một giao diện mạng để VPN của chúng ta sử dụng và trên VPN này, externalnyc sẽ có IP là 10.0.0.1.
Nhưng khi VPN dừng lại, chúng ta muốn giao diện mạng này biến mất, vì vậy chúng ta cần thêm một tập lệnh nữa. Tập lệnh này sẽ được thêm vào tinc-down. Mở:
Sau đó thêm:
Và lưu lại và thoát. Bây giờ chúng ta đã có các tập lệnh của mình, nhưng để chúng hoạt động, chúng cần được đánh dấu là có thể thực thi. Điều này khá dễ dàng, sử dụng dòng lệnh:
Lưu và thoát, và bạn đã hoàn tất việc cấu hình máy chủ này. Tiếp theo, internalnyc và ams1.
Như chúng ta đã làm với externalnyc ở trên, trước tiên chúng ta cần tạo cấu trúc thư mục cho các tệp cấu hình của mình. Trên mỗi máy chủ, hãy chạy lệnh sau, rồi mở tệp cấu hình Tinc để chỉnh sửa:
Sau đó, thêm một vài dòng vào cuối tệp này, thay thế "node_name" bằng tên của từng nút:
Bạn có thể thấy rằng cả hai máy chủ của chúng ta hiện đã được định cấu hình để cố gắng kết nối với externalnyc. Lưu tệp này và đóng nó lại.
Bây giờ chúng ta cần tạo tệp cấu hình máy chủ. Chạy:
Sau đó, đối với internalnyc, hãy thêm dòng này:
Và đối với ams1, hãy thêm dòng này:
Điểm khác biệt duy nhất ở đây là các địa chỉ khác nhau, do đó chúng ta có thể phân biệt các máy chủ của mình. Lưu tệp này và đóng tệp.
Bây giờ, giống như trước, chúng ta cần tạo cặp khóa công khai/riêng tư và tạo tập lệnh khởi động giao diện mạng. Trên mỗi máy chủ, hãy chạy:
Sau đó:
Bây giờ. Đối với mỗi máy chủ, chúng ta cần sử dụng các địa chỉ đã chỉ định trước đó. Nếu bạn đang theo dõi tôi chính xác, đối với internalnyc, bạn cần thêm:
Và đối với ams1:
Nhưng nếu bạn chỉ định các địa chỉ khác nhau ở trên, hãy thay đổi chúng ở đây. Lưu các tệp này và thoát. Chúng ta gần xong rồi.
Chúng ta chỉ cần làm cho giao diện mạng dừng tập lệnh, giống như trước:
Sau đó thêm dòng này vào cả hai máy chủ:
Và phần cấu hình cuối cùng là làm cho các tập lệnh mới của chúng ta có thể thực thi được:
Lưu và thoát. Phù. Nếu mọi thứ diễn ra tốt đẹp, thì cả ba máy chủ hiện đã được cấu hình. Bây giờ để triển khai mật mã.
Vì vậy, cách dễ nhất để thực hiện việc này là chỉ cần sao chép từng khóa công khai cho tất cả các thành viên của các nút khác nhau. Thực ra, điều này khá dễ, chỉ cần cẩn thận thay đổi giá trị "địa chỉ" trong tệp cấu hình của externalnyc thành địa chỉ IP riêng của nó khi bạn sao chép. Theo cách đó, kết nối sẽ được thiết lập qua mạng riêng.
Nếu bạn làm theo tôi và gọi VPN của mình là "netname", các tệp cấu hình máy chủ nằm ở đây: /etc/tinc/netname/hosts
Sau đó, trên externalnyc, sao chép cùng một tệp vào vị trí thích hợp:
Bây giờ chúng ta thực hiện quy trình ngược lại. Trên externalnyc, sao chép tệp cấu hình máy chủ vào internalnyc:
Sau đó trên internalnyc sao chép tệp để nó ở đúng vị trí:
Bây giờ chúng ta cần chỉnh sửa tệp cấu hình máy chủ của externalnyc trên internalnyc để địa chỉ chính xác. Điều này là để các nút sẽ kết nối với VPN thông qua mạng riêng. Vì vậy, trên internalnyc, hãy mở tệp cấu hình máy chủ cho externalnyc:
Và thay đổi giá trị địa chỉ thành địa chỉ IP riêng của externalnyc, như thế này:
Lưu tệp và thoát. Vậy là xong hai khóa này. Bây giờ chúng ta chỉ cần trao đổi khóa với một nút còn lại của mình.
Sau đó sao chép lại vào đúng vị trí bằng externalnyc:
Giữ nguyên externalnyc, sao chép tệp theo cách khác, sang ams1:
Và một lần nữa, trên ams1, sao chép tệp này vào đúng vị trí:
Và bạn đã hoàn tất việc trao đổi khóa. Về mặt lý thuyết, giờ bạn đã có một VPN hoạt động, được mã hóa thông qua Tinc. Nếu bạn đã làm theo hướng dẫn này một cách chính xác, bạn có thể chuyển sang thử nghiệm thiết lập của mình. Tuy nhiên, nếu bạn cũng đã tận dụng cơ hội để thêm các nút bổ sung, thì bây giờ là thời điểm thích hợp để trao đổi tất cả các khóa mà bạn sẽ cần.
Hãy nhớ rằng nếu bạn đang sử dụng một nút trung tâm, như tôi đang làm ở đây, bạn không cần phải sao chép tất cả các khóa vào tất cả các máy chủ. Tuy nhiên, nếu bạn muốn các nút có thể nói chuyện trực tiếp với nhau, chúng sẽ cần phải trao đổi các khóa. Quy trình thực hiện việc này giống như tôi đã mô tả ở trên – chỉ cần thực hiện nhiều lần lặp lại tùy theo nhu cầu để đạt được kết nối mong muốn.
Để khởi động Tinc ở chế độ gỡ lỗi, trên mỗi nút, bắt đầu bằng externalnyc, hãy chạy:
Tất nhiên, nếu bạn đã gọi VPN của mình bằng một tên khác, hãy đổi biến "netname" thành tên thích hợp.
Sau khi daemon khởi động trên mỗi nút, nó sẽ trả về đầu ra cho bạn biết tên của từng nút khi chúng kết nối. Nếu điều này không xảy ra, thì bạn đã mắc lỗi ở đâu đó.
Bây giờ, chúng ta có thể kiểm tra VPN. Trong một cửa sổ mới trên ams1, hãy ping internalnyc bằng địa chỉ IP của nó. Chúng tôi đã gán lệnh này cho 10.0.0.2 trước đó, vì vậy hãy nhập:
Hy vọng lệnh ping của bạn sẽ hoạt động. Bạn cũng sẽ thấy một số đầu ra gỡ lỗi trong các cửa sổ khác, mô tả các kết nối bạn vừa thực hiện. Ams1 hiện đã được kết nối, thông qua VPN mới của bạn, với externalnyc và có thể kết nối với internalnyc thông qua VPN đó. Nhấn CTRL-C và lệnh ping sẽ dừng lại.
Bây giờ bạn đã có kết nối VPN an toàn, bạn có thể sử dụng nó cho bất kỳ loại giao tiếp mạng nào khác – kết nối ứng dụng, sao chép tệp, SSH hoặc bất kỳ thứ gì khác mà bạn thích.
Nếu lệnh ping của bạn không hoạt động, nhưng bạn nghĩ rằng mình đã làm đúng mọi thứ, thì có thể tường lửa đã cản trở. Hãy kiểm tra cài đặt tường lửa của bạn và thử lại.
Sau đó thêm tên VPN mới của bạn vào tệp này. Nếu bạn chọn "netname" giống tôi, tệp này sẽ trông như sau:
Lưu và thoát, vậy là xong. Tinc hiện đang hoạt động và sẽ khởi động khi khởi động. Làm tốt lắm.
Nếu bạn cần kiểm soát Tinc, bây giờ bạn có thể chạy lệnh "service" để thực hiện việc đó. Trên mỗi nút, chỉ cần chạy:
Và hãy thử nghiệm. Có thể đạt được hầu hết các quyền kiểm soát cơ bản thông qua lệnh này.
Nếu bạn muốn thêm các nút khác trong tương lai hoặc kết hợp Tinc với các VPN khác, Tinc sẽ cho phép bạn thực hiện việc này. Quy trình cho mỗi nút bổ sung giống như tôi đã mô tả ở trên và bạn sẽ có thể dễ dàng xem biến và địa chỉ nào cần thay đổi. Chỉ cần nhớ rằng nếu bạn muốn các nút có thể kết nối trực tiếp với nhau, bạn sẽ cần hoán đổi khóa trực tiếp giữa chúng. Như vậy, Tinc hoạt động như một VPN dạng lưới, an toàn hơn một chút so với cách tiếp cận của tôi. Nếu không, bạn chỉ cần thiết lập mạng của mình như tôi đã làm và để mọi thứ đi qua một nút trung tâm.
Dù bằng cách nào, giờ bạn có thể thoải mái chơi đùa. Chúc may mắn!
(2)https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/
VPN hoạt động bằng cách tạo đường hầm được mã hóa qua mạng công cộng và sử dụng đường hầm này để gửi dữ liệu an toàn giữa các máy chủ và thiết bị đầu cuối. Các kết nối này có thể được mã hóa theo nhiều cách khác nhau và có nhiều trình khách và daemon VPN khác nhau phù hợp với kiến trúc, ngân sách và trình độ kinh nghiệm của bạn.
Tinclà một giải pháp như vậy (1). Là một trình khách VPN mã nguồn mở, hiện có sẵn cho nhiều nền tảng khác nhau và có một số ưu điểm so với các trình khách VPN tương tự. Nó cung cấp mã hóa an toàn và đáng tin cậy, tùy chọn nén và có thể dễ dàng mở rộng khi mạng của bạn phát triển. Định tuyến lưới đầy đủ tự động có nghĩa là lưu lượng VPN luôn (bất cứ khi nào có thể) được gửi trực tiếp đến máy đích, mà không cần trải qua các lần chuyển trung gian, và điều này cải thiện đáng kể tính bảo mậtbằng cách hạn chế khả năng bị đánh cắp dữ liệu (3). Ngoài ra, vì Tinc VPN xuất hiện với mã mạng cấp IP như một thiết bị mạng bình thường, sau khi thiết lập Tinc VPN, không cần phải điều chỉnh phần mềm hiện có. Điều này làm cho Tinc VPN có khả năng mở rộng vốn có.
Vấn đề nhỏ duy nhất với Tinc là một số người thấy hơi khó thiết lập. Nếu bạn thấy giống vậy, đừng lo lắng – hôm nay tôi sẽ hướng dẫn bạn một cách (ít nhiều) không rắc rối để thiết lập và chạy Tinc VPN trên máy chủ của bạn.
Điều kiện tiên quyết
Để làm theo hướng dẫn này một cách đầy đủ, bạn sẽ cần ít nhất ba máy chủ Ubuntu 16.04 và quyền truy cập root trên mỗi máy. Nếu bạn không có hoặc không chắc chắn điều này có nghĩa là gì, thì hướng dẫn này không dành cho bạn - trước tiên bạn nên kiểm tra cách thiết lập máy chủ bằng Ubuntu (2).Nếu bạn đang xây dựng một hệ thống máy chủ từ đầu, trước tiên bạn cần phảinghĩ về cách các máy của bạn sẽ giao tiếp với nhau. Trong hướng dẫn này, tôi sẽ sử dụng các tên biến mà tôi nghĩ hầu hết mọi người sẽ chọn, nhưng hãy lưu ý rằng bạn có thể cần phải điều chỉnh một số tên biến để phù hợp với thiết lập của riêng bạn.
Nếu bạn muốn làm theo chính xác hướng dẫn này, trước tiên bạn sẽ cần thiết lập hai VPS trong cùng một trung tâm dữ liệu, sau đó tạo một VPS thứ ba trong một trung tâm dữ liệu thứ hai. Trung tâm dữ liệu của tôi được gọi là NYC2, có hai VPS và AMS2, có VPS thứ ba. Các VPS này được gọi như sau:
externalnyc – Tất cả các nút VPN của chúng tôi sẽ kết nối với máy chủ này, nghĩa là máy chủ phải luôn được kết nối và sẵn sàng để đảm bảo mạng hoạt động bình thường. Nếu cuối cùng bạn muốn thêm máy chủ bổ sung vào thiết lập của mình, chúng sẽ cần được thiết lập theo cùng cách như externalnyc.
internalnyc – VPS này kết nối với nút VPN externalnyc bằng giao diện mạng riêng.
ams1 – Đây là kết nối VPN công khai của chúng tôi. Nó kết nối với externalnyc bằng internet công cộng.
Mục tiêu
Những gì chúng tôi muốn đạt được là như sau:Mạng riêng của chúng tôi được biểu thị bằng đường màu xanh lá cây và kết nối cả ba máy chủ. Màu cam là mạng riêng của chúng tôi, liên kết hai máy chủ NYC2 với nhau. Cả ba máy chủ đều có thể kết nối thông qua VPN, mặc dù mạng riêng không thể truy cập được vào AMS1.
Để thực hiện việc này, hãy làm theo các bước sau:
Cài đặt Tinc
Trước tiên, chúng ta cần cài đặt Tinc. Như thường lệ, hãy đảm bảo tất cả kho lưu trữ apt của bạn đều được cập nhật bằng cách chạy:
Mã:
sudo apt-get update
Mã:
sudo apt-get install tinc
Cấu hình
Cấu hình Tinc có thể hơi khác so với các VPN khác mà bạn đã quen. Nó sử dụng "netname" để phân biệt các VPN này với nhau. Điều này rất hữu ích khi bạn có nhiều VPN chạy qua Tinc, nhưng lúc đầu thì hơi phản trực giác. Vì đây là mạng Tinc đầu tiên của chúng ta, nên hãy giữ mọi thứ đơn giản và gọi VPN của chúng ta là "netname".Bây giờ đối với mỗi máy chủ của chúng ta. Mỗi máy chủ sẽ cần ba thành phần cấu hình:
Các tệp cấu hình: tinc.conf, tinc-up, tinc-down và một số tệp tùy chọn khác.
Cặp khóa công khai và riêng tư: dùng để mã hóa và xác thực.
Tệp cấu hình máy chủ: Chứa khóa công khai và các thành phần cấu hình VPN khác.
Bây giờ chúng ta hãy cấu hình từng máy chủ của chúng ta theo lượt. Đầu tiên là externalnyc.
Cấu hình externalnyc
Được rồi, bây giờ đến phần chính. Trên externalnyc, hãy bắt đầu bằng cách tạo cấu trúc thư mục cấu hình cho netname VPN. Chạy:
Mã:
sudo mkdir -p /etc/tinc/netname/hosts
Mã:
sudo vi /etc/tinc/netname/tinc.conf
Mã:
Name = externalnycAddressFamily = ipv4Interface = tun0
Tiếp theo, chúng ta cần tạo tệp cấu hình máy chủ cho externalnyc. Để thực hiện việc này, hãy mở tệp cấu hình máy chủ trong trình soạn thảo văn bản:
Mã:
sudo vi /etc/tinc/netname/hosts/externalnyc
Mã:
Address = externalnyc_public_IPSubnet = 10.0.0.1/32
Bây giờ chúng ta cần tạo cặp khóa công khai/riêng tư cho máy chủ này. Điều này khá dễ, chỉ cần chạy:
Mã:
sudo tincd -n netname -K4096
Bây giờ, chúng ta cần tạo tinc-up, một tập lệnh nhỏ sẽ chạy khi VPN của chúng ta được khởi động. Mở tệp sau để chỉnh sửa:
Mã:
sudo vi /etc/tinc/netname/tinc-up
Mã:
#!/bin/shifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0
Nhưng khi VPN dừng lại, chúng ta muốn giao diện mạng này biến mất, vì vậy chúng ta cần thêm một tập lệnh nữa. Tập lệnh này sẽ được thêm vào tinc-down. Mở:
Mã:
sudo vi /etc/tinc/netname/tinc-down
Mã:
#!/bin/shifconfig $INTERFACE down
Mã:
sudo chmod 755 /etc/tinc/netname/tinc-*
Cấu hình internalnyc và ams1
Để cấu hình hai máy chủ còn lại, bạn cần chạy các lệnh giống nhau trên mỗi máy. Có một vài thay đổi nhỏ mà tôi sẽ chỉ ra, nhưng về cơ bản thì quy trình vẫn giống nhau.Như chúng ta đã làm với externalnyc ở trên, trước tiên chúng ta cần tạo cấu trúc thư mục cho các tệp cấu hình của mình. Trên mỗi máy chủ, hãy chạy lệnh sau, rồi mở tệp cấu hình Tinc để chỉnh sửa:
Mã:
sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.conf
Mã:
Name = node_nameAddressFamily = ipv4Interface = tun0ConnectTo = externalnyc
Bây giờ chúng ta cần tạo tệp cấu hình máy chủ. Chạy:
Mã:
sudo vi /etc/tinc/netname/hosts/node_name
Mã:
Subnet = 10.0.0.2/32
Mã:
Subnet = 10.0.0.3/32
Bây giờ, giống như trước, chúng ta cần tạo cặp khóa công khai/riêng tư và tạo tập lệnh khởi động giao diện mạng. Trên mỗi máy chủ, hãy chạy:
Mã:
sudo tincd -n netname -K4096
Mã:
sudo vi /etc/tinc/netname/tinc-up
Mã:
ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0
Mã:
ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0
Chúng ta chỉ cần làm cho giao diện mạng dừng tập lệnh, giống như trước:
Mã:
sudo vi /etc/tinc/netname/tinc-down
Mã:
ifconfig $INTERFACE down
Mã:
sudo chmod 755 /etc/tinc/netname/tinc-*
Phân phối khóa
Nếu bạn đã sử dụng hệ thống quản lý cấu hình, thì bạn thật may mắn. Trong thế giới lý tưởng, mỗi nút mà chúng ta đã tạo cần có khả năng giao tiếp trực tiếp với một nút khác bằng giao diện khóa công khai/riêng tư. Các khóa, như chúng ta đã thấy ở trên, hiện nằm trong các tệp cấu hình máy chủ cho từng máy chủ. Trong mạng đơn giản mà chúng ta đang tạo ở đây, thực tế chỉ có externalnyc cần trao đổi khóa với các nút khác.Vì vậy, cách dễ nhất để thực hiện việc này là chỉ cần sao chép từng khóa công khai cho tất cả các thành viên của các nút khác nhau. Thực ra, điều này khá dễ, chỉ cần cẩn thận thay đổi giá trị "địa chỉ" trong tệp cấu hình của externalnyc thành địa chỉ IP riêng của nó khi bạn sao chép. Theo cách đó, kết nối sẽ được thiết lập qua mạng riêng.
Nếu bạn làm theo tôi và gọi VPN của mình là "netname", các tệp cấu hình máy chủ nằm ở đây: /etc/tinc/netname/hosts
Trao đổi khóa giữa externalnyc và internalnyc
Điều này rất đơn giản. Trên internalnyc, tìm tệp cấu hình máy chủ và sao chép nó vào externalnyc:
Mã:
scp /etc/tinc/netname/hosts/internalnyc user@externalnyc_private_IP:/tmp
Mã:
cd /etc/tinc/netname/hosts; sudo cp /tmp/internalnyc .
Mã:
scp /etc/tinc/netname/hosts/externalnyc user@internalnyc_private_IP:/tmp
Mã:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .
Mã:
sudo vi /etc/tinc/netname/hosts/externalnyc
Mã:
Address = externalnyc_private_IP
Trao đổi khóa giữa externalnyc và ams1
Quy trình ở đây khá giống nhau. Sử dụng ams1, sao chép tệp cấu hình máy chủ vào externalnyc:
Mã:
scp /etc/tinc/netname/hosts/ams1 user@externalnyc_public_IP:/tmp
Mã:
cd /etc/tinc/netname/hosts; sudo cp /tmp/ams1 .
Mã:
scp /etc/tinc/netname/hosts/externalnyc user@ams1_public_IP:/tmp
Mã:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .
Hãy nhớ rằng nếu bạn đang sử dụng một nút trung tâm, như tôi đang làm ở đây, bạn không cần phải sao chép tất cả các khóa vào tất cả các máy chủ. Tuy nhiên, nếu bạn muốn các nút có thể nói chuyện trực tiếp với nhau, chúng sẽ cần phải trao đổi các khóa. Quy trình thực hiện việc này giống như tôi đã mô tả ở trên – chỉ cần thực hiện nhiều lần lặp lại tùy theo nhu cầu để đạt được kết nối mong muốn.
Kiểm tra
Bây giờ bạn đã sẵn sàng để kiểm tra. Để thực hiện việc này, bạn nên khởi động Tinc ở chế độ gỡ lỗi để chúng ta có thể phát hiện bất kỳ lỗi nào và có thêm thông tin nếu có bất kỳ sự cố nào xảy ra. Hãy nhớ rằng một VPN được cấu hình kém thực sự có thể là một rủi ro bảo mật, vì vậy hãy đảm bảo mọi thứ hoạt động bình thường trước khi bạn bắt đầu sử dụng VPN cho bất kỳ mục đích quan trọng nào.Để khởi động Tinc ở chế độ gỡ lỗi, trên mỗi nút, bắt đầu bằng externalnyc, hãy chạy:
Mã:
sudo tincd -n netname -D -d3
Sau khi daemon khởi động trên mỗi nút, nó sẽ trả về đầu ra cho bạn biết tên của từng nút khi chúng kết nối. Nếu điều này không xảy ra, thì bạn đã mắc lỗi ở đâu đó.
Bây giờ, chúng ta có thể kiểm tra VPN. Trong một cửa sổ mới trên ams1, hãy ping internalnyc bằng địa chỉ IP của nó. Chúng tôi đã gán lệnh này cho 10.0.0.2 trước đó, vì vậy hãy nhập:
Mã:
ping 10.0.0.2
Bây giờ bạn đã có kết nối VPN an toàn, bạn có thể sử dụng nó cho bất kỳ loại giao tiếp mạng nào khác – kết nối ứng dụng, sao chép tệp, SSH hoặc bất kỳ thứ gì khác mà bạn thích.
Nếu lệnh ping của bạn không hoạt động, nhưng bạn nghĩ rằng mình đã làm đúng mọi thứ, thì có thể tường lửa đã cản trở. Hãy kiểm tra cài đặt tường lửa của bạn và thử lại.
Tinc On Boot
Chỉ còn một điều cuối cùng. Nếu bây giờ bạn định sử dụng Tinc VPN cho toàn bộ mạng của mình, bạn có thể muốn thiết lập để nó khởi động khi khởi động. Bạn sẽ cần thực hiện việc này trên mỗi nút bằng cách chỉnh sửa tệp cấu hình nets.boot. Mở tệp bằng:
Mã:
sudo vi /etc/tinc/nets.boot
Mã:
# Tệp này chứa tất cả tên của các mạng sẽ được khởi động khi khởi động hệ thống.netname
Nếu bạn cần kiểm soát Tinc, bây giờ bạn có thể chạy lệnh "service" để thực hiện việc đó. Trên mỗi nút, chỉ cần chạy:
Mã:
sudo service tinc start
Kết luận
Bây giờ bạn sẽ có kết nối VPN an toàn chạy qua Tinc trên tất cả các máy của mình. VPN này có thể được sử dụng làm cơ sở để xây dựng thêm chức năng mạng.Nếu bạn muốn thêm các nút khác trong tương lai hoặc kết hợp Tinc với các VPN khác, Tinc sẽ cho phép bạn thực hiện việc này. Quy trình cho mỗi nút bổ sung giống như tôi đã mô tả ở trên và bạn sẽ có thể dễ dàng xem biến và địa chỉ nào cần thay đổi. Chỉ cần nhớ rằng nếu bạn muốn các nút có thể kết nối trực tiếp với nhau, bạn sẽ cần hoán đổi khóa trực tiếp giữa chúng. Như vậy, Tinc hoạt động như một VPN dạng lưới, an toàn hơn một chút so với cách tiếp cận của tôi. Nếu không, bạn chỉ cần thiết lập mạng của mình như tôi đã làm và để mọi thứ đi qua một nút trung tâm.
Dù bằng cách nào, giờ bạn có thể thoải mái chơi đùa. Chúc may mắn!
Tài nguyên
(1) https://www.tinc-vpn.org/(2)https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/