Wireguard là một giao thức VPN 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, 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 tin cậy an toàn.
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ế, được Linus Torvalds hợp nhất vào nhân Linux v5.6 vào năm 2020 và cùng năm đó, cũng được chuyển sang FreeBSD 13.
Hướng dẫn này hướng dẫn bạn cách cài đặt và thiết lập Wirgeuard Server trên máy chủ Rocky Linux 9. Bạn cũng sẽ học cách thiết lập máy khách để kết nối với máy chủ Wireguard.
Bạn có thể sử dụng bất kỳ bản phân phối Linux nào làm máy khách trong ví dụ này. Nhưng hướng dẫn này sẽ sử dụng máy khách Rocky Linux, một trong những bản phân phối dựa trên RHEL9.
Chạy lệnh modprobe bên dưới để kích hoạt mô-đun hạt nhân 'wireguard'. Sau đó, xác minh danh sách các mô-đun hạt nhân được bật thông qua lệnh 'lsmod'.
Nếu mô-đun hạt nhân 'wireguard' được bật, bạn sẽ nhận được đầu ra tương tự như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22602%22%20height=%22262%22%3E%3C/svg%3E
Để tải wireguard module vĩnh viễn, bạn có thể chạy lệnh bên dưới để thêm tệp cấu hình mới vào thư mục '/etc/modules-load.d/'. Lệnh này sẽ tải module hạt nhân wireguard vĩnh viễn khi khởi động hệ thống.
Sau khi module hạt nhân 'wireguard' được bật, bạn phải cài đặt gói 'wireguard-tools' để quản lý máy chủ Wireguard. Điều này bao gồm tạo khóa, khởi động máy chủ Wireguard và nhiều hơn nữa.
Chạy lệnh dnf bên dưới để cài đặt 'wireguard-tools'. Khi được nhắc xác nhận, hãy nhập y và nhấn ENTER để tiếp tục.
Bây giờ, quá trình cài đặt 'wireguard-tools' sẽ bắt đầu.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22219%22%3E%3C/svg%3E
Máy chủ Rocky Linux của bạn hiện có hạt nhân 'wireguard' module được bật và 'wireguard-tools' được cài đặt. Tiếp theo, bạn sẽ tìm hiểu cách tạo cặp khóa cho cả máy chủ và máy khách Wireguard thông qua wireguard-tools.
Sau đó, hãy chạy lệnh bên dưới để tạo khóa công khai cho máy chủ wireguard '/etc/wireguard/server.pub'. Khóa công khai wireguard được lấy từ khóa riêng wireguard '/etc/wireguard/server.key'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22179%22%3E%3C/svg%3E
Tiếp theo, xác minh cả khóa công khai và khóa riêng của máy chủ wireguard thông qua lệnh cat bên dưới.
Bạn có thể có một khóa khác nhau cho cả khóa công khai và khóa riêng tư, nhưng đầu ra tương tự như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22575%22%20height=%22194%22%3E%3C/svg%3E
Chạy lệnh bên dưới để tạo một thư mục mới '/etc/wireguard/clients'. Thư mục này sẽ được sử dụng để lưu trữ các cặp khóa máy khách.
Tiếp theo, chạy lệnh 'wg genkey' bên dưới để tạo khóa riêng của máy khách '/etc/wireguard/clients/client1.key'. Sau đó, tạo khóa công khai của máy khách '/etc/wireguard/clients/client1.pub' thông qua lệnh 'wg pubkey'.
Đầu ra:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22168%22%3E%3C/svg%3E
Bây giờ hãy xác minh cả hai khóa công khai và khóa riêng của khách hàng bằng lệnh cat bên dưới.
Khóa phải giống nhau đối với cả cặp khóa máy chủ và máy khách wireguard, đó là khóa giống base64.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22631%22%20height=%22196%22%3E%3C/svg%3E
Để bắt đầu, hãy tạo tệp cấu hình máy chủ wireguard mới '/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 tệp và đảm bảo thay đổi 'PrivateKey' bằng khóa riêng của máy chủ Wirguard 'server.key'. Với điều này, bạn cũng sẽ thiết lập giao diện máy chủ Wireguard để chạy ở địa chỉ IP '10.8.0.1'. Và đối với kết nối máy khách, bạn sẽ sử dụng cổng UDP 51820. Và cuối cùng, bạn cũng sẽ bật tham số SaveConfig để đảm bảo mọi thay đổi được lưu vào tệp cấu hình wireguard, ngay cả khi giao diện Wireguard tắt.
Tiếp theo, thêm các dòng sau để xác định kết nối ngang hàng của máy khách. Đảm bảo thay đổi tham số 'PublicKey' bằng khóa công khai của máy khách 'client1.pub'. Với tham số 'AllowedIPs', bạn có thể chỉ định máy khách Wireguard nào được phép truy cập ngang hàng này. Trong ví dụ này, chỉ những máy khách có IP '10.8.0.8' mới được phép truy cập kết nối ngang hàng này. Ngoài ra, bạn cũng có thể cho phép phạm vi các mạng con nội bộ như '172.16.100.0/24' truy cập vào đối tác wireguard.
Lưu và thoát tệp khi hoàn tất.
Với thao tác này, giờ bạn đã tạo cấu hình cơ bản cho máy chủ Wreguard. Ngoài ra, bạn đã xác định kết nối đối tác cho máy khách bằng khóa công khai của máy khách 'client1.pub'. Ở bước tiếp theo, thiết lập chuyển tiếp cổng trên máy chủ wireguard và thiết lập các quy tắc tường lửa để định tuyến lưu lượng.
Mở tệp cấu hình '/etc/sysctl.conf' bằng trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào cuối dòng. Những dòng này sẽ bật chuyển tiếp cổng cho cả IPv4 và IPv6. Cho dù bạn có cần IPv6 hay không, bạn có thể tắt nó bằng cách thêm chú thích '#' vào đầu dòng.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Bây giờ hãy chạy lệnh 'sysctl' bên dưới để áp dụng các thay đổi trên '/etc/sysctl.conf' file.
Và bạn sẽ nhận được kết quả tương tự như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22613%22%20height=%22268%22%3E%3C/svg%3E
Khi bật Port-Forwarding, tiếp theo bạn sẽ thiết lập tường lửa để định tuyến lưu lượng từ máy khách đến giao diện mạng cụ thể trên máy chủ wireguard.
Trước khi bắt đầu, hãy chạy lệnh ip bên dưới để kiểm tra giao diện mạng mặc định được sử dụng để truy cập internet trên máy chủ wireguard.
Bạn sẽ nhận được đầu ra tương tự như sau - Trong ví dụ này, máy chủ wireguard đã sử dụng giao diện eth0 để truy cập internet. Bạn có thể có nhiều tên giao diện mạng khác nhau trên máy chủ của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22695%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 trình chỉnh sửa nano bên dưới lệnh.
Thêm các dòng sau vào phần '[Giao diện]'.
Lưu và thoát khỏi tệp.
Cuối cùng, xác minh các quy tắc firewalld thông qua lệnh firewall-cmd bên dưới.
Bạn sẽ nhận được kết quả như thế này - Cổng máy khách wireguard 51820/udp đã được thêm vào firewalld.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22730%22%20height=%22391%22%3E%3C/svg%3E
Với điều này, bây giờ bạn đã bật chuyển tiếp cổng trên máy chủ wireguard và cấu hình tường lửa để định tuyến lưu lượng từ giao diện wireguard đến giao diện mạng cụ thể. 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 máy chủ wireguard. Lệnh này sẽ khởi động dịch vụ wireguard và tạo một giao diện wireguard mới 'wg0'.
Xác minh máy chủ wireguard bằng lệnh systemctl bên dưới. Thao tác này sẽ đảm bảo máy chủ wireguard đang chạy.
Và bạn sẽ nhận được kết quả tương tự như sau - Máy chủ wireguard hiện đã được bật và sẽ tự động chạy khi khởi động. Và trạng thái của máy chủ wireguard đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22305%22%3E%3C/svg%3E
Bạn cũng có thể xác minh giao diện 'wg0' được tạo bởi máy chủ wireguard thông qua lệnh ip bên dưới.
Bạn sẽ nhận được giao diện chi tiết của wg0, khớp với tệp cấu hình máy chủ wireguard '/etc/wireguard/wg0.conf'. Giao diện wg0 phải có địa chỉ IP là '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=%22598%22%20height=%22197%22%3E%3C/svg%3E
Một phương pháp khác có thể được sử dụng để khởi động máy chủ wireguard là sử dụng tiện ích lệnh 'wg-quick' do wireguard-tools cung cấp.
Chạy 'wg-quick up' để khởi động máy chủ wireguard và 'wg-quick down' để dừng máy chủ wireguard. Ngoài ra, hãy đảm bảo chỉ định đường dẫn đầy đủ của tệp cấu hình máy chủ wireguard '/etc/wireguard/wg0.conf'.
Tại thời điểm này, máy chủ wireguard đang chạy trên máy chủ Rocky Linux. Ở bước tiếp theo, bạn sẽ thiết lập một máy khách và kết nối nó với máy chủ wireguard.
Đăng nhập vào máy khách và chạy lệnh dnf bên dưới để cài đặt gói wireguard-tools vào máy khách của bạn. Hoạt động này cũng cài đặt phần phụ thuộc 'systemd-resolved' sẽ được wireguard-tools sử dụng để quản lý trình phân giải DNS.
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=%22750%22%20height=%22262%22%3E%3C/svg%3E
Trong quá trình cài đặt 'wireguard-tools', gói systemd-resolved cũng được cài đặt dưới dạng phụ thuộc.
Chạy lệnh bên dưới để bắt đầu và kích hoạt 'systemd-resolved' dịch vụ.
Sau khi cài đặt wireguard-tools và chạy systemd-resolved, tiếp theo bạn sẽ thiết lập NetworkManager để sử dụng 'systemd-resolved' làm phụ trợ DNS.
Mở tệp cấu hình NetworkManager '/etc/NetworkManager/NetworkManager.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Thêm tham số 'dns' vào phần '[main]' như bên dưới.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Tiếp theo, chạy lệnh bên dưới để xóa tệp '/etc/resolv.conf' và tạo tệp liên kết tượng trưng mới của Tệp 'resolv.conf' được quản lý bởi systemd-resolved.
Bây giờ hãy khởi động lại dịch vụ NetworkManager để áp dụng các thay đổi.
Bây giờ NetworkManager đã được cấu hình, bạn đã sẵn sàng thiết lập máy khách wireguard.
Tạo tệp mới '/etc/wireguard/wg-client1.conf' sử dụng trình chỉnh sửa nano bên dưới.
Thêm các dòng sau vào tệp.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
Trong phần '[Giao diện]', bạn phải xác định sau đây:
Bạn sẽ nhận được kết quả tương tự như sau - Giao diện Wireguard mới 'wg-client1' được tạo và nhận được địa chỉ IP '10.8.0.8'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Bây giờ hãy xác minh giao diện 'wg-client1' thông qua lệnh ip bên dưới.
Dưới đây là đầu ra tương tự sẽ được in ra thiết bị đầu cuối của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22549%22%20height=%22196%22%3E%3C/svg%3E
Bạn cũng có thể xác minh trình phân giải DNS trên giao diện wg-client1 thông qua lệnh 'resolvectl' bên dưới.
Dưới đây là đầu ra bạn sẽ nhận được trên thiết bị đầu cuối của mình - Giao diện wireguard wg-client1 đã sử dụng trình phân giải DNS được xác định thông qua tham số 'PostUp', sử dụng 'systemd-resolved'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22226%22%3E%3C/svg%3E
Ngoài ra, 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' trên máy khách Wireguard và bạn sẽ nhận được đầu ra như ảnh chụp màn hình bên dưới.
Địa chỉ IP của máy chủ Wireguard sẽ được hiển thị trong phần 'điểm cuối'. Ngoài ra, bạn có thể thấy khóa công khai của máy chủ wireguard 'server.pub'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22578%22%20height=%22344%22%3E%3C/svg%3E
Quay lại máy chủ wireguard và chạy lệnh 'wg show' bên dưới.
Dưới đây là kết quả tương tự mà bạn sẽ nhận được trên thiết bị đầu cuối của bạn - 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=%22596%22%20height=%22333%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 mà bạn sẽ nhận được:
Máy khách có thể kết nối với máy chủ Wireguard có địa chỉ IP '10.8.0.1'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22584%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=%22572%22%20height=%22319%22%3E%3C/svg%3E
Bây giờ bạn đã cấu hình VPN wireguard 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.
Cuối cùng, bạn đã học cách sử dụng cơ bản tiện ích lệnh 'wg' để tạo cặp khóa công khai và riêng tư và xác minh kết nối VPN wireguard. Sau đó, bạn cũng đã học cách sử dụng lệnh 'wg-quick' để bắt đầu và dừng kết nối wireguard.
Nếu bạn muốn tìm hiểu thêm về WireGuard, hãy truy cập tài liệu WireGuard. Ngoài ra, bạn có thể truy cập các chủ đề GitHub liên quan đến Wireguard để tìm triển khai tự động hóa cho Máy chủ VPN 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 tin cậy an toàn.
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ế, được Linus Torvalds hợp nhất vào nhân Linux v5.6 vào năm 2020 và cùng năm đó, cũng được chuyển sang FreeBSD 13.
Hướng dẫn này hướng dẫn bạn cách cài đặt và thiết lập Wirgeuard Server trên máy chủ Rocky Linux 9. Bạn cũng sẽ học cách thiết lập máy khách để kết nối với máy chủ Wireguard.
Bạn có thể sử dụng bất kỳ bản phân phối Linux nào làm máy khách trong ví dụ này. Nhưng hướng dẫn này sẽ sử dụng máy khách Rocky Linux, một trong những bản phân phối dựa trên RHEL9.
Điều kiện tiên quyết
Để bắt đầu với hướng dẫn này, bạn phải đảm bảo rằng mình có các yêu cầu sau:- Máy chủ Rocky Linux 9 - Ví dụ này sử dụng Rocky Linux có tên máy chủ 'wireguard-rocky'.
- Người dùng không phải root có quyền quản trị viên sudo/root.
- SELinux đang chạy ở chế độ cho phép.
Bật Mô-đun Hạt nhân Wireguard
Phiên bản mới nhất của Rocky Linux 9 được cung cấp cùng với hạt nhân Linux mặc định 5.14, theo mặc định là mô-đun hạt nhân 'wireguard' được nhúng trên đó. Ở bước này, bạn sẽ kích hoạt mô-đun hạt nhân Wirguard và cài đặt 'wireguard-tools' trên máy chủ Rocky Linux của mình.Chạy lệnh modprobe bên dưới để kích hoạt mô-đun hạt nhân 'wireguard'. Sau đó, xác minh danh sách các mô-đun hạt nhân được bật thông qua lệnh 'lsmod'.
Mã:
sudo modprobe wireguard
lsmod | grep wireguard
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22602%22%20height=%22262%22%3E%3C/svg%3E
Để tải wireguard module vĩnh viễn, bạn có thể chạy lệnh bên dưới để thêm tệp cấu hình mới vào thư mục '/etc/modules-load.d/'. Lệnh này sẽ tải module hạt nhân wireguard vĩnh viễn khi khởi động hệ thống.
Mã:
sudo echo wireguard > /etc/modules-load.d/wireguard.conf
Chạy lệnh dnf bên dưới để cài đặt 'wireguard-tools'. Khi được nhắc xác nhận, hãy nhập y và nhấn ENTER để tiếp tục.
Mã:
sudo dnf install wireguard-tools
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22219%22%3E%3C/svg%3E
Máy chủ Rocky Linux của bạn hiện có hạt nhân 'wireguard' module được bật và 'wireguard-tools' được cài đặt. Tiếp theo, bạn sẽ tìm hiểu cách tạo cặp khóa cho cả máy chủ và máy khách Wireguard thông qua wireguard-tools.
Tạo cặp khóa máy chủ và máy khách
wireguard-tools cung cấp dòng lệnh không gian người dùng để quản lý triển khai Wireguard. Wireguard-tools cung cấp hai tiện ích chính:- wg - tiện ích dòng lệnh có thể được sử dụng để thiết lập giao diện đường hầm wireguard. Với tiện ích này, bạn có thể tạo cặp khóa, xác minh thời gian chạy và giao diện wireguard hiện tại và thiết lập giao diện đường hầm Wireguard.
- wg-quick - dòng lệnh đơn giản có thể quản lý giao diện Wireguard. Bạn có thể bắt đầu, dừng và khởi động lại bất kỳ giao diện wireguard nào thông qua lệnh wg-quick.
Tạo cặp khóa máy chủ
Chạy lệnh 'wg genkey' bên dưới để tạo khóa riêng của máy chủ '/etc/wireguard/server.key'. Sau đó, hãy thay đổi quyền mặc định thành '0400' để vô hiệu hóa quyền ghi và thực thi đối với những người khác và nhóm.
Mã:
wg genkey | sudo tee /etc/wireguard/server.key
sudo chmod 0400 /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=%22179%22%3E%3C/svg%3E
Tiếp theo, xác minh cả khóa công khai và khóa riêng của máy chủ wireguard thông qua lệnh cat bên dưới.
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=%22575%22%20height=%22194%22%3E%3C/svg%3E
Tạo cặp khóa máy khách
Sau khi tạo cặp khóa máy chủ wireguard, bạn sẽ tạo một khóa mới cho máy khách. Trong ví dụ này, bạn sẽ tạo một cặp khóa mới có tên là 'client1'.Chạy lệnh bên dưới để tạo một thư mục mới '/etc/wireguard/clients'. Thư mục này sẽ được sử dụng để lưu trữ các 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=%22168%22%3E%3C/svg%3E
Bây giờ hãy xác minh cả hai khóa công khai và khóa riêng của khách hàng bằng lệnh cat bên dưới.
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=%22631%22%20height=%22196%22%3E%3C/svg%3E
Đang cấu hình Máy chủ Wireguard
Trong bước này, bạn sẽ tạo một tệp cấu hình mới cho máy chủ Wireguard, thiết lập giao diện Wireguard và thiết lập kết nối ngang hàng cho các kết nối máy khách. Điều này bao gồm cấu hình của mạng con VPN wireguard, địa chỉ IP từ máy chủ wireguard và địa chỉ IP cho máy khách ngang hàng.Để bắt đầu, hãy tạo tệp cấu hình máy chủ 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 = iHaI5bkEbW8wqTQDbU/KITGhxtKoiezWVohVZsKwj3w=
# 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 = iWskvxyj+QK4185xO6Z2Fb0XYo1jGyiyI3iKbyGTkT8=
# clients' VPN IP addresses you allow to connect
# possible to specify subnet ⇒ [172.16.100.0/24]
AllowedIPs = 10.8.0.8/24
Với thao tác này, giờ bạn đã tạo cấu hình cơ bản cho máy chủ Wreguard. Ngoài ra, bạn đã xác định kết nối đối tác cho máy khách bằng khóa công khai của máy khách 'client1.pub'. Ở bước tiếp theo, thiết lập chuyển tiếp cổng trên máy chủ wireguard và thiết lập các quy tắc tường lửa để định tuyến lưu lượng.
Thiết lập chuyển tiếp cổng
Để thiết lập bất kỳ máy chủ VPN nào, bạn phải bật chuyển tiếp cổng trên máy chủ triển khai của mình. Ở bước này, bạn sẽ bật chuyển tiếp cổng trên máy chủ Rocky Linux của mình thông qua tệp '/etc/sysctl.conf'.Mở tệp cấu hình '/etc/sysctl.conf' bằng 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
Bây giờ hãy chạy lệnh 'sysctl' bên dưới để áp dụng các thay đổi trên '/etc/sysctl.conf' file.
Mã:
sudo sysctl -p
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22613%22%20height=%22268%22%3E%3C/svg%3E
Khi bật Port-Forwarding, tiếp theo bạn sẽ thiết lập tường lửa để định tuyến lưu lượng từ máy khách đến giao diện mạng cụ thể trên máy chủ wireguard.
Thiết lập Firewalld
Bạn sẽ thiết lập firewalld trên máy chủ Wireguard trong bước này. Bạn sẽ định tuyến lưu lượng truy cập của máy khách đến giao diện mạng cụ thể trên máy chủ Wireguard thông qua firewalld. Và điều này có thể được thực hiện bằng cách thêm các quy tắc mới vào tường lửa vĩnh viễn hoặc bằng cách sử dụng các tham số 'PostUp' và 'PostDown' của wireguard trong tệp cấu hình Wireguard.Trước khi bắt đầu, hãy chạy lệnh ip bên dưới để kiểm tra giao diện mạng mặc định được sử dụng để truy cập internet trên máy chủ wireguard.
Mã:
ip route show default
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22695%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 trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/wireguard/wg0.conf
Mã:
PostUp = firewall-cmd --zone=public --add-masquerade
PostUp = firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg -o eth0 -j ACCEPT
PostUp = firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
PostDown = firewall-cmd --zone=public --remove-masquerade
PostDown = firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg -o eth0 -j ACCEPT
PostDown = firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -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ố 'PostDown' sẽ được thực thi bất cứ khi nào máy chủ Wireguard dừng đường hầm VPN.
- Lệnh 'firewall-cmd --zone=public --add-masquerade' sẽ bật chế độ ngụy trang trên firewalld.
- Lệnh 'firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg -o eth0 -j ACCEPT' sẽ thêm firewalld rich-rule cho lưu lượng truy cập từ giao diện wireguard đến eth0.
- Lệnh 'firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE' sẽ bật NAT thông qua giao diện eth0.
- Trong Tham số 'PostDown', tất cả các lệnh này được sử dụng để hoàn nguyên các thay đổi trên firewalld bằng cách xóa các quy tắc được áp dụng trong các lệnh trên tham số 'PostUp' được thực thi.
Mã:
sudo firewall-cmd --add-port=51820/udp --permanent
sudo firewall-cmd --reload
Mã:
sudo firewall-cmd --list-all
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22730%22%20height=%22391%22%3E%3C/svg%3E
Với điều này, bây giờ bạn đã bật chuyển tiếp cổng trên máy chủ wireguard và cấu hình tường lửa để định tuyến lưu lượng từ giao diện wireguard đến giao diện mạng cụ thể. 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 dịch vụ Wireguard tạo ra.Chạy tiện ích lệnh systemctl bên dưới để khởi động và bật máy chủ wireguard. Lệnh này sẽ khởi động dịch vụ wireguard và tạo một giao diện wireguard mới 'wg0'.
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=%22305%22%3E%3C/svg%3E
Bạn cũng có thể xác minh giao diện 'wg0' được tạo bởi máy chủ wireguard thông qua lệnh ip bên dưới.
Mã:
ip a show wg0
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22598%22%20height=%22197%22%3E%3C/svg%3E
Một phương pháp khác có thể được sử dụng để khởi động máy chủ wireguard là sử dụng tiện ích lệnh 'wg-quick' do wireguard-tools cung cấp.
Chạy 'wg-quick up' để khởi động máy chủ wireguard và 'wg-quick down' để dừng máy chủ wireguard. Ngoài ra, hãy đảm bảo chỉ định đường dẫn đầy đủ của tệp cấu hình máy chủ wireguard '/etc/wireguard/wg0.conf'.
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
Ở bước này, bạn sẽ thiết lập một wireguard trên máy khách Linux, sau đó kết nối máy khách với máy chủ wireguard. Ví dụ này sử dụng Rocky Linux với tên máy chủ 'client1' làm máy khách, nhưng bạn cũng có thể sử dụng bất kỳ bản phân phối Linux nào.Đăng nhập vào máy khách và chạy lệnh dnf bên dưới để cài đặt gói wireguard-tools vào máy khách của bạn. Hoạt động này cũng cài đặt phần phụ thuộc 'systemd-resolved' sẽ được wireguard-tools sử dụng để quản lý trình phân giải DNS.
Mã:
sudo dnf install wireguard-tools
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22262%22%3E%3C/svg%3E
Trong quá trình cài đặt 'wireguard-tools', gói systemd-resolved cũng được cài đặt dưới dạng phụ thuộc.
Chạy lệnh bên dưới để bắt đầu và kích hoạt 'systemd-resolved' dịch vụ.
Mã:
sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
Mở tệp cấu hình NetworkManager '/etc/NetworkManager/NetworkManager.conf' bằng trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/NetworkManager/NetworkManager.conf
Mã:
[main]
dns=systemd-resolved
Tiếp theo, chạy lệnh bên dưới để xóa tệp '/etc/resolv.conf' và tạo tệp liên kết tượng trưng mới của Tệp 'resolv.conf' được quản lý bởi systemd-resolved.
Mã:
rm -f /etc/resolv.conf
sudo ln -s /usr/lib/systemd/resolv.conf /etc/resolv.conf
Mã:
sudo systemctl restart NetworkManager
Tạo tệp mới '/etc/wireguard/wg-client1.conf' sử dụng 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.8/24
# Private key for the client - client1.key
PrivateKey = 4FsCdtKr9GrLiX7zpNEYeqodMa5oSeHwH/m9hsNNfEs=
# Run resolvectl command
PostUp = resolvectl dns %i 1.1.1.1 9.9.9.9; resolvectl domain %i ~.
PreDown = resolvectl revert %i
[Peer]
# Public key of the Wireguard server - server.pub
PublicKey = aK+MQ48PVopb8j1Vjs8Fvgz5ZIG2k6pmVZs8iVsgr1E=
# Allow all traffic to be routed via Wireguard VPN
AllowedIPs = 0.0.0.0/0
# Public IP address of the Wireguard Server
Endpoint = 192.168.5.59:51820
# Sending Keepalive every 25 sec
PersistentKeepalive = 25
Trong phần '[Giao diện]', bạn phải xác định sau đây:
- Đị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.8' trong ví dụ này.
- Chỉ định máy chủ DNS cho máy khách thông qua lệnh resolvectl.
- Thay đổi tham số 'PrivateKey' bằng khóa riêng của máy khách mà bạn đã tạo 'client1.key'.
- 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 IP công khai địa chỉ của máy chủ Wireguard hoặc bạn cũng có thể sử dụng tên miền.
Mã:
wg-quick up wg-client1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Bây giờ hãy xác minh giao diện 'wg-client1' thông qua lệnh ip bên dưới.
Mã:
ip a show wg-client1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22549%22%20height=%22196%22%3E%3C/svg%3E
Bạn cũng có thể xác minh trình phân giải DNS trên giao diện wg-client1 thông qua lệnh 'resolvectl' bên dưới.
Mã:
resolvectl status wg-client1
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22226%22%3E%3C/svg%3E
Ngoài ra, 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' trên máy khách Wireguard và bạn sẽ nhận được đầu ra như ảnh chụp màn hình bên dưới.
Mã:
wg show
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22578%22%20height=%22344%22%3E%3C/svg%3E
Quay lại máy chủ wireguard và chạy lệnh 'wg show' bên dưới.
Mã:
wg show
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22596%22%20height=%22333%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 có địa chỉ IP '10.8.0.1'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22584%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=%22572%22%20height=%22319%22%3E%3C/svg%3E
Bây giờ bạn đã cấu hình VPN wireguard 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 máy chủ VPN wireguard trên Rocky Linux 9. Bạn cũng đã tìm hiểu cách thiết lập máy khách Rocky Linux để kết nối với máy chủ wireguard. Cùng với đó, bạn cũng đã học cách bật chuyển tiếp cổng và thiết lập NAT qua firewalld.Cuối cùng, bạn đã học cách sử dụng cơ bản tiện ích lệnh 'wg' để tạo cặp khóa công khai và riêng tư và xác minh kết nối VPN wireguard. Sau đó, bạn cũng đã học cách sử dụng lệnh 'wg-quick' để bắt đầu và dừng kết nối wireguard.
Nếu bạn muốn tìm hiểu thêm về WireGuard, hãy truy cập tài liệu WireGuard. Ngoài ra, bạn có thể truy cập các chủ đề GitHub liên quan đến Wireguard để tìm triển khai tự động hóa cho Máy chủ VPN WireGuard.