Wireguard là một giao thức VPN miễn phí và mã nguồn mở thay thế cho IPSec, IKEv2 và OpenVPN. Wiruguard được thiết kế cho các hệ điều hành Linux và Unix. Nó chạy trên không gian hạt nhân Linux, giúp Wireguard nhanh hơn và đáng tin cậy hơn. Wireguard được sử dụng để tạo các kết nối đường hầm an toàn giữa hai máy tính trở lên.
Wireguard hướng đến mục tiêu thay thế các giao thức VPN như IPSec, IKEv2 và OpenVPN. Wireguard nhẹ hơn, nhanh hơn, dễ thiết lập và hiệu quả hơn. Đồng thời, Wiregurad không hy sinh khía cạnh bảo mật của giao thức VPN. Wireguard hỗ trợ mật mã hiện đại như khuôn khổ giao thức Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF và các cấu trúc an toàn, đáng tin cậy.
So với các giao thức VPN khác như OpenVPN, IPSec và IKEv2, wireguard là một giao thức VPN mới. Wireguard được Jason A. Donenfeld phát hành vào năm 2015 như một giao thức VPN thay thế. Nó được Linus Torvalds hợp nhất vào nhân Linux v5.6 vào năm 2020 và cũng được chuyển sang FreeBSD 13 trong cùng năm.
Trong hướng dẫn này, bạn sẽ cài đặt và thiết lập máy chủ VPN thông qua Wireguard trên máy chủ Debian 11. Bạn sẽ thiết lập máy chủ Wireguard VPN với máy chủ Debian 11, sau đó thiết lập máy khách để kết nối với máy chủ Wireguard VPN.
Đối với máy khách, bạn có thể sử dụng bất kỳ bản phân phối Linux nào, nhưng ví dụ này sử dụng máy Debian.
Sau khi kho lưu trữ Debian được cập nhật, hãy chạy lệnh apt bên dưới để cài đặt gói Wireguard trên máy chủ Debian của bạn. Lệnh này cũng sẽ cài đặt gói wireguard-tools được sử dụng để quản lý cài đặt máy chủ Wireguard của bạn.
Khi được nhắc xác nhận, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục. Bây giờ quá trình cài đặt sẽ bắt đầu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22675%22%20height=%22287%22%3E%3C/svg%3E
Sau khi cài đặt Wireguard trên máy chủ, bạn đã sẵn sàng tạo cặp khóa Công khai và Riêng tư cho máy chủ và máy khách Wireguard.
Cặp khóa cho máy chủ sẽ được máy chủ Wireguard sử dụng và máy khách sẽ sử dụng cặp khóa cho máy khách. Nếu bạn có nhiều máy khách, bạn cần tạo nhiều cặp khóa cho máy khách của mình.
Trong ví dụ này, bạn sẽ tạo khóa riêng '/etc/wireguard/server.key'.
Sau đó, bạn sẽ nhận được khóa base64 ngẫu nhiên đầu ra trên màn hình thiết bị đầu cuối của mình.
Tiếp theo, hãy chạy lệnh bên dưới 'wg pubkey' để tạo khóa công khai máy chủ mới thành '/etc/wireguard/server.pub'. Khóa công khai của máy chủ được lấy từ khóa riêng của máy chủ '/etc/wireguard/server.key'.
Sau đó, bạn sẽ nhận được đầu ra của khóa công khai base64 ngẫu nhiên trên thiết bị đầu cuối của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E
Bây giờ bạn đã tạo cặp khóa công khai và riêng tư cho máy chủ Wireguard. Khóa riêng tư nằm tại '/etc/wireguard/server.key', và khóa công khai nằm tại '/etc/wireguard/server.pub'.
Chạy lệnh cat bên dưới để hiển thị và xác minh cặp khóa đã tạo cho máy chủ Wireguard.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22149%22%3E%3C/svg%3E
Quy trình tạo cặp khóa cho máy chủ và máy khách là giống nhau, sử dụng lệnh 'wg genkey' để tạo khóa riêng và sử dụng lệnh 'wg pubkey' để tạo khóa công khai, được lấy từ khóa riêng.
Bây giờ hãy chạy lệnh bên dưới để tạo thư mục mới '/etc/wireguard/clients'. Thư mục này sẽ được sử dụng để lưu trữ cặp khóa máy khách.
Chạy lệnh 'wg genkey' bên dưới để tạo khóa riêng của máy khách tới '/etc/wireguard/clients/client1.key'. Sau đó, tạo khóa công khai của khách hàng thông qua lệnh 'wg pubkey' tới '/etc/wireguard/clients/client1.pub'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22150%22%3E%3C/svg%3E
Bây giờ cặp khóa của khách hàng đã được tạo, Khóa công khai nằm tại '/etc/wireguard/clients/client1.pub' và khóa riêng tư là '/etc/wireguard/clients/client1.key'. Chạy lệnh bên dưới để hiển thị và xác minh cặp khóa đã tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22674%22%20height=%22180%22%3E%3C/svg%3E
Trong ví dụ này, máy chủ Wireguard VPN sẽ có địa chỉ IP với mạng con '10.8.0.2/24' và tắt IPv6 cho Wireguard VPN.
Tạo tệp cấu hình Wireguard mới '/etc/wireguard/wg0.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Đầu tiên, thêm các dòng sau vào tệp để xác định chi tiết máy chủ Wirguard. Và hãy chắc chắn thay đổi 'PrivateKey' bằng khóa private của máy chủ Wirguard là 'server.key'. Với điều này, giao diện máy chủ Wireguard sẽ chạy trên địa chỉ IP '10.8.0.1', mở cổng UDP 51820 có sẵn để máy khách kết nối và tham số SaveConfig sẽ đảm bảo mọi thay đổi sẽ được lưu vào tệp cấu hình, ngay cả khi giao diện Wireguard tắt.
Tiếp theo, thêm các dòng bên dưới để xác định kết nối ngang hàng máy khách. Thay đổi tham số 'PublicKey' bằng khóa công khai của máy khách 'client1.pub'. Và tham số 'AllowedIPs' sẽ chỉ định máy khách Wireguard nào được phép truy cập vào đối tác này. Trong ví dụ này, chỉ những máy khách có IP '10.8.0.2' mới được phép truy cập vào kết nối đối tác này. Tuy nhiên, bạn cũng có thể cho phép phạm vi các mạng con như '10.8.0.0/24'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Sau khi tạo tệp cấu hình máy chủ Wireguard và thêm kết nối ngang hàng máy khách, tiếp theo bạn sẽ thiết lập chuyển tiếp cổng trên máy chủ Weireguard và thiết lập tường lửa để thiết lập định tuyến lưu lượng truy cập.
Để bắt đầu, hãy mở tệp cấu hình '/etc/sysctl.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào tệp. Thao tác này sẽ bật chuyển tiếp cổng trên máy chủ Wireguard của bạn. Bạn có thể sử dụng cả IPv4 và IPv6 hoặc bạn có thể sử dụng IPv4 nếu bạn đã tắt IPv6 trên máy chủ Wireguard của mình.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Tiếp theo, chạy tiện ích lệnh sysctl bên dưới để áp dụng các thay đổi.
Bạn sẽ nhận được đầu ra như thế này - Chuyển tiếp cổng phải được bật ngay lập tức.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22554%22%20height=%22178%22%3E%3C/svg%3E
Với Chuyển tiếp cổng được bật trên máy chủ Wireguard, tiếp theo bạn sẽ thiết lập tường lửa để định tuyến lưu lượng truy cập của máy khách Wireguard đến giao diện mạng cụ thể.
Đầu tiên, hãy chạy lệnh apt bên dưới để cài đặt gói tường lửa ufw trên máy chủ Debian của bạn.
Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22689%22%20height=%22340%22%3E%3C/svg%3E
Sau khi ufw được cài đặt, hãy chạy lệnh bên dưới để mở dịch vụ SSH và bật tường lửa ufw.
Khi được nhắc xác nhận bật tường lửa ufw, hãy nhập y và nhấn ENTER. Tường lửa ufw hiện đang chạy trên hệ thống của bạn và cũng đã được bật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22745%22%20height=%22203%22%3E%3C/svg%3E
Bây giờ hãy xác minh trạng thái tường lửa ufw thông qua lệnh bên dưới. Bạn sẽ nhận được đầu ra như 'Trạng thái: hoạt động', nghĩa là trạng thái tường lửa ufw đang chạy.
Khi tường lửa ufw đang chạy, tiếp theo bạn sẽ cấu hình nó để định tuyến các kết nối máy khách Wireguard đến giao diện mạng cụ thể.
Bây giờ hãy chạy lệnh bên dưới để kiểm tra giao diện bảng định tuyến mặc định trên máy chủ Wireguard. Hầu hết, điều này sẽ phát hiện ra một giao diện được sử dụng để truy cập internet hoặc nơi có địa chỉ IP công khai trên đó.
Bạn sẽ nhận được đầu ra như thế này - Ví dụ này là giao diện eth0 là bảng định tuyến mặc định cho máy chủ Wireguard. Và đây là giao diện được sử dụng để truy cập Internet. Bạn có thể có một tên giao diện khác.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22484%22%20height=%22126%22%3E%3C/svg%3E
Tiếp theo, mở tệp cấu hình máy chủ Wireguard '/etc/wireguard/wg0.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào Phần '[Giao diện]'.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Cuối cùng, hãy chạy lệnh bên dưới để tải lại tường lửa ufw và áp dụng các thay đổi. Sau đó, xác minh danh sách các quy tắc ufw thông qua lệnh bên dưới.
Bạn sẽ nhận được đầu ra như ảnh chụp màn hình này - Cổng UDP 51820 mà máy chủ Wireguard sẽ sử dụng cho các kết nối máy khách được thêm vào tường lửa ufw.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22533%22%20height=%22335%22%3E%3C/svg%3E
Bây giờ, bạn đã bật Port-Forwarding và cấu hình tường lửa trên máy chủ Wireguard. Bây giờ bạn đã sẵn sàng để khởi động máy chủ Wireguard.
Chạy tiện ích lệnh systemctl bên dưới để khởi động và bật dịch vụ Wireguard. Dịch vụ '[emailprotected]' sẽ tạo và kích hoạt giao diện Wireguard 'wg0' trên máy chủ Wireguard của bạn.
Bây giờ hãy xác minh dịch vụ Wireguard thông qua lệnh bên dưới.
Bạn sẽ nhận được đầu ra tương tự như ảnh chụp màn hình sau - Dịch vụ Wireguard '[emailprotected]' đang chạy và được bật. Điều này cũng có nghĩa là giao diện 'wg0' đã được tạo và đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22218%22%3E%3C/svg%3E
Chạy lệnh bên dưới để xác minh giao diện 'wg0' trên máy chủ Wireguard của bạn.
Bạn sẽ nhận được kết quả như thế này - Giao diện Wireguard wg0 nhận được một địa chỉ IP '10.8.0.1', như được mô tả trong tệp cấu hình Wireguard '/etc/wireguard/wg0.conf'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22574%22%20height=%22176%22%3E%3C/svg%3E
Ngoài ra, bạn cũng có thể khởi động và dừng Wireguard thông qua lệnh 'wg-quick' như bên dưới. Lệnh 'wg-quick up' sẽ khởi động máy chủ Wireguard và lệnh 'wg-quick down' sẽ dừng máy chủ Wireguard.
Khi máy chủ Wireguard đang chạy, tiếp theo bạn sẽ thiết lập máy khách và kết nối máy khách đó với máy chủ Wireguard.
Cài đặt gói 'wireguard-tools' trên máy khách. Điều này sử dụng Debian làm máy khách, do đó lệnh APT sẽ được sử dụng.
Quá trình cài đặt sẽ tự động bắt đầu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22288%22%3E%3C/svg%3E
Sau khi wireguard-tools được cài đặt, hãy tạo một tệp cấu hình mới '/etc/wireguard/wg-client1.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào tệp.
Lưu và đóng tệp khi hoàn tất.
Trong phần '[Giao diện]', bạn phải xác định những điều sau:
Bạn sẽ nhận được kết quả tương tự như ảnh chụp màn hình này - Giao diện Wireguard mới 'wg-client1' sẽ được tạo và máy khách sẽ được kết nối với máy chủ Wireguard đang chạy trên 'SERVER-IP:51820'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22539%22%20height=%22367%22%3E%3C/svg%3E
Chạy lệnh bên dưới để xác minh giao diện Wireguard 'wg-client1'.
Bạn sẽ nhận được kết quả như thế này - Giao diện wg-client1 có địa chỉ IP '10.8.0.2', là một phần của mạng con của máy chủ Wireguard '10.8.0.0/24'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22634%22%20height=%22166%22%3E%3C/svg%3E
Bạn cũng có thể xác minh kết nối Wireguard thông qua lệnh 'wg show'.
Chạy lệnh 'wg show' bên dưới trên máy khách và bạn sẽ nhận được kết quả như sau cái này.
Nếu bạn được kết nối với máy chủ Wireguard phù hợp, bạn sẽ thấy địa chỉ IP của máy chủ Wirguard trên phần 'điểm cuối' và thấy khóa công khai của máy chủ Wirguard 'server.pub'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22572%22%20height=%22344%22%3E%3C/svg%3E
Bây giờ hãy di chuyển đến máy chủ Wireguard và chạy lệnh 'wg show'.
Bạn sẽ nhận được đầu ra tương tự như sau - Trên phần điểm cuối, bạn sẽ thấy địa chỉ IP công khai của máy khách và trên phần ngang hàng, bạn sẽ thấy khóa công khai của máy khách 'client1.pub'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22605%22%20height=%22311%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để đảm bảo rằng máy khách có thể truy cập internet hoặc truy cập mạng con nội bộ của Wireguard VPN.
Dưới đây là kết quả đầu ra bạn sẽ nhận được:
Máy khách có thể kết nối với máy chủ Wireguard bằng địa chỉ IP '10.8.0.1'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22587%22%20height=%22311%22%3E%3C/svg%3E
Máy khách có thể truy cập internet. Tất cả lưu lượng được định tuyến qua địa chỉ IP công khai của máy chủ Wireguard.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22583%22%20height=%22284%22%3E%3C/svg%3E
Bây giờ nếu bạn muốn dừng Wrieguard trên máy khách, bạn có thể chạy lệnh 'wg-quick down' bên dưới
Bạn sẽ nhận được đầu ra như thế này. Ngoài ra, giao diện wg-client1 sẽ biến mất khỏi máy khách.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22591%22%20height=%22265%22%3E%3C/svg%3E
Bây giờ bạn đã cấu hình Wirguard VPN trên máy khách. Bạn cũng đã xác minh kết nối giữa máy khách với máy chủ Wireguard.
Chi tiết hơn, bạn đã cài đặt gói Wireguard VPN, tạo cặp khóa công khai và khóa riêng cho cả máy chủ và máy khách, cấu hình tường lửa UFW để định tuyến lưu lượng VPN đến giao diện mạng cụ thể và bật chuyển tiếp cổng qua tệp /etc/sysctl.conf.
Với những điều này, giờ đây bạn có thể thêm nhiều máy khách hơn vào Máy chủ Wireguard VPN của mình bằng cách tạo cặp khóa khác cho máy khách, xác định kết nối ngang hàng trên máy chủ Wireguard, sau đó tạo tệp cấu hình Wireguard mới mà máy khách sẽ sử dụng. Để tìm hiểu thêm về Wireguard, hãy truy cập tài liệu chính thức của Wireguard.
Wireguard hướng đến mục tiêu thay thế các giao thức VPN như IPSec, IKEv2 và OpenVPN. Wireguard nhẹ hơn, nhanh hơn, dễ thiết lập và hiệu quả hơn. Đồng thời, Wiregurad không hy sinh khía cạnh bảo mật của giao thức VPN. Wireguard hỗ trợ mật mã hiện đại như khuôn khổ giao thức Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF và các cấu trúc an toàn, đáng tin cậy.
So với các giao thức VPN khác như OpenVPN, IPSec và IKEv2, wireguard là một giao thức VPN mới. Wireguard được Jason A. Donenfeld phát hành vào năm 2015 như một giao thức VPN thay thế. Nó được Linus Torvalds hợp nhất vào nhân Linux v5.6 vào năm 2020 và cũng được chuyển sang FreeBSD 13 trong cùng năm.
Trong hướng dẫn này, bạn sẽ cài đặt và thiết lập máy chủ VPN thông qua Wireguard trên máy chủ Debian 11. Bạn sẽ thiết lập máy chủ Wireguard VPN với máy chủ Debian 11, sau đó thiết lập máy khách để kết nối với máy chủ Wireguard VPN.
Đối với máy khách, bạn có thể sử dụng bất kỳ bản phân phối Linux nào, nhưng ví dụ này sử dụng máy Debian.
Điều kiện tiên quyết
Để bắt đầu với hướng dẫn này, bạn phải có các yêu cầu sau:- Máy chủ Debian 11 - Ví dụ này sử dụng máy chủ Debian có tên máy chủ 'wireguard-server' và địa chỉ IP tĩnh bên ngoài 'SERVER-IP'.
- Máy Linux sẽ được sử dụng làm máy khách - Bạn có thể sử dụng bất kỳ bản phân phối Linux nào, nhưng ví dụ này sử dụng máy Debian có tên máy chủ 'client1'.
- Người dùng không phải root có quyền quản trị viên sudo/root.
Cài đặt Wireguard
Trước khi cài đặt Wireguard, hãy chạy lệnh apt bên dưới để cập nhật và làm mới chỉ mục gói Debian của bạn.
Mã:
sudo apt update
Mã:
sudo apt install wireguard
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22675%22%20height=%22287%22%3E%3C/svg%3E
Sau khi cài đặt Wireguard trên máy chủ, bạn đã sẵn sàng tạo cặp khóa Công khai và Riêng tư cho máy chủ và máy khách Wireguard.
Tạo cặp khóa Công khai/Riêng tư
Trong bước này, bạn sẽ tạo cặp khóa công khai và riêng tư cho máy chủ Wireguard và máy khách. Và điều này có thể được thực hiện thông qua dòng lệnh 'wg' được cung cấp bởi gói wireguard-tools.Cặp khóa cho máy chủ sẽ được máy chủ Wireguard sử dụng và máy khách sẽ sử dụng cặp khóa cho máy khách. Nếu bạn có nhiều máy khách, bạn cần tạo nhiều cặp khóa cho máy khách của mình.
Tạo cặp khóa cho máy chủ Wireguard
Chạy lệnh 'wg genkey' bên dưới để tạo khóa riêng cho máy chủ Wireguard. Sau đó, hãy thay đổi quyền của khóa riêng thành '0400', điều này sẽ vô hiệu hóa quyền truy cập đọc và ghi cho nhóm và những người khác.Trong ví dụ này, bạn sẽ tạo khóa riêng '/etc/wireguard/server.key'.
Mã:
wg genkey | sudo tee /etc/wireguard/server.key
sudo chmod 0400 /etc/wireguard/server.key
Tiếp theo, hãy chạy lệnh bên dưới 'wg pubkey' để tạo khóa công khai máy chủ mới thành '/etc/wireguard/server.pub'. Khóa công khai của máy chủ được lấy từ khóa riêng của máy chủ '/etc/wireguard/server.key'.
Mã:
sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E
Bây giờ bạn đã tạo cặp khóa công khai và riêng tư cho máy chủ Wireguard. Khóa riêng tư nằm tại '/etc/wireguard/server.key', và khóa công khai nằm tại '/etc/wireguard/server.pub'.
Chạy lệnh cat bên dưới để hiển thị và xác minh cặp khóa đã tạo cho máy chủ Wireguard.
Mã:
cat /etc/wireguard/server.key
cat /etc/wireguard/server.pub
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22635%22%20height=%22149%22%3E%3C/svg%3E
Tạo cặp khóa cho máy khách
Đối với cặp khóa máy khách, bạn có thể tạo cặp khóa này trên bất kỳ máy nào (máy chủ Wireguard hoặc máy khách) có cài đặt wireguard-tools. Ở bước này, bạn sẽ tạo cặp khóa máy khách từ máy chủ Wireguard.Quy trình tạo cặp khóa cho máy chủ và máy khách là giống nhau, sử dụng lệnh 'wg genkey' để tạo khóa riêng và sử dụng lệnh 'wg pubkey' để tạo khóa công khai, được lấy từ khóa riêng.
Bây giờ hãy chạy lệnh bên dưới để tạo thư mục mới '/etc/wireguard/clients'. Thư mục này sẽ được sử dụng để lưu trữ cặp khóa máy khách.
Mã:
mkdir -p /etc/wireguard/clients
Mã:
wg genkey | tee /etc/wireguard/clients/client1.key
cat /etc/wireguard/clients/client1.key | wg pubkey | tee /etc/wireguard/clients/client1.pub
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22150%22%3E%3C/svg%3E
Bây giờ cặp khóa của khách hàng đã được tạo, Khóa công khai nằm tại '/etc/wireguard/clients/client1.pub' và khóa riêng tư là '/etc/wireguard/clients/client1.key'. Chạy lệnh bên dưới để hiển thị và xác minh cặp khóa đã tạo.
Mã:
cat /etc/wireguard/clients/client1.key
cat /etc/wireguard/clients/client1.pub
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22674%22%20height=%22180%22%3E%3C/svg%3E
Cấu hình Máy chủ Wireguard
Bạn sẽ tạo tệp cấu hình mới cho Máy chủ Wireguard trong bước này. Nhưng trước đó, bạn phải quyết định mạng con nào sẽ sử dụng cho máy chủ Wireguard VPN. Bạn cũng có thể quyết định bật hay tắt IPv6 cho Máy chủ Wireguard VPN của mình.Trong ví dụ này, máy chủ Wireguard VPN sẽ có địa chỉ IP với mạng con '10.8.0.2/24' và tắt IPv6 cho Wireguard VPN.
Tạo tệp cấu hình Wireguard mới '/etc/wireguard/wg0.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/wireguard/wg0.conf
Mã:
[Interface]
# Wireguard Server private key - server.key
PrivateKey = SIybp8GHtKIPtHPBOQFP1kbQg4UCLCMyNIfCLBQR2EA=
# Wireguard interface will be run at 10.8.0.1
Address = 10.8.0.1/24
# Clients will connect to UDP port 51820
ListenPort = 51820
# Ensure any changes will be saved to the Wireguard config file
SaveConfig = true
Mã:
[Peer]
# Wireguard client public key - client1.pub
PublicKey = ENokvIsS2euXrmM4OVFHPmTdCZ4wfEIR/UHuGCW64lw=
# clients' VPN IP addresses you allow to connect
# possible to specify subnet ⇒ [10.8.0.0/24]
AllowedIPs = 10.8.0.2/24
Sau khi tạo tệp cấu hình máy chủ Wireguard và thêm kết nối ngang hàng máy khách, tiếp theo bạn sẽ thiết lập chuyển tiếp cổng trên máy chủ Weireguard và thiết lập tường lửa để thiết lập định tuyến lưu lượng truy cập.
Bật chuyển tiếp cổng qua /etc/sysctl.conf
Trong bước này, bạn sẽ bật chuyển tiếp cổng trên máy chủ Wireguard qua tệp /etc/sysctl.conf'. Bạn có thể bật chuyển tiếp cổng cho cả IPv4 và IPv6 trên máy chủ bảo vệ Wireguard.Để bắt đầu, hãy mở tệp cấu hình '/etc/sysctl.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/sysctl.conf
Mã:
# Port Forwarding for IPv4
net.ipv4.ip_forward=1
# Port forwarding for IPv6
net.ipv6.conf.all.forwarding=1
Tiếp theo, chạy tiện ích lệnh sysctl bên dưới để áp dụng các thay đổi.
Mã:
sudo sysctl -p
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22554%22%20height=%22178%22%3E%3C/svg%3E
Với Chuyển tiếp cổng được bật trên máy chủ Wireguard, tiếp theo bạn sẽ thiết lập tường lửa để định tuyến lưu lượng truy cập của máy khách Wireguard đến giao diện mạng cụ thể.
Cấu hình tường lửa cho máy chủ Wireguard
Trong bước này, bạn sẽ thiết lập tường lửa sẽ được sử dụng cho máy chủ Wireguard để định tuyến kết nối máy khách đến giao diện mạng phù hợp sẽ được sử dụng để truy cập internet. Điều này cũng sẽ cho phép các máy khách Wireguard truy cập internet thông qua giao diện cụ thể trên máy chủ Wireguard.Đầu tiên, hãy chạy lệnh apt bên dưới để cài đặt gói tường lửa ufw trên máy chủ Debian của bạn.
Mã:
sudo apt install ufw
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22689%22%20height=%22340%22%3E%3C/svg%3E
Sau khi ufw được cài đặt, hãy chạy lệnh bên dưới để mở dịch vụ SSH và bật tường lửa ufw.
Mã:
sudo ufw allow OpenSSH
sudo ufw enable
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22745%22%20height=%22203%22%3E%3C/svg%3E
Bây giờ hãy xác minh trạng thái tường lửa ufw thông qua lệnh bên dưới. Bạn sẽ nhận được đầu ra như 'Trạng thái: hoạt động', nghĩa là trạng thái tường lửa ufw đang chạy.
Mã:
sudo ufw status
Bây giờ hãy chạy lệnh bên dưới để kiểm tra giao diện bảng định tuyến mặc định trên máy chủ Wireguard. Hầu hết, điều này sẽ phát hiện ra một giao diện được sử dụng để truy cập internet hoặc nơi có địa chỉ IP công khai trên đó.
Mã:
ip route list default
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22484%22%20height=%22126%22%3E%3C/svg%3E
Tiếp theo, mở tệp cấu hình máy chủ Wireguard '/etc/wireguard/wg0.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/wireguard/wg0.conf
Mã:
[Interface]
...
....
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
- Tham số 'PostUp' sẽ được thực thi bất cứ khi nào máy chủ Wirguard khởi động đường hầm VPN.
- Tham số 'PreDown' sẽ được thực thi bất cứ khi nào máy chủ Wireguard dừng đường hầm VPN.
- Lệnh 'ufw route allow in on wg0 out on eth0' cho phép chuyển tiếp lưu lượng đến trong giao diện wg0 đến giao diện internet eth0.
- Lệnh 'iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE' sẽ cho phép ngụy trang và ghi lại lưu lượng IPv4 từ giao diện wg0 để làm cho nó xuất hiện giống như kết nối trực tiếp từ máy chủ Wireguard.
- Lệnh 'ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE' sẽ cho phép ngụy trang và ghi lại lưu lượng IPv46 từ giao diện wg0 để làm cho nó trông giống như kết nối trực tiếp từ máy chủ Wireguard.
Mã:
sudo ufw allow 51820/udp
Mã:
sudo ufw reload
sudo ufw status
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22533%22%20height=%22335%22%3E%3C/svg%3E
Bây giờ, bạn đã bật Port-Forwarding và cấu hình tường lửa trên máy chủ Wireguard. Bây giờ bạn đã sẵn sàng để khởi động máy chủ Wireguard.
Khởi động máy chủ Wireguard
Trong bước này, bạn sẽ khởi động và bật máy chủ Wireguard. Bạn cũng sẽ xác minh máy chủ Wireguard và xác minh giao diện wg0 sẽ được tạo bởi dịch vụ Wireguard.Chạy tiện ích lệnh systemctl bên dưới để khởi động và bật dịch vụ Wireguard. Dịch vụ '[emailprotected]' sẽ tạo và kích hoạt giao diện Wireguard 'wg0' trên máy chủ Wireguard của bạn.
Mã:
sudo systemctl start [emailprotected]
sudo systemctl enable [emailprotected]
Mã:
sudo systemctl status [emailprotected]
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22218%22%3E%3C/svg%3E
Chạy lệnh bên dưới để xác minh giao diện 'wg0' trên máy chủ Wireguard của bạn.
Mã:
ip a show wg0
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22574%22%20height=%22176%22%3E%3C/svg%3E
Ngoài ra, bạn cũng có thể khởi động và dừng Wireguard thông qua lệnh 'wg-quick' như bên dưới. Lệnh 'wg-quick up' sẽ khởi động máy chủ Wireguard và lệnh 'wg-quick down' sẽ dừng máy chủ Wireguard.
Mã:
sudo wg-quick up /etc/wireguard/wg0.conf
sudo wg-quick down /etc/wireguard/wg0.conf
Thiết lập máy khách và kết nối với máy chủ Wireguard
Trong bước này, bạn sẽ thiết lập máy khách bằng cách cài đặt worguard-tools, tạo cấu hình Wireguard mới cho máy khách, kết nối với máy chủ VPN Wireguard và cuối cùng là xác minh kết nối và đảm bảo rằng máy khách có thể truy cập internet và mạng VPN cục bộ.Cài đặt gói 'wireguard-tools' trên máy khách. Điều này sử dụng Debian làm máy khách, do đó lệnh APT sẽ được sử dụng.
Mã:
sudo apt install wireguard-tools
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22288%22%3E%3C/svg%3E
Sau khi wireguard-tools được cài đặt, hãy tạo một tệp cấu hình mới '/etc/wireguard/wg-client1.conf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/wireguard/wg-client1.conf
Mã:
[Interface]
# Define the IP address for the client - must be matched with wg0 on Wireguard Server
Address = 10.8.0.2/24
# specific DNS Server
DNS = 1.1.1.1
# Private key for the client - client1.key
PrivateKey = KPI59QH0jwc9wkUsW5Byci9ojXhz1322QXK52fQCE3E=
[Peer]
# Public key of the Wireguard server - server.pub
PublicKey = Qt6oRLtlfAR490lTNb2K8TlbpwADV1j8NX7D5HY38EM=
# Allow all traffic to be routed via Wireguard VPN
AllowedIPs = 0.0.0.0/0
# Public IP address of the Wireguard Server
Endpoint = SERVER-IP:51820
# Sending Keepalive every 25 sec
PersistentKeepalive = 25
Trong phần '[Giao diện]', bạn phải xác định những điều sau:
- Địa chỉ IP của máy khách phải khớp với mạng con của máy chủ Wireguard. Máy khách Wireguard sẽ nhận được địa chỉ IP '10.8.0.2' trong ví dụ này.
- Chỉ định máy chủ DNS cho máy khách.
- Thay đổi tham số 'PrivateKey' bằng khóa riêng của máy khách mà bạn đã tạo, 'client1.key'.
Trong phần '[Peer]', bạn phải thêm nội dung sau: - Khóa công khai của máy chủ Wireguard 'server.pub' vào tham số PublicKey.
- Chỉ định 'AllowedIPs' để hạn chế quyền truy cập trên máy khách VPN, bạn có thể chỉ định các mạng con hoặc chỉ cần đặt 0.0.0.0/0 để tạo đường hầm cho tất cả lưu lượng truy cập qua VPN.
- Chỉ định tham số Endpoint bằng địa chỉ IP công khai của máy chủ Wireguard hoặc sử dụng tên miền name.
Mã:
wg-quick up wg-client1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22539%22%20height=%22367%22%3E%3C/svg%3E
Chạy lệnh bên dưới để xác minh giao diện Wireguard 'wg-client1'.
Mã:
ip a show wg-client1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22634%22%20height=%22166%22%3E%3C/svg%3E
Bạn cũng có thể xác minh kết nối Wireguard thông qua lệnh 'wg show'.
Chạy lệnh 'wg show' bên dưới trên máy khách và bạn sẽ nhận được kết quả như sau cái này.
Mã:
wg show
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22572%22%20height=%22344%22%3E%3C/svg%3E
Bây giờ hãy di chuyển đến máy chủ Wireguard và chạy lệnh 'wg show'.
Mã:
wg show
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22605%22%20height=%22311%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh bên dưới để đảm bảo rằng máy khách có thể truy cập internet hoặc truy cập mạng con nội bộ của Wireguard VPN.
Mã:
ping -c5 10.8.0.1
ping -c5 1.1.1.1
ping -c5 duckduckgo.com
Máy khách có thể kết nối với máy chủ Wireguard bằng địa chỉ IP '10.8.0.1'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22587%22%20height=%22311%22%3E%3C/svg%3E
Máy khách có thể truy cập internet. Tất cả lưu lượng được định tuyến qua địa chỉ IP công khai của máy chủ Wireguard.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22583%22%20height=%22284%22%3E%3C/svg%3E
Bây giờ nếu bạn muốn dừng Wrieguard trên máy khách, bạn có thể chạy lệnh 'wg-quick down' bên dưới
Mã:
wg-quick down wg-client1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22591%22%20height=%22265%22%3E%3C/svg%3E
Bây giờ bạn đã cấu hình Wirguard VPN trên máy khách. Bạn cũng đã xác minh kết nối giữa máy khách với máy chủ Wireguard.
Kết luận
Trong hướng dẫn này, bạn đã cài đặt và cấu hình Wireguard VPN trên máy chủ Debian 11. Bạn cũng đã cấu hình máy Debian và kết nối thành công với Máy chủ Wireguard VPN.Chi tiết hơn, bạn đã cài đặt gói Wireguard VPN, tạo cặp khóa công khai và khóa riêng cho cả máy chủ và máy khách, cấu hình tường lửa UFW để định tuyến lưu lượng VPN đến giao diện mạng cụ thể và bật chuyển tiếp cổng qua tệp /etc/sysctl.conf.
Với những điều này, giờ đây bạn có thể thêm nhiều máy khách hơn vào Máy chủ Wireguard VPN của mình bằng cách tạo cặp khóa khác cho máy khách, xác định kết nối ngang hàng trên máy chủ Wireguard, sau đó tạo tệp cấu hình Wireguard mới mà máy khách sẽ sử dụng. Để tìm hiểu thêm về Wireguard, hãy truy cập tài liệu chính thức của Wireguard.