Cách cài đặt WireGuard VPN trên CentOS 8

Tác giả NetworkEngineer, T.M.Hai 25, 2021, 10:37:26 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt WireGuard VPN trên CentOS 8


WireGuard là một giao thức truyền thông mã nguồn mở điểm - điểm phổ biến được sử dụng để tạo đường hầm Mạng riêng ảo an toàn và nhanh chóng. VPN này được thiết kế để sử dụng trong Kernel Linux. WireGuard là một VPN nhẹ, cung cấp tốc độ cực nhanh cho người dùng.

Bài viết này hướng dẫn bạn cách cài đặt và thiết lập WireGuard trên hệ thống CentOS 8 của bạn. Việc cài đặt và thiết lập WireGuard dễ dàng hơn nhiều so với các VPN hiện có, như OpenVPN và đây là lý do chính đằng sau sự phổ biến ngày càng tăng của nó trong cộng đồng Linux.

Bài viết này bao gồm hai phần:

  • Trong phần đầu tiên, chúng ta sẽ cài đặt và cấu hình một máy CentOS 8 sẽ hoạt động như một Máy chủ VPN WireGuard.
  • Trong phần thứ hai, mình sẽ cài đặt và cấu hình một máy CentOS 8 sẽ hoạt động như một Máy khách VPN WireGuard.

1. Cài đặt và cấu hình WireGuard trên Máy chủ CentOS 8

Trong phần này, chúng ta sẽ thiết lập một máy CentOS 8 sẽ hoạt động như một máy chủ bằng cách cài đặt WireGuard.

Bước 1: Thêm các kho EPEL và Elrepo

Để bắt đầu cài đặt WireGuard trên CentOS 8, trước tiên, hãy thêm các kho EPEL và Elrepo để cài đặt các mô-đun Kernel và các công cụ WireGuard.

Mã nguồn [Chọn]
$ sudo dnf install epel-release elrepo-release -y

Bây giờ, sau khi cài đặt các kho lưu trữ cần thiết, hãy cài đặt các mô-đun Kernel và các công cụ WireGuard.

Bước 2: Cài đặt mô-đun Kernel và công cụ WireGuard

Các mô-đun Kernel và công cụ WireGuard có thể được cài đặt nhanh chóng từ các kho EPEL và Elrepo bằng cách ra lệnh sau:

Mã nguồn [Chọn]
$ sudo dnf install kmod-wireguard wireguard-tools

Khi bạn được nhắc cho phép nhập và thêm các phím GPG vào hệ thống CentOS 8, hãy cho phép hành động này bằng cách gõ "Y" và nhấn "Enter".



Sau khi cài đặt thành công các công cụ WireGuard, bây giờ chúng ta sẽ thực hiện một số cấu hình.

Bước 3: Tạo khóa công khai và khóa riêng tư

Đầu tiên, mình sẽ tạo một thư mục '/etc/wireguard' mới để mình có thể cấu hình máy chủ VPN trong thư mục. Để tạo thư mục '/etc/wireguard' mới trong hệ thống CentOS 8, hãy sử dụng lệnh sau.

Mã nguồn [Chọn]
$ sudo mkdir /etc/wireguard

Sau khi tạo thư mục, hãy tạo khóa công khai và khóa riêng tư bằng công cụ dòng lệnh "wg" và "tee". Lệnh tạo khóa riêng tư và khóa công khai như sau.

Mã nguồn [Chọn]
$ wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Khóa được tạo sẽ được in khi thực hiện lệnh trên.

Bước 4: Cấu hình thiết bị đường hầm để định tuyến lưu lượng truy cập VPN

Để thiết lập thiết bị, hãy tạo tập tin cấu hình trong thư mục '/etc/wireguard' và mở tập tin bằng trình chỉnh sửa nano.

Trước khi tạo tập tin cấu hình, hãy lấy Khóa cá nhân bằng lệnh sau.

Mã nguồn [Chọn]
$ sudo cat /etc/wireguard/privatekey

Lưu khóa cá nhân ở đâu đó; bạn sẽ cần khóa này sau này trong tập tin cấu hình.

Bây giờ, tạo tập tin "wg0.conf".

Mã nguồn [Chọn]
$ sudo nano /etc/wireguard/wg0.conf

Thêm nội dung được cung cấp bên dưới vào tập tin "/etc/wireguard/wg0.conf".

Mã nguồn [Chọn]
[Interface]

## IP Address of VPN server ##
Address = 192.168.18.200/24

## Save the configuration when a new client will add ##
SaveConfig = true

## port number of VPN server ##
ListenPort = 51820

## Private Key of VPN Server ##
PrivateKey = SERVER_PRIVATE_KEY

## Command to be executed before starting the interface ##
PostUp     = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade

## Command to be executed before turning off the interface ##
PostDown   = firewall-cmd --remove-port 51820/udp --zone=public && firewall-cmd --remove-masquerade --zone=public

Tập tin cấu hình này chứa các điều khoản chính sau:

  • Address - địa chỉ IP riêng cho Giao diện mạng (wg0).
  • SaveConfig = true - lưu trạng thái của giao diện mạng khi khởi động lại hoặc tắt máy chủ.
  • ListenPort - cổng nơi tiến trình nền WireGuard lắng nghe.
  • PrivateKey - khóa mà mình vừa tạo.
  • PostUp - lệnh này sẽ được thực thi trước khi kích hoạt giao diện mạng
  • PostDown - lệnh này sẽ được thực hiện trước khi tắt giao diện mạng.


Bây giờ bạn đã hiểu khá rõ về tập tin cấu hình, bạn có thể lưu tập tin và thoát bằng cách sử dụng phím tắt (CTRL + S) và (CTRL + X).

Bước 5: Đặt các đặc quyền của cấu hình và tập tin "privatekey"

Bây giờ, chúng sẽ làm cho máy chủ VPN an toàn hơn một chút. Người dùng cơ bản không được có đặc quyền đọc tập tin cấu hình và tập tin 'khóa riêng'.

Để cung cấp quyền truy cập vào các tập tin này, chúng ta sẽ thay đổi chế độ của hai tập tin này thành 600. Lệnh thiết lập quyền được đưa ra bên dưới.

Mã nguồn [Chọn]
$ sudo chmod 600 /etc/wireguard/privatekey

Mã nguồn [Chọn]
$ sudo chmod 600 /etc/wireguard/wg0.conf

Sau khi hoàn tất các quyền, mình sẽ kích hoạt giao diện mạng (wg0) bằng công cụ dòng lệnh wg-quick.

Bước 6: Khởi động giao diện mạng

Để kích hoạt giao diện mạng, hãy sử dụng lệnh dưới đây:

Mã nguồn [Chọn]
$ sudo wg-quick up wg0

Nếu bạn đã nhận được kết quả hiển thị trong ảnh chụp màn hình ở trên, bạn đã khởi động giao diện mạng thành công. Bây giờ chúng ta sẽ kiểm tra trạng thái của giao diện mạng.

Mã nguồn [Chọn]
$ sudo wg

Bật giao diện mạng để tự động khởi động giao diện mạng khi khởi động máy chủ CentOS 8.

Mã nguồn [Chọn]
$ sudo systemctl enable wg-quick@wg0

Ở giai đoạn này, quá trình thiết lập máy chủ đã hoàn tất. Bây giờ, nếu bạn muốn thiết lập máy chủ VPN này cho NAT, bạn sẽ cần bật chuyển tiếp IPv4.

Bước 7: Bật chuyển tiếp IPv4

Để bật chuyển tiếp IPv4 cho NAT, hãy tạo tập tin "99-custom.conf" trong thư mục "/etc/sysctl.d" bằng trình chỉnh sửa nano.

Mã nguồn [Chọn]
$ sudo nano /etc/sysctl.d/99-custom.conf

Thêm nội dung sau vào "/etc/sysctl.d/99-custom.conf"

Mã nguồn [Chọn]
## for enabling IPv4 forwarding ##
net.ipv4.ip_forward = 1

Để bật chuyển tiếp IPv6, hãy thêm nội dung sau vào tập tin "/etc/sysctl.d/99-custom.conf".

Mã nguồn [Chọn]
## for enabling IPv6 forwarding ##
net.ipv6.conf.all.forwarding = 1


Sau khi bật chuyển tiếp IPv4, hãy lưu tập tin và thoát bằng các phím tắt (CTRL + S) và (CTRL + X).

Bây giờ chúng ta hãy chuyển sang thiết lập máy Khách hàng WireGuard.

2. Cài đặt và cấu hình WireGuard VPN trên Máy khách CentOS 8

Trong phần này, chúng ta sẽ thiết lập một máy CentOS 8 hoạt động như một máy khách. Quá trình cài đặt và cấu hình máy khách WireGuard VPN sẽ gần giống như quá trình đối với máy chủ WireGuard VPN.

Bước 1: Thêm các kho EPEL và Elrepo

Đầu tiên, chúng ta sẽ thêm các kho EPEL và Elrepo để cài đặt các mô-đun Kernel và các công cụ WireGuard:

Mã nguồn [Chọn]
$ sudo dnf install epel-release elrepo-release -y


Bây giờ, sau khi cài đặt các kho lưu trữ cần thiết, chúng ta sẽ cài đặt các mô-đun Kernel và Công cụ WireGuard.

Bước 2: Cài đặt mô-đun Kernel và Công cụ WireGuard

Các mô-đun Kernel và các công cụ WireGuard hiện có thể được cài đặt từ các kho EPEL và Elrepo bằng cách đưa ra lệnh sau.

Mã nguồn [Chọn]
$ sudo dnf install kmod-wireguard wireguard-tools

Khi bạn được yêu cầu quyền nhập và thêm các phím GPG vào hệ thống CentOS 8, hãy cho phép các thay đổi bằng cách gõ "Y" và nhấn "Enter".



Sau khi các công cụ WireGuard được cài đặt thành công, máy khách CentOS 8 cũng cần được cấu hình.

Bước 3: Tạo khóa công khai và khóa riêng tư

Trong bước này, mình sẽ tạo một thư mục '/etc/wireguard' mới trong máy khách.

Để tạo thư mục '/etc/wireguard' mới trong hệ thống CentOS 8 của bạn, hãy nhập lệnh sau.

Mã nguồn [Chọn]
$ sudo mkdir /etc/wireguard

Sau khi tạo thư mục, hãy tạo khóa công khai và khóa riêng tư bằng công cụ dòng lệnh "wg" và "tee".

Lệnh tạo khóa riêng tư và khóa công khai được cung cấp bên dưới.

Mã nguồn [Chọn]
$ wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Các khóa đã tạo bây giờ sẽ được in.

Bước 4: Cấu hình cho định tuyến lưu lượng VPN

Trong bước này, mình sẽ tạo một tập tin cấu hình trong thư mục '/etc/wireguard' và mở nó bằng trình chỉnh sửa nano.

Trước khi tạo tập tin cấu hình, hãy lấy Khóa riêng bằng lệnh sau.

Mã nguồn [Chọn]
$ sudo cat /etc/wireguard/privatekey

Lưu khóa cá nhân ở đâu đó, bạn sẽ cần nó sau này trong tập tin cấu hình.

Bây giờ, tạo tập tin "wg0.conf".

Mã nguồn [Chọn]
$ sudo nano /etc/wireguard/wg0.conf

Thêm nội dung được cung cấp bên dưới vào tập tin "/etc/wireguard/wg0.conf"

Mã nguồn [Chọn]
[Interface]
## Private Key of VPN Client ##
PrivateKey = 8D8puLQCbUw+51wPE3Q7KutGxQhUvsy+a+DBgamb+3o=

## IP address of VPN Client ##
Address = 192.168.18.201/24

[Peer]
## Public Key of CentOS 8 VPN Server ##
PublicKey = VWndJ4oB7ZJwC/7UOm++OLDrbAxMPsR2yd0cl3sEkUI=

## set ACL ##
AllowedIPs = 0.0.0.0/0

## IP address and Port of CentOS 8 VPN Server ##
Endpoint = 192.168.18.200:51820

Tập tin cấu hình chứa các điều khoản chính sau:

  • PrivateKey - khóa được tạo trên máy khách.
  • Address - địa chỉ IP cho Giao diện mạng (wg0).
  • PublicKey - khóa công khai của máy chủ VPN mà mình muốn kết nối.
  • AllowedIPs - tất cả các địa chỉ IP được phép cho luồng lưu lượng sử dụng VPN.
  • Endpoint - mình sẽ cung cấp địa chỉ IP và số cổng của máy chủ CentOS 8 mà mình muốn kết nối.


Bây giờ chúng ta cũng đã cấu hình máy khách. Lưu tập tin và thoát bằng phím tắt (CTRL + S) và (CTRL + X).

Bước 5: Đặt các đặc quyền của cấu hình và tập tin "privatekey"

Bây giờ, chúng ta sẽ thay đổi chế độ và đặt các đặc quyền của tập tin cấu hình và tập tin "privatekey" thành 600.

Nhập lệnh sau để đặt quyền.

Mã nguồn [Chọn]
$ sudo chmod 600 /etc/wireguard/privatekey

Mã nguồn [Chọn]
$ sudo chmod 600 /etc/wireguard/wg0.conf

Bây giờ chúng ta đã hoàn tất các quyền, chúng ta có thể kích hoạt giao diện mạng (wg0) bằng công cụ dòng lệnh "wg-quick".

Bước 6: Khởi động giao diện

Để kích hoạt giao diện, hãy sử dụng lệnh dưới đây:

Mã nguồn [Chọn]
$ sudo wg-quick up wg0

Bây giờ chúng ta đã khởi động thành công giao diện mạng. Tiếp theo, chúng ta sẽ kiểm tra trạng thái của giao diện.

Mã nguồn [Chọn]
$ sudo wg

Bật giao diện mạng để tự động khởi động giao diện mạng khi khởi động máy khách CentOS 8.

Mã nguồn [Chọn]
$ sudo systemctl enable wg-quick@wg0

Ở giai đoạn này, khách hàng cũng đã được thiết lập.

Bước 7: Thêm địa chỉ IP và khóa công khai của máy khách vào máy chủ CentOS 8

Bước cuối cùng là thêm địa chỉ IP và khóa công khai của máy khách VPN vào tập tin cấu hình của máy chủ CentOS 8 WireGuard VPN.

Quay lại máy chủ và thêm nội dung sau vào tập tin "/etc/wireguard/wg0.conf".

Mã nguồn [Chọn]
[Peer]
## Public Key of VPN Client ##
PublicKey = dmfO9pirB315slXOgxXtmrBwAqPy07C57EvPks1IKzA=

## IP Address of VPN Client ##
AllowedIPs = 192.168.10.2/32


Sau khi cập nhật tập tin cấu hình của máy chủ VPN, hãy lưu tập tin và thoát bằng phím tắt (CTRL + S) và (CTRL + X).

Đường hầm hiện đã được thiết lập và tất cả lưu lượng sẽ được chuyển qua máy chủ CentOS 8 WireGuard VPN.

Bước 8: Xác minh kết nối đường hầm

Để xác minh rằng máy chủ CentOS 8 WireGuard VPN đã được cài đặt và cấu hình đúng cách, hãy đưa ra lệnh dưới đây để xác minh rằng lưu lượng truy cập đang chạy qua Máy chủ VPN WireGuard đã được cấu hình.

Mã nguồn [Chọn]
$ sudo wg

Như vậy chúng đã đã cấu hình và thiết lập thành công máy chủ WireGuard VPN.

Bài viết này đã hướng dẫn bạn cách cài đặt và cấu hình WireGuard VPN trên máy CentOS 8 của bạn và thiết lập hệ thống làm máy chủ VPN. Mình cũng đã hướng dẫn bạn cách thiết lập Máy khách CentOS 8 WireGuard VPN và cấu hình máy khách để định tuyến lưu lượng truy cập thông qua máy chủ WireGuard VPN.