Tinc là phần mềm VPN miễn phí và mã nguồn mở có thể được sử dụng để tạo mạng VPN dạng lưới. Đây là một daemon VPN nhỏ và mạnh mẽ có thể được cài đặt trên nhiều nền tảng. Tinc sử dụng mã hóa và đường hầm để tạo mạng riêng an toàn giữa nhiều máy chủ.
Tinc cung cấp các tính năng bổ sung như mã hóa, nén và định tuyến lưới tự động. Điều này cho phép bạn tạo mạng riêng an toàn và phân tán giữa các máy chủ ở các vị trí khác nhau.
Trong hướng dẫn này, bạn sẽ thiết lập máy chủ VPN ngang hàng với tinc bằng nhiều máy chủ Ubuntu 22.04. Bạn sẽ thiết lập VPN ngang hàng với ba máy chủ khác nhau. Mỗi máy chủ sẽ có thể kết nối thông qua kết nối VPN an toàn.
Cuối hướng dẫn này, bạn sẽ xác minh cài đặt VPN ngang hàng tinc để đảm bảo mỗi máy chủ có thể giao tiếp với nhau thông qua kết nối VPN nội bộ an toàn.
Vậy là xong. Khi các yêu cầu đó đã sẵn sàng, bạn có thể bắt đầu cài đặt tinc trên mỗi máy chủ.
Trong bước này, bạn sẽ cài đặt máy chủ Tinc VPN trên tất cả các máy chủ Ubuntu của mình.
Theo mặc định, gói tinc có sẵn trên kho lưu trữ Ubuntu. Trước khi bắt đầu, hãy cập nhật và làm mới chỉ mục gói Ubuntu của bạn bằng cách nhập lệnh 'apt update' bên dưới.
Xác minh gói 'tinc' có sẵn trên kho lưu trữ Ubuntu 22.04 bằng lệnh apt sau.
Tại thời điểm viết bài này, Kho lưu trữ Ubuntu 22.04 cung cấp tinc v1.0.36.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22688%22%20height=%22406%22%3E%3C/svg%3E
Cài đặt gói 'tinc' bằng cách nhập lệnh 'apt install' bên dưới. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22197%22%3E%3C/svg%3E
Sau khi cài đặt tinc VPN, tiếp theo bạn sẽ thiết lập tường lửa ufw và mở cổng mặc định sẽ được tinc sử dụng.
Đầu tiên, hãy thêm dịch vụ OpenSSH bằng lệnh ufw bên dưới. Đầu ra 'Quy tắc đã cập nhật' xác nhận rằng quy tắc mới đã được thêm vào ufw.
Thêm cổng 655 sẽ được tinc VPN sử dụng bằng cách nhập lệnh sau.
Bây giờ hãy chạy lệnh ufw sau để khởi động và kích hoạt tường lửa ufw. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
Một thông báo đầu ra 'Tường lửa đang hoạt động và được bật khi khởi động hệ thống' xác nhận rằng tường lửa ufw đang chạy và được bật, điều này có nghĩa là ufw cũng sẽ tự động chạy khi hệ thống khởi động.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22241%22%3E%3C/svg%3E
Cuối cùng, hãy xác minh trạng thái tường lửa ufw bằng cách nhập lệnh sau. Đầu ra 'Trạng thái: hoạt động' xác nhận rằng tường lửa đang chạy. Ngoài ra, bất kỳ kết nối nào tới cổng 655 đều được phép.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22534%22%20height=%22205%22%3E%3C/svg%3E
Sau khi cài đặt tinc VPN và bật tường lửa ufw trên tất cả các máy chủ, bạn đã sẵn sàng để thiết lập và cấu hình ngang hàng VPN giữa các máy chủ này.
Dưới đây là danh sách các tác vụ bạn phải thực hiện trên mỗi máy chủ:
Chạy lệnh sau để tạo thư mục dự án VPN mới '/etc/tinc/testVPN/'. Ngoài ra, trong thư mục '/etc/tinc/testVPN/', bạn sẽ tạo thư mục 'hosts'.
Với thư mục '/etc/tinc/testVPN', bạn sẽ thiết lập máy chủ VPN có tên 'testVPN'.
Tiếp theo, tạo tệp cấu hình VPN tinc mới '/etc/tinc/testVPN/tinc.conf' bằng trình chỉnh sửa nano sau lệnh.
Thêm các dòng sau vào tệp. Với các cấu hình này, bạn sẽ đặt tên máy chủ này là 'tinc_ubuntu' và thiết lập tên giao diện cho tinc VPN là 'tun0' và sử dụng IPv4.
Ngoài ra, bạn phải đảm bảo rằng 'Tên' của nút tinc VPN không được sử dụng '-' hoặc dấu trừ. Bạn có thể thay thế dấu trừ '-' bằng dấu gạch dưới '_'.
Lưu và thoát khỏi tệp '/etc/tinc/testVPN/tinc.conf' khi hoàn tất.
Tiếp theo, tạo cấu hình máy chủ mới '/etc/tinc/testVPN/hosts/tinc_ubuntu' bằng lệnh trình chỉnh sửa nano sau. Bạn phải đảm bảo rằng tên tệp cấu hình máy chủ phải khớp với 'Tên' của máy chủ mà bạn đã xác định trong tệp 'tinc.conf'.
Thêm các dòng sau vào tệp. 'Địa chỉ' ở đây là địa chỉ IP bên ngoài của máy chủ này. Và 'Mạng con' là địa chỉ IP bên trong sẽ được sử dụng để chạy tinc VPN. Bạn có thể thay đổi và điều chỉnh địa chỉ IP chi tiết với môi trường của mình.
Lưu và đóng tệp '/etc/tinc/testVPN/hosts/tinc_ubuntu' khi hoàn tất.
Tiếp theo, chạy lệnh 'tincd' sau để tạo khóa công khai và khóa riêng RSA. Khóa công khai RSA sẽ tự động được lưu trữ tại tệp cấu hình máy chủ '/etc/tinc/testVPN/hosts/tinc_ubuntu', và khóa riêng RSA sẽ được lưu trữ tại '/etc/tinc/testVPN/rsa_key.priv'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22303%22%3E%3C/svg%3E
Sau khi khóa công khai và riêng tư RSA được tạo, tiếp theo bạn sẽ tạo một tập lệnh bash mới sẽ được sử dụng để kích hoạt và hủy kích hoạt mạng VPN tinc.
Tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-up' bằng lệnh nano editor sau. Tập lệnh này sẽ được sử dụng để kích hoạt giao diện mạng VPN tinc.
Thêm các dòng sau vào tệp. Hãy đảm bảo thay đổi mạng con của địa chỉ IP bên dưới bằng mạng con mạng VPN đã xác định của bạn trên tệp 'tinc.conf'.
Lưu và đóng tệp '/etc/tinc/testVPN/tinc-up' khi hoàn tất.
Bây giờ hãy tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-down' sẽ được sử dụng để hủy kích hoạt mạng VPN tinc giao diện.
Thêm các dòng sau vào tệp.
Lưu và đóng tệp '/etc/tinc/testVPN/tinc-down' khi hoàn tất.
Bây giờ hãy chạy lệnh chmod bên dưới để thực thi cả hai tập lệnh bash '/etc/tinc/testVPN/tinc-up' và '/etc/tinc/testVPN/tinc-down'.
Bây giờ bạn có thể xác minh danh sách các tệp trong thư mục '/etc/tinc/testVPN/' thông qua lệnh tree bên dưới.
Bạn sẽ nhận được kết quả như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22518%22%20height=%22243%22%3E%3C/svg%3E
Như vậy là bạn đã hoàn tất cấu hình VPN tinc trên máy chủ đầu tiên 'tinc-ubuntu'. Tiếp theo, bạn sẽ thiết lập tinc VPN trên máy chủ 'client1' và 'client2'.
Với thư mục '/etc/tinc/testVPN', bạn sẽ thiết lập máy chủ VPN có tên 'testVPN'.
Tiếp theo, tạo tệp cấu hình VPN tinc mới '/etc/tinc/testVPN/tinc.conf' bằng trình chỉnh sửa nano sau lệnh.
Thêm các dòng sau vào tệp. Với các cấu hình này, bạn sẽ đặt tên máy chủ này là 'client1' và thiết lập tên giao diện cho tinc VPN là 'tun0' và sử dụng IPv4. Ngoài ra, bạn sẽ cho phép tinc VPN 'client1' kết nối với tinc VPN 'tinc_ubuntu' và 'client2'.
Lưu và thoát khỏi tệp '/etc/tinc/testVPN/tinc.conf' khi hoàn tất.
Tiếp theo, tạo cấu hình máy chủ mới '/etc/tinc/testVPN/hosts/client1' bằng lệnh nano editor sau. Bạn phải đảm bảo rằng tên tệp cấu hình máy chủ phải khớp với 'Tên' của máy chủ mà bạn đã xác định trong tệp 'tinc.conf'.
Thêm các dòng sau vào tệp. 'Địa chỉ' ở đây là địa chỉ IP bên ngoài của máy chủ này. Và 'Mạng con' là địa chỉ IP bên trong sẽ được sử dụng để chạy tinc VPN. Bạn có thể thay đổi và điều chỉnh địa chỉ IP chi tiết với môi trường của mình.
Lưu và đóng tệp '/etc/tinc/testVPN/hosts/client1' khi hoàn tất.
Tiếp theo, chạy lệnh 'tincd' sau để tạo khóa công khai và khóa riêng RSA. Khóa công khai RSA sẽ tự động được lưu trữ tại tệp cấu hình máy chủ '/etc/tinc/testVPN/hosts/client1', và khóa riêng RSA sẽ được lưu trữ tại '/etc/tinc/testVPN/rsa_key.priv'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22550%22%3E%3C/svg%3E
Sau khi khóa công khai và riêng tư RSA được tạo, tiếp theo bạn sẽ tạo một tập lệnh bash mới sẽ được sử dụng để kích hoạt và hủy kích hoạt mạng VPN tinc.
Tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-up' bằng lệnh nano editor sau. Tập lệnh này sẽ được sử dụng để kích hoạt giao diện mạng VPN tinc.
Thêm các dòng sau vào tệp. Hãy đảm bảo thay đổi mạng con của địa chỉ IP bên dưới bằng mạng con mạng VPN đã xác định của bạn trên tệp 'tinc.conf'.
Lưu và đóng tệp '/etc/tinc/testVPN/tinc-up' khi hoàn tất.
Bây giờ hãy tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-down' sẽ được sử dụng để hủy kích hoạt mạng VPN tinc giao diện.
Thêm các dòng sau vào tệp.
Lưu và đóng tệp '/etc/tinc/testVPN/tinc-down' khi hoàn tất.
Bây giờ hãy chạy lệnh chmod bên dưới để tạo cả hai tập lệnh bash '/etc/tinc/testVPN/tinc-up' và '/etc/tinc/testVPN/tinc-down' có thể thực thi.
Bây giờ bạn có thể xác minh danh sách các tệp trên thư mục '/etc/tinc/testVPN/' trên nút 'client1' thông qua lệnh cây bên dưới.
Bạn sẽ nhận được kết quả như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22431%22%20height=%22265%22%3E%3C/svg%3E
Với kết quả đó, bạn đã hoàn tất cấu hình VPN tinc trên máy chủ thứ hai 'client1'. Tiếp theo, bạn sẽ thiết lập VPN tinc trên máy chủ 'client2'.
Với thư mục '/etc/tinc/testVPN', bạn sẽ thiết lập máy chủ VPN có tên 'testVPN'.
Tiếp theo, tạo tệp cấu hình VPN tinc mới '/etc/tinc/testVPN/tinc.conf' bằng trình chỉnh sửa nano sau lệnh.
Thêm các dòng sau vào tệp. Với các cấu hình này, bạn sẽ đặt tên máy chủ này là 'client2' và thiết lập tên giao diện cho tinc VPN là 'tun0' và sử dụng IPv4. Ngoài ra, bạn sẽ cho phép tinc VPN 'client2' kết nối với tinc VPN 'tinc_ubuntu' và 'client1'.
Lưu và thoát tệp '/etc/tinc/testVPN/tinc.conf' khi hoàn tất.
Tiếp theo, tạo cấu hình máy chủ mới '/etc/tinc/testVPN/hosts/client2' bằng lệnh nano editor sau. Bạn phải đảm bảo rằng tên tệp cấu hình máy chủ phải khớp với 'Tên' của máy chủ mà bạn đã xác định trong tệp 'tinc.conf'.
Thêm các dòng sau vào tệp. 'Địa chỉ' ở đây là địa chỉ IP bên ngoài của máy chủ này. Và 'Mạng con' là địa chỉ IP bên trong sẽ được sử dụng để chạy tinc VPN. Bạn có thể thay đổi và điều chỉnh địa chỉ IP chi tiết với môi trường của mình.
Lưu và đóng tệp '/etc/tinc/testVPN/hosts/client2' khi hoàn tất.
Tiếp theo, chạy lệnh 'tincd' sau để tạo khóa công khai và khóa riêng RSA. Khóa công khai RSA sẽ tự động được lưu trữ tại tệp cấu hình máy chủ '/etc/tinc/testVPN/hosts/client2', và khóa riêng RSA sẽ được lưu trữ tại '/etc/tinc/testVPN/rsa_key.priv'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22265%22%3E%3C/svg%3E
Sau khi khóa công khai và riêng tư RSA được tạo, tiếp theo bạn sẽ tạo một tập lệnh bash mới sẽ được sử dụng để kích hoạt và hủy kích hoạt mạng VPN tinc.
Tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-up' bằng lệnh nano editor sau. Tập lệnh này sẽ được sử dụng để kích hoạt giao diện mạng VPN tinc.
Thêm các dòng sau vào tệp. Hãy đảm bảo thay đổi mạng con của địa chỉ IP bên dưới bằng mạng con mạng VPN đã xác định của bạn trên tệp 'tinc.conf'.
Lưu và đóng tệp '/etc/tinc/testVPN/tinc-up' khi hoàn tất.
Bây giờ hãy tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-down' sẽ được sử dụng để hủy kích hoạt mạng VPN tinc giao diện.
Thêm các dòng sau vào tệp.
Lưu và đóng tệp '/etc/tinc/testVPN/tinc-down' khi hoàn tất.
Bây giờ hãy chạy lệnh chmod bên dưới để tạo cả hai tập lệnh bash '/etc/tinc/testVPN/tinc-up' và '/etc/tinc/testVPN/tinc-down' có thể thực thi.
Bây giờ bạn có thể xác minh danh sách các tệp trên thư mục '/etc/tinc/testVPN/' trên nút 'client2' thông qua lệnh cây bên dưới.
Bạn sẽ nhận được kết quả như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22426%22%20height=%22242%22%3E%3C/svg%3E
Với điều đó, bạn đã hoàn tất cấu hình VPN tinc trên tất cả các máy chủ Ubuntu của mình. Ở bước tiếp theo, bạn sẽ trao đổi khóa công khai RSA được lưu trữ tại cấu hình máy chủ với từng máy chủ thông qua scp (sao chép an toàn qua SSH).
Dưới đây là thông tin chi tiết về tệp máy chủ mà bạn cần sao chép:
Trên máy chủ 'tinc-ubuntu', hãy chạy lệnh scp sau để sao chép tệp máy chủ '/etc/tinc/testVPN/hosts/tinc_ubuntu' cho cả máy chủ client1 và client2. Thư mục đích phải là thư mục '/etc/tinc/testVPN/hosts/'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22127%22%3E%3C/svg%3E
Trên máy chủ 'client1', hãy chạy lệnh scp sau để sao chép tệp máy chủ '/etc/tinc/testVPN/hosts/client1' vào cả máy chủ tinc-ubuntu và client2. Thư mục đích phải là thư mục '/etc/tinc/testVPN/hosts/'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22185%22%3E%3C/svg%3E
Trên máy chủ 'client2', hãy chạy lệnh scp sau để sao chép tệp máy chủ '/etc/tinc/testVPN/hosts/client2' cho cả máy chủ tinc-ubuntu và client2. Thư mục đích phải là thư mục '/etc/tinc/testVPN/hosts/'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22154%22%3E%3C/svg%3E
Với điều đó, bạn sẽ thấy ba tệp máy chủ trên thư mục '/etc/tinc/testVPN/hosts/' trên mỗi máy chủ. Xác minh danh sách các tệp trên '/etc/tinc/testVPN/hosts/' bằng lệnh tree bên dưới.
Đầu ra - Bạn sẽ thấy tệp máy chủ 'tinc_ubuntu', 'client1' và 'client2' trên mỗi máy chủ.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22542%22%20height=%22184%22%3E%3C/svg%3E
Tại thời điểm này, bạn đã cấu hình tinc VPN trên tất cả các máy chủ và tệp máy chủ cùng khóa công khai RSA đã được sao chép vào tất cả các máy chủ. Với điều này, bạn đã sẵn sàng để xác minh cài đặt VPN tinc cho các kết nối ngang hàng giữa nhiều nút/máy chủ.
Chạy máy chủ VPN tinc trên mỗi máy chủ bằng lệnh sau.
Dưới đây là đầu ra chi tiết từ ba máy chủ Ubuntu tinc-ubuntu, client1, và client2.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22306%22%3E%3C/svg%3E
Tiếp theo, mở phiên thiết bị đầu cuối mới và kết nối với máy chủ 'tinc-ubuntu'. Sau đó, chạy lệnh ping đến địa chỉ IP nội bộ của client1 '10.0.0.2' và client2 '10.0.0.3'.
Khi thành công, bạn sẽ nhận được phản hồi từ mỗi máy chủ.
Bây giờ hãy mở một phiên terminal mới và kết nối đến máy chủ 'client1'. Sau đó, chạy lệnh ping đến địa chỉ IP nội bộ của tinc-ubuntu '10.0.0.1' và client2 '10.0.0.3'.
Khi thành công, bạn sẽ nhận được phản hồi từ mỗi máy chủ.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22597%22%20height=%22416%22%3E%3C/svg%3E
Cuối cùng, hãy mở lại phiên thiết bị đầu cuối mới, kết nối với máy chủ 'client2'. Sau đó, chạy lệnh ping đến địa chỉ IP nội bộ của tinc-ubuntu '10.0.0.1' và client1 '10.0.0.2'.
Khi thành công, bạn sẽ nhận được phản hồi từ từng máy chủ.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22619%22%20height=%22417%22%3E%3C/svg%3E
Bây giờ mỗi máy chủ có thể kết nối với máy chủ kia thông qua địa chỉ IP nội bộ từ tinc VPN. Điều này có nghĩa là việc triển khai tinc VPN để tạo máy chủ VPN ngang hàng đã hoàn tất và thành công.
Quay lại từng phiên thiết bị đầu cuối và nhấn 'Ctrl + \' vào thiết bị đầu cuối để xử lý tinc VPN. Trong bước tiếp theo, bạn sẽ khởi động và kích hoạt tinc VPN như một dịch vụ systemd.
Với lệnh này, máy chủ VPN tinc sẽ chạy ở chế độ nền và cũng sẽ tự động khởi động khi hệ thống khởi động.
Xác minh dịch vụ VPN tinc bằng cách nhập tiện ích lệnh systemctl bên dưới.
Bạn sẽ nhận được đầu ra như thế này - Đầu ra 'active (running)' xác nhận rằng VPN tinc đang chạy, trong khi đầu ra '...; enabled;...' xác nhận rằng VPN tinc được bật và sẽ tự động chạy khi hệ thống khởi động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22264%22%3E%3C/svg%3E
Bạn cũng có thể xác minh giao diện tun0 được tạo bởi máy chủ VPN tinc. Nhập lệnh ip sau trên mỗi máy chủ để kiểm tra chi tiết giao diện tun0.
Trên máy chủ 'tinc-ubuntu', bạn sẽ thấy giao diện tun0 có địa chỉ IP 10.0.0.1. Trên máy 'client1', bạn sẽ thấy giao diện tun0 có địa chỉ IP 10.0.0.2. Cuối cùng, trên máy client2, bạn sẽ nhận được giao diện tun0 có địa chỉ IP 10.0.0.3.
Tinc là phần mềm máy chủ VPN đơn giản nhưng mạnh mẽ có thể cài đặt trên nhiều hệ điều hành. Bạn có thể thêm nhiều máy chủ/nút hơn vào triển khai VPN tinc hiện tại của mình. Ngoài ra, bạn có thể tạo VPN dạng lưới mà không cần dựa vào nút trung tâm.
Tìm hiểu thêm về máy chủ VPN tinc trên tài liệu chính thức của tinc.
Tinc cung cấp các tính năng bổ sung như mã hóa, nén và định tuyến lưới tự động. Điều này cho phép bạn tạo mạng riêng an toàn và phân tán giữa các máy chủ ở các vị trí khác nhau.
Trong hướng dẫn này, bạn sẽ thiết lập máy chủ VPN ngang hàng với tinc bằng nhiều máy chủ Ubuntu 22.04. Bạn sẽ thiết lập VPN ngang hàng với ba máy chủ khác nhau. Mỗi máy chủ sẽ có thể kết nối thông qua kết nối VPN an toàn.
Cuối hướng dẫn này, bạn sẽ xác minh cài đặt VPN ngang hàng tinc để đảm bảo mỗi máy chủ có thể giao tiếp với nhau thông qua kết nối VPN nội bộ an toàn.
Điều kiện tiên quyết
Để hoàn thành hướng dẫn này, bạn phải có các yêu cầu sau:- Hai hoặc nhiều máy chủ Linux với hệ điều hành máy chủ Ubuntu 22.04.
- Người dùng không phải root có quyền quản trị viên sudo/root.
Mã:
Hostname Extrernal IP
------------------------------
tinc-ubuntu 192.168.5.30
client1 192.168.5.120
client2 192.168.5.122
Cài đặt Tinc VPN
tinc là một daemon Mạng riêng ảo (VPN) nhỏ và mạnh mẽ có thể được cài đặt trên nhiều hệ điều hành như Linux, BSD, MacOS hoặc thậm chí là Windows. Tinc cho phép bạn tạo mạng VPN dạng lưới mà không cần dựa vào một nút trung tâm. Tinc VPN sử dụng đường hầm và mã hóa để tạo ra một mạng riêng an toàn giữa các máy chủ trên Internet.Trong bước này, bạn sẽ cài đặt máy chủ Tinc VPN trên tất cả các máy chủ Ubuntu của mình.
Theo mặc định, gói tinc có sẵn trên kho lưu trữ Ubuntu. Trước khi bắt đầu, hãy cập nhật và làm mới chỉ mục gói Ubuntu của bạn bằng cách nhập lệnh 'apt update' bên dưới.
Mã:
sudo apt update
Mã:
sudo apt info tinc
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22688%22%20height=%22406%22%3E%3C/svg%3E
Cài đặt gói 'tinc' bằng cách nhập lệnh 'apt install' bên dưới. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
Mã:
sudo apt install tinc
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22197%22%3E%3C/svg%3E
Sau khi cài đặt tinc VPN, tiếp theo bạn sẽ thiết lập tường lửa ufw và mở cổng mặc định sẽ được tinc sử dụng.
Cấu hình tường lửa UFW
Trong bước này, bạn sẽ thiết lập tường lửa mặc định ufw trên tất cả các máy chủ Ubuntu của mình. Bạn sẽ thêm dịch vụ OpenSSH, thêm cổng VPN tinc, sau đó khởi động và bật tường lửa ufw.Đầu tiên, hãy thêm dịch vụ OpenSSH bằng lệnh ufw bên dưới. Đầu ra 'Quy tắc đã cập nhật' xác nhận rằng quy tắc mới đã được thêm vào ufw.
Mã:
sudo ufw allow OpenSSH
Mã:
sudo ufw allow 655
Mã:
sudo ufw enable
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22241%22%3E%3C/svg%3E
Cuối cùng, hãy xác minh trạng thái tường lửa ufw bằng cách nhập lệnh sau. Đầu ra 'Trạng thái: hoạt động' xác nhận rằng tường lửa đang chạy. Ngoài ra, bất kỳ kết nối nào tới cổng 655 đều được phép.
Mã:
sudo ufw status
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22534%22%20height=%22205%22%3E%3C/svg%3E
Sau khi cài đặt tinc VPN và bật tường lửa ufw trên tất cả các máy chủ, bạn đã sẵn sàng để thiết lập và cấu hình ngang hàng VPN giữa các máy chủ này.
Cấu hình Máy chủ VPN Tinc
Trong bước này, bạn sẽ thiết lập máy chủ VPN ngang hàng giữa ba máy chủ Ubuntu khác nhau thông qua VPN tinc.Dưới đây là danh sách các tác vụ bạn phải thực hiện trên mỗi máy chủ:
- Tạo một thư mục mới sẽ được sử dụng để lưu trữ cấu hình VPN tinc và một thư mục 'hosts' mới để lưu trữ cấu hình máy chủ chi tiết.
- Tạo cấu hình VPN tinc 'tinc.conf' làm cấu hình tinc chính trên mỗi máy chủ.
- Tạo cấu hình máy chủ cho mỗi máy chủ.
- Tạo khóa công khai và khóa riêng sẽ được tinc VPN sử dụng.
- Tạo các tập lệnh bash đơn giản sẽ được sử dụng để kích hoạt giao diện VPN 'tinc-up' hoặc hủy kích hoạt giao diện và mạng VPN 'tinc-down'. Ngoài ra, bạn phải thực thi các tập lệnh 'tinc-up' và 'tinc-down' đó.
Cấu hình máy chủ đầu tiên: tinc-ubuntu
Trước tiên, bạn sẽ thiết lập tinc trên nút/máy chủ đầu tiên 'tinc-ubuntu'.Chạy lệnh sau để tạo thư mục dự án VPN mới '/etc/tinc/testVPN/'. Ngoài ra, trong thư mục '/etc/tinc/testVPN/', bạn sẽ tạo thư mục 'hosts'.
Với thư mục '/etc/tinc/testVPN', bạn sẽ thiết lập máy chủ VPN có tên 'testVPN'.
Mã:
mkdir -p /etc/tinc/testVPN/hosts
Mã:
nano /etc/tinc/testVPN/tinc.conf
Ngoài ra, bạn phải đảm bảo rằng 'Tên' của nút tinc VPN không được sử dụng '-' hoặc dấu trừ. Bạn có thể thay thế dấu trừ '-' bằng dấu gạch dưới '_'.
Mã:
Name = tinc_ubuntu
AddressFamily = ipv4
Interface = tun0
Tiếp theo, tạo cấu hình máy chủ mới '/etc/tinc/testVPN/hosts/tinc_ubuntu' bằng lệnh trình chỉnh sửa nano sau. Bạn phải đảm bảo rằng tên tệp cấu hình máy chủ phải khớp với 'Tên' của máy chủ mà bạn đã xác định trong tệp 'tinc.conf'.
Mã:
nano /etc/tinc/testVPN/hosts/tinc_ubuntu
Mã:
Address = 192.168.5.30
Subnet = 10.0.0.1/32
Tiếp theo, chạy lệnh 'tincd' sau để tạo khóa công khai và khóa riêng RSA. Khóa công khai RSA sẽ tự động được lưu trữ tại tệp cấu hình máy chủ '/etc/tinc/testVPN/hosts/tinc_ubuntu', và khóa riêng RSA sẽ được lưu trữ tại '/etc/tinc/testVPN/rsa_key.priv'.
Mã:
sudo tincd -n testVPN -K4096
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22303%22%3E%3C/svg%3E
Sau khi khóa công khai và riêng tư RSA được tạo, tiếp theo bạn sẽ tạo một tập lệnh bash mới sẽ được sử dụng để kích hoạt và hủy kích hoạt mạng VPN tinc.
Tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-up' bằng lệnh nano editor sau. Tập lệnh này sẽ được sử dụng để kích hoạt giao diện mạng VPN tinc.
Mã:
sudo nano /etc/tinc/testVPN/tinc-up
Mã:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.0.1/32 dev $INTERFACE
ip route add 10.0.0.0/24 dev $INTERFACE
Bây giờ hãy tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-down' sẽ được sử dụng để hủy kích hoạt mạng VPN tinc giao diện.
Mã:
sudo nano /etc/tinc/testVPN/tinc-down
Mã:
#!/bin/sh
ip route del 10.0.0.0/24 dev $INTERFACE
ip addr del 10.0.0.1/32 dev $INTERFACE
ip link set $INTERFACE down
Bây giờ hãy chạy lệnh chmod bên dưới để thực thi cả hai tập lệnh bash '/etc/tinc/testVPN/tinc-up' và '/etc/tinc/testVPN/tinc-down'.
Mã:
sudo chmod +x /etc/tinc/testVPN/tinc-*
Mã:
tree /etc/tinc/testVPN/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22518%22%20height=%22243%22%3E%3C/svg%3E
Như vậy là bạn đã hoàn tất cấu hình VPN tinc trên máy chủ đầu tiên 'tinc-ubuntu'. Tiếp theo, bạn sẽ thiết lập tinc VPN trên máy chủ 'client1' và 'client2'.
Cấu hình máy chủ thứ hai: client1
Chạy lệnh sau để tạo thư mục dự án VPN mới '/etc/tinc/testVPN/'. Ngoài ra, trong thư mục '/etc/tinc/testVPN/', bạn sẽ tạo thư mục 'hosts'.Với thư mục '/etc/tinc/testVPN', bạn sẽ thiết lập máy chủ VPN có tên 'testVPN'.
Mã:
mkdir -p /etc/tinc/testVPN/hosts
Mã:
nano /etc/tinc/testVPN/tinc.conf
Mã:
Name = client1
AddressFamily = ipv4
Interface = tun0
ConnectTo = tinc_ubuntu
ConnectTo = client2
Tiếp theo, tạo cấu hình máy chủ mới '/etc/tinc/testVPN/hosts/client1' bằng lệnh nano editor sau. Bạn phải đảm bảo rằng tên tệp cấu hình máy chủ phải khớp với 'Tên' của máy chủ mà bạn đã xác định trong tệp 'tinc.conf'.
Mã:
sudo nano /etc/tinc/testVPN/hosts/client1
Mã:
Address = 192.168.5.120
Subnet = 10.0.0.2/32
Tiếp theo, chạy lệnh 'tincd' sau để tạo khóa công khai và khóa riêng RSA. Khóa công khai RSA sẽ tự động được lưu trữ tại tệp cấu hình máy chủ '/etc/tinc/testVPN/hosts/client1', và khóa riêng RSA sẽ được lưu trữ tại '/etc/tinc/testVPN/rsa_key.priv'.
Mã:
sudo tincd -n testVPN -K4096
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22550%22%3E%3C/svg%3E
Sau khi khóa công khai và riêng tư RSA được tạo, tiếp theo bạn sẽ tạo một tập lệnh bash mới sẽ được sử dụng để kích hoạt và hủy kích hoạt mạng VPN tinc.
Tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-up' bằng lệnh nano editor sau. Tập lệnh này sẽ được sử dụng để kích hoạt giao diện mạng VPN tinc.
Mã:
sudo nano /etc/tinc/testVPN/tinc-up
Mã:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.0.2/32 dev $INTERFACE
ip route add 10.0.0.0/24 dev $INTERFACE
Bây giờ hãy tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-down' sẽ được sử dụng để hủy kích hoạt mạng VPN tinc giao diện.
Mã:
sudo nano /etc/tinc/testVPN/tinc-down
Mã:
#!/bin/sh
ip route del 10.0.0.0/24 dev $INTERFACE
ip addr del 10.0.0.2/32 dev $INTERFACE
ip link set $INTERFACE down
Bây giờ hãy chạy lệnh chmod bên dưới để tạo cả hai tập lệnh bash '/etc/tinc/testVPN/tinc-up' và '/etc/tinc/testVPN/tinc-down' có thể thực thi.
Mã:
sudo chmod +x /etc/tinc/testVPN/tinc-*
Mã:
tree /etc/tinc/testVPN/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22431%22%20height=%22265%22%3E%3C/svg%3E
Với kết quả đó, bạn đã hoàn tất cấu hình VPN tinc trên máy chủ thứ hai 'client1'. Tiếp theo, bạn sẽ thiết lập VPN tinc trên máy chủ 'client2'.
Cấu hình máy chủ thứ ba: client2
Chạy lệnh sau để tạo thư mục dự án VPN mới '/etc/tinc/testVPN/'. Ngoài ra, trong thư mục '/etc/tinc/testVPN/', bạn sẽ tạo thư mục 'hosts'.Với thư mục '/etc/tinc/testVPN', bạn sẽ thiết lập máy chủ VPN có tên 'testVPN'.
Mã:
mkdir -p /etc/tinc/testVPN/hosts
Mã:
nano /etc/tinc/testVPN/tinc.conf
Mã:
Name = client2
AddressFamily = ipv4
Interface = tun0
ConnectTo = tinc_ubuntu
ConnectTo = client1
Tiếp theo, tạo cấu hình máy chủ mới '/etc/tinc/testVPN/hosts/client2' bằng lệnh nano editor sau. Bạn phải đảm bảo rằng tên tệp cấu hình máy chủ phải khớp với 'Tên' của máy chủ mà bạn đã xác định trong tệp 'tinc.conf'.
Mã:
sudo nano /etc/tinc/testVPN/hosts/client2
Mã:
Address = 192.168.5.122
Subnet = 10.0.0.3/32
Tiếp theo, chạy lệnh 'tincd' sau để tạo khóa công khai và khóa riêng RSA. Khóa công khai RSA sẽ tự động được lưu trữ tại tệp cấu hình máy chủ '/etc/tinc/testVPN/hosts/client2', và khóa riêng RSA sẽ được lưu trữ tại '/etc/tinc/testVPN/rsa_key.priv'.
Mã:
sudo tincd -n testVPN -K4096
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22265%22%3E%3C/svg%3E
Sau khi khóa công khai và riêng tư RSA được tạo, tiếp theo bạn sẽ tạo một tập lệnh bash mới sẽ được sử dụng để kích hoạt và hủy kích hoạt mạng VPN tinc.
Tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-up' bằng lệnh nano editor sau. Tập lệnh này sẽ được sử dụng để kích hoạt giao diện mạng VPN tinc.
Mã:
sudo nano /etc/tinc/testVPN/tinc-up
Mã:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 10.0.0.3/32 dev $INTERFACE
ip route add 10.0.0.0/24 dev $INTERFACE
Bây giờ hãy tạo một tập lệnh bash mới '/etc/tinc/testVPN/tinc-down' sẽ được sử dụng để hủy kích hoạt mạng VPN tinc giao diện.
Mã:
sudo nano /etc/tinc/testVPN/tinc-down
Mã:
#!/bin/sh
ip route del 10.0.0.0/24 dev $INTERFACE
ip addr del 10.0.0.3/32 dev $INTERFACE
ip link set $INTERFACE down
Bây giờ hãy chạy lệnh chmod bên dưới để tạo cả hai tập lệnh bash '/etc/tinc/testVPN/tinc-up' và '/etc/tinc/testVPN/tinc-down' có thể thực thi.
Mã:
sudo chmod +x /etc/tinc/testVPN/tinc-*
Mã:
tree /etc/tinc/testVPN/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22426%22%20height=%22242%22%3E%3C/svg%3E
Với điều đó, bạn đã hoàn tất cấu hình VPN tinc trên tất cả các máy chủ Ubuntu của mình. Ở bước tiếp theo, bạn sẽ trao đổi khóa công khai RSA được lưu trữ tại cấu hình máy chủ với từng máy chủ thông qua scp (sao chép an toàn qua SSH).
Trao đổi khóa giữa các máy chủ/máy chủ
Ở bước này, bạn sẽ sao chép tệp cấu hình máy chủ trên từng máy chủ với nhau thông qua SCP. Điều này bao gồm RSA public được lưu trữ trong tệp cấu hình máy chủ.Dưới đây là thông tin chi tiết về tệp máy chủ mà bạn cần sao chép:
- Sao chép tệp máy chủ từ máy chủ 'tinc-ubuntu' sang máy chủ client1 và client2.
- Sao chép tệp máy chủ từ máy chủ 'client1' sang máy chủ tinc-ubuntu và client2.
- Sao chép tệp máy chủ từ máy chủ 'client2' sang máy chủ tinc-ubuntu và client1.
Trên máy chủ 'tinc-ubuntu', hãy chạy lệnh scp sau để sao chép tệp máy chủ '/etc/tinc/testVPN/hosts/tinc_ubuntu' cho cả máy chủ client1 và client2. Thư mục đích phải là thư mục '/etc/tinc/testVPN/hosts/'.
Mã:
scp /etc/tinc/testVPN/hosts/tinc_ubuntu [emailprotected]:/etc/tinc/testVPN/hosts/
scp /etc/tinc/testVPN/hosts/tinc_ubuntu [emailprotected]:/etc/tinc/testVPN/hosts/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22127%22%3E%3C/svg%3E
Trên máy chủ 'client1', hãy chạy lệnh scp sau để sao chép tệp máy chủ '/etc/tinc/testVPN/hosts/client1' vào cả máy chủ tinc-ubuntu và client2. Thư mục đích phải là thư mục '/etc/tinc/testVPN/hosts/'.
Mã:
scp /etc/tinc/testVPN/hosts/client1 [emailprotected]:/etc/tinc/testVPN/hosts/
scp /etc/tinc/testVPN/hosts/client1 [emailprotected]:/etc/tinc/testVPN/hosts/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22185%22%3E%3C/svg%3E
Trên máy chủ 'client2', hãy chạy lệnh scp sau để sao chép tệp máy chủ '/etc/tinc/testVPN/hosts/client2' cho cả máy chủ tinc-ubuntu và client2. Thư mục đích phải là thư mục '/etc/tinc/testVPN/hosts/'.
Mã:
scp /etc/tinc/testVPN/hosts/client2 [emailprotected]:/etc/tinc/testVPN/hosts/
scp /etc/tinc/testVPN/hosts/client2 [emailprotected]:/etc/tinc/testVPN/hosts/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22154%22%3E%3C/svg%3E
Với điều đó, bạn sẽ thấy ba tệp máy chủ trên thư mục '/etc/tinc/testVPN/hosts/' trên mỗi máy chủ. Xác minh danh sách các tệp trên '/etc/tinc/testVPN/hosts/' bằng lệnh tree bên dưới.
Mã:
tree /etc/tinc/testVPN/hosts/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22542%22%20height=%22184%22%3E%3C/svg%3E
Tại thời điểm này, bạn đã cấu hình tinc VPN trên tất cả các máy chủ và tệp máy chủ cùng khóa công khai RSA đã được sao chép vào tất cả các máy chủ. Với điều này, bạn đã sẵn sàng để xác minh cài đặt VPN tinc cho các kết nối ngang hàng giữa nhiều nút/máy chủ.
Kiểm tra máy chủ VPN ngang hàng
Trong bước này, bạn sẽ xác minh cài đặt VPN tinc bằng cách chạy tinc theo cách thủ công từ lệnh và ping từ máy chủ này sang máy chủ khác bằng địa chỉ IP cục bộ của giao diện tun0 từ máy chủ VPN tinc.Chạy máy chủ VPN tinc trên mỗi máy chủ bằng lệnh sau.
Mã:
sudo tincd -n testVPN -D -d3
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22306%22%3E%3C/svg%3E
Tiếp theo, mở phiên thiết bị đầu cuối mới và kết nối với máy chủ 'tinc-ubuntu'. Sau đó, chạy lệnh ping đến địa chỉ IP nội bộ của client1 '10.0.0.2' và client2 '10.0.0.3'.
Mã:
ping 10.0.0.1 -c3
ping 10.0.0.2 -c3
Bây giờ hãy mở một phiên terminal mới và kết nối đến máy chủ 'client1'. Sau đó, chạy lệnh ping đến địa chỉ IP nội bộ của tinc-ubuntu '10.0.0.1' và client2 '10.0.0.3'.
Mã:
ping 10.0.0.1 -c3
ping 10.0.0.3 -c3
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22597%22%20height=%22416%22%3E%3C/svg%3E
Cuối cùng, hãy mở lại phiên thiết bị đầu cuối mới, kết nối với máy chủ 'client2'. Sau đó, chạy lệnh ping đến địa chỉ IP nội bộ của tinc-ubuntu '10.0.0.1' và client1 '10.0.0.2'.
Mã:
ping 10.0.0.1 -c3
ping 10.0.0.2 -c3
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22619%22%20height=%22417%22%3E%3C/svg%3E
Bây giờ mỗi máy chủ có thể kết nối với máy chủ kia thông qua địa chỉ IP nội bộ từ tinc VPN. Điều này có nghĩa là việc triển khai tinc VPN để tạo máy chủ VPN ngang hàng đã hoàn tất và thành công.
Quay lại từng phiên thiết bị đầu cuối và nhấn 'Ctrl + \' vào thiết bị đầu cuối để xử lý tinc VPN. Trong bước tiếp theo, bạn sẽ khởi động và kích hoạt tinc VPN như một dịch vụ systemd.
Khởi động và kích hoạt dịch vụ Tinc VPN
Chạy tiện ích lệnh systemctl sau để khởi động và kích hoạt dịch vụ tinc VPN. Hãy đảm bảo chạy lệnh này trên tất cả các máy chủ Ubuntu của bạn. Trong ví dụ này, tên VPN ở đây là 'testVPN'. Bạn có thể thay đổi tên này bằng tên bạn thích.Với lệnh này, máy chủ VPN tinc sẽ chạy ở chế độ nền và cũng sẽ tự động khởi động khi hệ thống khởi động.
Mã:
sudo systemctl start tinc@testVPN
sudo systemctl enable tinc@testVPN
Mã:
sudo systemctl status tinc@testVPN
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22264%22%3E%3C/svg%3E
Bạn cũng có thể xác minh giao diện tun0 được tạo bởi máy chủ VPN tinc. Nhập lệnh ip sau trên mỗi máy chủ để kiểm tra chi tiết giao diện tun0.
Mã:
ip addr show tun0
Kết luận
Trong hướng dẫn này, bạn đã học cách tạo và thiết lập VPN ngang hàng bằng máy chủ VPN tinc trên máy chủ Ubuntu 22.04. Bạn đã học các quy trình chi tiết để thiết lập VPN tinc với tường lửa được bật trên nhiều máy chủ Ubuntu.Tinc là phần mềm máy chủ VPN đơn giản nhưng mạnh mẽ có thể cài đặt trên nhiều hệ điều hành. Bạn có thể thêm nhiều máy chủ/nút hơn vào triển khai VPN tinc hiện tại của mình. Ngoài ra, bạn có thể tạo VPN dạng lưới mà không cần dựa vào nút trung tâm.
Tìm hiểu thêm về máy chủ VPN tinc trên tài liệu chính thức của tinc.