WireGuard là một VPN (Virtual Private Network) hỗ trợ kết nối IPv4 và IPv6. VPN cho phép bạn truy cập vào các mạng không đáng tin cậy giống như bạn đang ở trên mạng riêng tư. Bạn có thể truy cập internet an toàn, bảo mật thông tin khi kết nối vào một mạng không đáng tin cậy. Trong bài viết này, Vietnix sẽ hướng dẫn bạn thiết lập WireGuard trên Ubuntu 20.04.
Yêu cầu để thiết lập WireGuard trên Ubuntu 20.04
Để thực hiện được các bước trong bài viết này, bạn cần:
![Cách thiết lập WireGuard trên Ubuntu 20.04 2 Yêu cầu để thiết lập WireGuard trên Ubuntu 20.04](https://static-xf1.vietnix.vn/wp-content/uploads/2023/11/thiet-lap-wireguard-tren-ubuntu-20-04.png)
- Một máy chủ Ubuntu 20.04 với người dùng không phải là root có quyền sudo và tường lửa đã được kích hoạt. Trong bài viết này, máy chủ sẽ được gọi là WireGuard Server.
- Bạn sẽ cần một máy tính khách (client) để kết nối với WireGuard Server của bạn. Trong bài viết này, máy khách sẽ được gọi là WireGuard Peer. Bạn có thể sử dụng máy tính của mình hoặc máy chủ từ xa, điện thoại di động để làm WireGuard Peer.
- Nếu sử dụng WireGuard với IPv6, bạn cần đảm bảo rằng máy chủ của bạn đã được cấu hình hỗ trợ lưu lượng này.
Bước 1: Cài đặt WireGuard và tạo cặp khóa
Đầu tiên, cài đặt WireGuard trên máy chủ của bạn. Để bắt đầu, hãy cập nhật chỉ mục gói của máy chủ WireGuard và cài đặt WireGuard bằng các lệnh sau.
sudo apt update sudo apt install wireguard
Tiếp theo tạo một cặp khóa riêng tư và khóa công khai cho máy chủ. Bạn sẽ sử dụng các lệnh wg genkey
và wg pubkey
đã được tích hợp sẵn để tạo khóa. Sau đó, khóa riêng tư sẽ được thêm vào file cấu hình của WireGuard.
Bạn cũng cần thay đổi quyền truy cập vào khóa mà bạn vừa tạo bằng lệnh chmod
. Vì theo mặc định file có thể được đọc bởi bất kỳ người dùng nào trên máy chủ của bạn.
Tạo khóa riêng tư cho WireGuard và thay đổi quyền truy cập bằng các lệnh sau:
wg genkey | sudo tee /etc/wireguard/private.key sudo chmod go= /etc/wireguard/private.key
Lệnh sudo chmod go= ...
sẽ xóa bỏ quyền truy cập trên file cho người dùng và nhóm ngoài người dùng root. Chỉ có root mới có thể truy cập vào khóa riêng tư.
Bạn sẽ nhận được một dòng đầu ra được mã hóa base64
. Đó chính là khóa riêng tư. Một bản sao của khóa riêng tư cũng được lưu trữ trong tệp /etc/wireguard/private.key
để sử dụng sau này bằng phần ghi của lệnh tee
. Khóa riêng tư sẽ được thêm vào file cấu hình WireGuard sau này.
Bước tiếp theo là tạo khóa công khai tương ứng với khóa riêng tư. Bạn sử dụng lệnh sau để tạo file khóa công khai:
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
Lệnh này bao gồm ba lệnh riêng rẽ và được kết nối với nhau bằng toán tử |
(pipe):
sudo cat /etc/wireguard/private.key
: Lệnh này giúp đọc file khóa riêng và đưa ra những output theo tiêu chuẩn.wg pubkey
: Lấy output từ lệnh đầu tiên làm input theo tiêu chuẩn và xử lý để tạo ra một khóa công khai.sudo tee /etc/wireguard/public.key
: Lấy output từ lệnh tạo khóa công khai và chuyển hướng kết quả vào file có tên/etc/wireguard/public.key
.
Khi chạy lệnh này, bạn sẽ nhận được một dòng duy nhất được mã hóa base64
. Đó chính là khóa công khai cho WireGuard Server của bạn. Hãy lưu lại nó.
Bước 2: Lựa chọn địa chỉ IPv4 và IPv6
Trong phần này, bạn sẽ tạo một file cấu hình cho máy chủ và thiết lập WireGuard tự động khởi động khi máy chủ của bạn khởi động lại. Bạn cũng sẽ xác định địa chỉ IPv4 và IPv6 riêng để sử dụng với WireGuard Server và các peer của nó.
Nếu bạn sử dụng cả địa chỉ IPv4 và IPv6 thì hãy làm theo cả hai phần dưới đây. Nếu không, bạn chỉ cần làm theo phần phù hợp với nhu cầu mạng VPN của bạn.
Lựa chọn dải địa chỉ IPv4
Nếu bạn sử dụng WireGuard Server với các peer IPv4, server cần một phạm vi địa chỉ IPv4 riêng để sử dụng với client và giao diện tunnel. Bạn có thể chọn bất kỳ dải địa chỉ IP nào từ các khối địa chỉ sau:
10.0.0.0
đến10.255.255.255
(tiền tố 10/8).172.16.0.0
đến172.31.255.255
(tiền tố 172.16/12).192.168.0.0
đến192.168.255.255
(tiền tố 192.168/16).
Dải địa chỉ IP được lựa chọn sử dụng trong bài viết là 10.8.0.0/24
. Phạm vi này sẽ cho phép kết nối với 255 peer khác nhau. Đây là địa chỉ thông thường nên không trùng lặp hoặc xung đột với các phạm vi IP riêng tư khác. Nếu địa chỉ này không tương thích với cấu hình mạng của bạn, hãy tự lựa chọn một địa chỉ phù hợp với cấu hình mạng của bạn.
WireGuard Server sẽ sử dụng một địa chỉ trong dải địa chỉ IP này cho địa chỉ tunnel riêng của IPv4. Trong bài viết sử dụng dải 10.8.0.1/24
. Bạn có thể sử dụng bất kỳ địa chỉ nào trong phạm vi từ 10.8.0.1
đến 10.8.0.255
. Hãy note lại địa chỉ IP mà bạn chọn nếu bạn sử dụng một địa chỉ khác với 10.8.0.1/24
. Bạn sẽ thêm địa chỉ IPv4 này vào file cấu hình xác định trong Bước 3: Tạo cấu hình WireGuard Server.
Lựa chọn dải địa chỉ IPv6
Nếu bạn đang sử dụng WireGuard với IPv6, bạn sẽ cần tạo một tiền tố cho địa chỉ IPv6 dựa trên thuật toán trong RFC 4193. Các địa chỉ mà bạn sử dụng với WireGuard sẽ được liên kết với một giao diện ảo của tunnel. Bạn sẽ cần thực hiện một vài bước để tạo tiền tố IPv6 ngẫu nhiên và duy nhất trong khối fd00::/8
.
Cách để có được tiền tố IPv6 duy nhất là kết hợp thời gian trong ngày với giá trị định danh duy nhất từ hệ thống như số serial hoặc ID thiết bị. Những giá trị đó được băm và cắt ngắn. Kết quả là một tập hợp các bit được sử dụng như một địa chỉ duy nhất trong khối địa chỉ IPv6 riêng fd00::/8
.
Lấy thời gian hiện tại ở dạng 64 bit bằng cách sử dụng tiện ích date
:
date +%s%N
Bạn sẽ nhận được số có dạng như Số giây (phần %s
trong lệnh date
) và nanosecond (phần %N
) kể từ 1970-01-01 00:00:00 UTC được kết hợp với nhau:
Output 1628101352127592197
Hãy ghi lại giá trị đó để sử dụngtrong phần sau phần này. Tiếp theo, bạn sao chép giá trị machine-id
từ tệp /var/lib/dbus/machine-id
. ID này là duy nhất đối với hệ thống của bạn và không nên thay đổi trong suốt thời gian server tồn tại.
cat /var/lib/dbus/machine-id
Bạn sẽ nhận được kết quả như sau:
/var/lib/dbus/machine-id 20086c25853947c7aeee2ca1ea849d7d
Bây giờ, bạn cần kết hợp dấu thời gian với machine-id
và băm giá trị kết quả bằng thuật toán SHA-1. Lệnh sẽ sử dụng sẽ như sau:
printf <timestamp><machine-id> | sha1sum
Chạy lệnh thay thế giá trị timestamp và machine identity của bạn:
printf 162810135212759219720086c25853947c7aeee2ca1ea849
Bạn sẽ nhận được một giá trị băm (hash value) như sau:
Output 4f267c51857d6dc93a0bca107bca2f0d86fac3bc -
Lưu ý rằng output của lệnh sha1sum
là ở hệ thập lục phân (hexadecimal). Vì vậy output sử dụng hai ký tự để biểu diễn một byte dữ liệu. Ví dụ, 4f
và 26
trong output ví dụ là hai byte đầu tiên của dữ liệu được băm.
Thuật toán trong RFC chỉ yêu cầu 40 bit cuối cùng (đuôi) hoặc 5 byte của output đã băm. Do đó, bạn cần sử dụng lệnh cut
để in ra 5 byte mã hóa thập lục phân cuối cùng từ giá trị băm:
printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-
Tham số -c
cho lệnh cut
chỉ chọn một tập hợp cụ thể các ký tự. Đối số 31-
cho biết cut
in ra tất cả các ký tự từ vị trí 31 đến cuối dòng output.
Bạn sẽ nhận được kết quả như sau:
Output 0d86fac3bc
Trong output ví dụ này, tập byte là: 0d 86 fa c3 bc
.
Bây giờ bạn có thể tạo tiền tố mạng IPv6 duy nhất bằng cách nối 5 byte đã tạo ra với tiền tố fd
. Hãy phân tách 2 byte bằng dấu :
để dễ đọc. Mỗi mạng con trong tiền tố duy nhất của bạn có thể chứa tổng cộng 18,446,744,073,709,551,616 địa chỉ IPv6. Bạn có thể giới hạn kích thước mạng con thành /64
để đơn giản hơn.
Khi sử dụng các byte được tạo ra với kích thước mạng con /64
, tiền tố kết quả sẽ là như sau:
Unique Local IPv6 Address Prefix fd0d:86fa:c3bc::/64
Dải địa chỉ fd0d:86fa:c3bc::/64
sẽ sử dụng để chỉ định các địa chỉ IP riêng cho các giao diện tunnel WireGuard trên máy chủ và peer. Để cấp phát một địa chỉ IP cho máy chủ, thêm số 1
sau các ký tự ::
ở cuối cùng. Địa chỉ kết quả sẽ là fd0d:86fa:c3bc::1/64
.
Các peer có thể sử dụng bất kỳ địa chỉ IP nào trong phạm vi này. Thường thì bạn sẽ tăng giá trị địa chỉ thêm một đơn vị mỗi khi thêm một peer ví dụ như fd0d:86fa:c3bc::2/64
. Hãy ghi nhớ địa chỉ IP và tiếp tục cấu hình WireGuard Server trong các phần tiếp theo của bài viết này.
Bước 3: Tạo cấu hình WireGuard Server
Trước khi tạo cấu hình cho WireGuard Server, bạn sẽ cần có:
- Khóa riêng tư từ Bước 1 – Cài đặt WireGuard và Tạo cặp khóa.
- Nếu bạn đang sử dụng WireGuard với IPv4, bạn cần địa chỉ IP đã chọn cho máy chủ ở Bước 2(a). Trong ví dụ này, địa chỉ IP là
10.8.0.1/24
. - Nếu bạn đang sử dụng WireGuard với IPv6, bạn cần địa chỉ IP cho máy chủ tạo ra ở Bước 2(b). Trong ví dụ này, địa chỉ IP là
fd0d:86fa:c3bc::1/64
.
Sau khi có khóa riêng tư và địa chỉ IP, hãy tạo một file cấu hình mới bằng nano
. Để tạo file mới bạn hãy chạy lệnh sau:
sudo nano /etc/wireguard/wg0.conf
Sau khi tạo được file, bạn thêm các dòng dưới đây vào file. Thay thế khóa riêng tư vào giá trị base64_encoded_private_key_goes_here
và địa chỉ IP trên dòng Address
. Bạn cũng có thể thay đổi dòng ListenPort
nếu bạn muốn WireGuard trên cổng khác:
[Interface] PrivateKey = base64_encoded_private_key_goes_here Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64 ListenPort = 51820 SaveConfig = true
Dòng SaveConfig
đảm bảo khi một giao diện WireGuard bị tắt, các thay đổi sẽ được lưu vào file cấu hình.
Sau khi thực hiện xong, bạn lưu và đóng tệp /etc/wireguard/wg0.conf
. Nếu bạn đang sử dụng nano
, bạn có thể thực hiện lưu và đóng bằng cách ấn CTRL+X
, sau đó nhấn Y
và ENTER
. Bây giờ bạn đã có cấu hình máy chủ ban đầu. Bạn có thể thêm các tuỳ chọn tùy thuộc vào cách bạn sử dụng máy chủ VPN WireGuard của mình.
Bước 4: Điều chỉnh cấu hình mạng cho WireGuard Server
Nếu bạn sử dụng WireGuard để kết nối một peer đến WireGuard Server để truy cập vào các dịch vụ trên server thì bạn không cần thực hiện phần này. Nếu bạn muốn định tuyến lưu lượng Internet của WireGuard Peer qua WireGuard Server thì bạn cần làm theo phần sau đây.
Đầu tiên, bạn cần cấu hình chuyển tiếp IP. Để cấu hình chuyển tiếp IP, mở file /etc/sysctl.conf
bằng nano
hoặc trình chỉnh sửa bất kỳ:
sudo nano /etc/sysctl.conf
Nếu bạn đang sử dụng IPv4 với WireGuard, hãy thêm dòng sau vào cuối file:
net.ipv4.ip_forward=1
Nếu bạn đang sử dụng IPv6 với WireGuard, hãy thêm dòng sau vào cuối file:
net.ipv6.conf.all.forwarding=1
Nếu bạn đang sử dụng cả IPv4 và IPv6, hãy thêm cả hai dòng vào cuối file. Lưu và đóng file khi bạn hoàn thành.
Để đọc file và tải các giá trị mới cho phiên làm việc hiện tại của bạn, bạn chạy lệnh sau:
sudo sysctl -p
Output net.ipv6.conf.all.forwarding = 1 net.ipv4.ip_forward = 1
Bây giờ WireGuard Server có thể chuyển tiếp lưu lượng từ thiết bị ethernet VPN ảo đến các thiết bị khác trên server và đến Internet công cộng. Khi sử dụng cấu hình này, bạn có thể định tuyến toàn bộ lưu lượng web từ WireGuard Peer qua địa chỉ IP của server. Địa chỉ IP công khai của máy khách sẽ được ẩn đi.
Tuy nhiên, trước khi lưu lượng được định tuyến qua server, bạn cần phải cấu hình một số quy tắc tường lửa. Những quy tắc này sẽ đảm bảo lưu lượng đến và đi từ WireGuard Server và Peers được chuyển tiếp đúng nhất.
Bước 5: Cấu hình tường lửa cho WireGuard Server
Thực hiện bước này để đảm bảo việc điều chỉnh lưu lượng truy cập giữa server và các client được thực hiện chính xác. Tuy nhiên, bạn không cần thực hiện bước này nếu bạn sử dụng VPN WireGuard để truy cập vào tài nguyên bị giới hạn trên VPN.
Để cho phép lưu lượng VPN WireGuard đi qua tường lửa của server, bạn cần bật chức năng masquerading. Đây là một khái niệm iptables cung cấp chuyển đổi địa chỉ mạng động (NAT) để điều chỉnh các kết nối của client.
Đầu tiên, bạn cần tìm tên giao diện mạng công cộng của WireGuard Server bằng cách sử dụng lệnh con ip route
:
ip route list default
Giao diện công cộng là chuỗi được tìm thấy trong outpu nằm sau từ “dev”. Ví dụ, ở trong kết quả này, giao diện được đặt tên là eth0:
Output default via 203.0.113.1 dev eth0 proto static
Hãy ghi nhớ tên thiết bị của bạn vì bạn sẽ thêm nó vào các quy tắc iptables
ở bước tiếp theo.
Để thêm các quy tắc tường lửa cho WireGuard Server. Bạn hãy mở file /etc/wireguard/wg0.conf
với nano
hoặc trình soạn thảo bất kỳ.
sudo nano /etc/wireguard/wg0.conf
Ở cuối file, sau dòng SaveConfig = true
, bạn dán vào các dòng sau đây:
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
Các dòng PostUp
sẽ chạy khi WireGuard Server khởi động tunnel VPN ảo. Trong ví dụ này, ba quy tắc ufw
và iptables
sẽ được thêm:
ufw route allow in on wg0 out on eth0
: Rule này sẽ cho phép chuyển tiếp lưu lượng IPv4 và IPv6 vào giao diện mạng VPNwg0
đến giao diện mạngeth0
trên máy chủ. Quy tắc hoạt động kết hợp với giá trị sysctlnet.ipv4.ip_forward
vànet.ipv6.conf.all.forwarding
mà bạn đã cấu hình ở phần trước.iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
: Rule này cấu hình giả và chỉnh sửa lưu lượng IPv4 vào giao diện mạng VPNwg0
giống như bắt nguồn trực tiếp từ địa chỉ IPv4 công khai của WireGuard Server.ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
: Cấu hình giả và chỉnh sửa lưu lượng IPv6 vào giao diện mạng VPNwg0
giống như bắt nguồn trực tiếp từ địa chỉ IPv6 công khai của WireGuard Server.
Các rule PreDown
được chạy khi WireGuard Server ngừng kết nối virtual VPN tunnel. Những rule này ngược với PostUp
và hoạt động để hoàn tác các rule chuyển tiếp và rule giả cho giao diện VPN khi VPN bị ngừng.
Trong cả hai trường hợp, hãy chỉnh sửa cấu hình phù hợp với VPN của bạn. Ví dụ, nếu chỉ sử dụng IPv4, bạn có thể loại bỏ các dòng lệnh với lệnh ip6tables
.
Ngược lại, nếu bạn chỉ sử dụng IPv6, hãy chỉnh sửa cấu hình để chỉ còn các lệnh ip6tables
. Nên có các dòng lệnh ufw
khi kết hợp mạng IPv4 và IPv6. Sau đó, bạn hãy lưu và đóng tệp khi bạn hoàn tất.
Phần cuối cùng của việc cấu hình tường lửa trên WireGuard Server là cho phép lưu lượng vào và ra từ cổng UDP của WireGuard. Nếu bạn không thay đổi cổng trong file /etc/wireguard/wg0.conf
của máy chủ, cổng sẽ được mở là 51820
. Nếu bạn chọn một cổng khác khi chỉnh sửa cấu hình, hãy thay thế trong lệnh UFW sau đây.
Trong trường hợp bạn quên mở cổng SSH, hãy thêm vào lệnh:
sudo ufw allow 51820/udp sudo ufw allow OpenSSH
Lưu ý: Nếu bạn đang sử dụng tường lửa khác hoặc đã tùy chỉnh cấu hình UFW, có thể bạn cần thêm các quy tắc tường lửa bổ sung. Ví dụ bạn quyết định định tuyến tất cả lưu lượng mạng của mình qua kết nối VPN. Bạn cần đảm bảo lưu lượng cổng 53 cho các yêu cầu DNS, cổng 80 và 443 cho lưu lượng HTTP và HTTPS tương ứng. Nếu có các giao thức khác đang sử dụng qua kết nối VPN, bạn cũng cần thêm các quy tắc cho chúng.
Sau khi thêm các quy tắc đó, bạn hãy khởi động lại UFW để tải các thay đổi từ tất cả các file bạn đã sửa đổi:
sudo ufw disable sudo ufw enable
Bạn có thể kiểm tra các quy tắc đã được áp dụng bằng cách chạy lệnh ufw status
. Khi chạy lệnh đó, bạn sẽ nhận được output giống như sau:
sudo ufw status
Output Status: active To Action From 51280/udp ALLOW Anywhere 22/tcp ALLOW Anywhere 51280/udp (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6)
WireGuard Server đã được cấu hình để xử lý lưu lượng VPN chính xác. Với các quy tắc tường lửa đã được trên, bạn có thể bắt đầu dịch vụ WireGuard để lắng nghe kết nối peer.
Bước 6: Khởi động WireGuard Server
WireGuard có thể được cấu hình để chạy dưới dạng dịch vụ systemd
bằng cách sử dụng tập lệnh wg-quick
được tích hợp sẵn. Bạn có thể sử dụng lệnh wg
để tạo tunnel mỗi khi muốn sử dụng VPN. Nhưng việc lặp đi lặp lại như vậy rất dễ xảy ra lỗi. Thay vào đó, bạn có thể sử dụng systemctl
để quản lý tunnel với sự trợ giúp của tập lệnh wg-quick
.
Sử dụng dịch vụ systemd
có nghĩa là bạn có thể cấu hình WireGuard khởi động cùng boot. Bạn có thể kết nối với VPN bất cứ lúc nào miễn là máy chủ đang chạy. Để làm điều này, hãy kích hoạt dịch vụ wg-quick
cho tunnel wg0
bằng cách thêm nó vào systemctl
:
sudo systemctl enable wg-quick@wg0.service
Chú ý rằng lệnh chỉ định wg0
của thiết bị tunnel như một phần của tên dịch vụ. Tên này tương ứng với file cấu hình /etc/wireguard/wg0.conf
. Cách tiếp cận này về tên gọi có nghĩa là bạn có thể tạo nhiều tunnel VPN riêng mà bạn muốn sử dụng trên máy chủ.
Ví dụ, bạn có thể có một thiết bị tunnel và tên là prod. File cấu hình sẽ là /etc/wireguard/prod.conf
. Mỗi cấu hình tunnel có thể chứa các cài đặt tường lửa IPv4, IPv6 và client khác nhau. Như vậy, bạn có thể hỗ trợ nhiều kết nối khác nhau. Mỗi kết nối có địa chỉ IP và quy tắc định tuyến riêng.
Sau đó bắt đầu dịch vụ bằng lệnh:
sudo systemctl start wg-quick@wg0.service
Bạn có thể kiểm tra lại dịch vụ WireGuard đang hoạt động với lệnh sau. Bạn sẽ thấy active (running)
trong output:
sudo systemctl status wg-quick@wg0.service
Output ● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2021-08-25 15:24:14 UTC; 5s ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 3245 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 3245 (code=exited, status=0/SUCCESS) Aug 25 15:24:14 wg0 wg-quick[3245]: [#] wg setconf wg0 /dev/fd/63 Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -4 address add 10.8.0.1/24 dev wg0 Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0 Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip link set mtu 1420 up dev wg0 Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ufw route allow in on wg0 out on eth0 Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added (v6) Aug 25 15:24:14 wg0 wg-quick[3245]: [#] iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE Aug 25 15:24:14 wg0 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.
Output hiển thị các lệnh ip
được sử dụng để tạo thiết bị wg0
ảo và gán các địa chỉ IPv4 và IPv6 mà bạn đã thêm vào file cấu hình. Bạn có thể sử dụng các quy tắc này để khắc phục sự cố trong tunnel. Hoặc bạn có thể dùng lệnh wg
trực tiếp nếu muốn thử cấu hình VPN interface bằng tay.
WireGuard là một giải pháp tuyệt vời để đảm bảo tính riêng tư, bảo mật và ổn định của hệ thống. Tuy nhiên, để đạt được hiệu suất tối đa và đảm bảo cho việc vận hành máy chủ được ổn định và mượt mà, cần phải chú ý đến tốc độ. VPS Vietnix sẽ là giải pháp tối ưu đảm bảo toàn bộ những yếu tố này. Vietnix cung cấp các gói VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS GPU với nhiều mức giá và cấu hình đa dạng để đáp ứng các nhu cầu khác nhau của khách hàng.
Với cấu hình mạnh mẽ, tình năng bảo mật – backup dữ liệu cùng đội ngũ kỹ thuật giàu chuyên môn, Vietnix là một lựa chọn tuyệt vời cho các nhà phát triển và doanh nghiệp đang tìm kiếm giải pháp VPS tốc độ cao để đạt được hiệu suất tối đa. Hãy liên hệ với Vietnix để được tư vấn về gói VPS theo nhu cầu của bạn.
Bước 7: Cấu hình WireGuard Peer
Cấu hình một WireGuard peer tương tự như thiết lập WireGuard Server. Khi đã cài đặt phần mềm khách, bạn sẽ tạo ra một cặp khóa riêng tư và công khai. Sau đó xác định địa chỉ IP cho peer hoặc peer, xác định một file cấu hình cho peer. Tiếp theo là thiết lập tunnel bằng cách sử dụng tập lệnh wg-quick
.
Bạn có thể thêm nhiều peer vào VPN của mình. Nếu bạn thêm nhiều peer vào VPN, hãy đảm bảo các địa chỉ IP không bị xung đột với nhau.
Để cấu hình WireGuard Peer, bạn cần cài đặt gói WireGuard bằng các lệnh apt
dưới đây. Trên WireGuard peer, chạy câu lệnh:
sudo apt update sudo apt install wireguard
Tạo cặp khóa cho WireGuard Peer
Thực hiện tương tự như thao tác trên máy chủ. Hãy gõ câu lệnh sau để tạo khóa riêng cho máy khách:
wg genkey | sudo tee /etc/wireguard/private.key sudo chmod go= /etc/wireguard/private.key
Bạn sẽ nhận được khoá riêng tư dưới dạng một dòng mã hóa base64
. Bản sao của khoá này cũng được lưu trữ trong /etc/wireguard/private.key
. Chú ý note lại khóa riêng tư vì bạn sẽ cần thêm nó vào file cấu hình WireGuard.
Tiếp theo, sử dụng lệnh sau để tạo file khóa công khai:
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
Bạn sẽ nhận được một dòng mã hóa base64
là khóa công khai cho WireGuard Peer. Hãy ghi lại khoá ở đâu đó. Bạn sẽ cần phân phối khóa công khai cho WireGuard Server để thiết lập kết nối mã hóa.
Tạo file cấu hình cho Peer của WireGuard
Khi đã có cặp khóa, bạn có thể tạo một file cấu hình cho peer. File này chứa tất cả thông tin cần thiết để thiết lập kết nối đến WireGuard Server.
Để tạo file cấu hình, bạn cần:
- Khóa riêng được mã hóa
base64
đã tạo trên peer. - Dải địa chỉ IPv4 và IPv6 mà bạn đã xác định trên WireGuard Server.
- Khóa công khai được mã hóa
base64
từ WireGuard Server. - Địa chỉ IP công khai và port number của WireGuard Server. Thông thường đây sẽ là địa chỉ IPv4. Nếu máy chủ của bạn có địa chỉ IPv6 và máy khách của bạn có kết nối IPv6 đến internet, bạn có thể sử dụng IPv6 thay vì IPv4.
Khi đã có đủ những điều kiện trên, hãy mở file /etc/wireguard/wg0.conf
mới trên máy WireGuard Peer bằng nano
hoặc trình chỉnh sửa bất kỳ:
sudo nano /etc/wireguard/wg0.conf
Bạn hãy thêm các dòng sau vào file.
[Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.2/24 Address = fd0d:86fa:c3bc::2/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64 Endpoint = 203.0.113.1:51820
Lưu ý dòng Address
đầu tiên sử dụng địa chỉ IPv4 từ mạng con 10.8.0.0/24
mà bạn đã chọn trước đó. Địa chỉ IP này cần khác với địa chỉ IP của máy chủ. Vì vậy, tăng địa chỉ IP lên 1 mỗi khi bạn thêm một peer là cách dễ nhất để phân bổ địa chỉ IP.
Tương tự, dòng Address
thứ hai sử dụng địa chỉ IPv6 từ mạng con mà bạn đã tạo trước đó. Bạn có thể sử dụng bất kỳ địa chỉ nào ở trong dải.
Phần quan trọng khác của file là dòng AllowedIPs
cuối cùng. Hai dải IPv4 và IPv6 chỉ cho peer gửi lưu lượng qua VPN nếu hệ thống đích có địa chỉ IP thuộc một trong hai phạm vi này. Khi sử dụng chỉ thị AllowedIPs
, bạn có thể giới hạn VPN trên peer để kết nối với các peer và dịch vụ khác trên VPN. Bạn có thể cấu hình để đưa tất cả lưu lượng qua VPN và sử dụng WireGuard Server làm gateway.
Nếu bạn chỉ sử dụng IPv4, hãy bỏ phần đuôi fd0d: 86fa: c3bc :: / 64
(bao gồm dấu phẩy ,
). Ngược lại, nếu bạn chỉ sử dụng IPv6, để lại tiền tố fd0d: 86fa: c3bc :: / 64
và bỏ qua dải địa chỉ IPv4 10.8.0.0/24
.
Trong cả hai trường hợp, nếu bạn muốn gửi toàn bộ lưu lượng của peer qua VPN và sử dụng WireGuard Server làm gateway cho toàn bộ lưu lượng. Bạn có thể sử dụng 0.0.0.0/0
đại diện cho toàn bộ dải địa chỉ IPv4 và ::/0
cho toàn bộ dải địa chỉ IPv6.
(Optional) Cấu hình một Peer để định tuyến toàn bộ lưu lượng qua tunnel
Nếu peer là một hệ thống từ xa và bạn chọn định tuyến toàn bộ lưu lượng của peer qua bằng cách sử dụng các đường đi 0.0.0.0/0
hoặc ::/0
. Bạn sẽ cần hoàn thành các bước trong phần này. Ngược lại, nếu peer của bạn là một hệ thống cục bộ thì có thể bỏ qua phần này.
Với các peer từ xa truy cập qua SSH hoặc một giao thức khác bằng địa chỉ IP công khai, bạn cần thêm một số quy tắc bổ sung vào file wg0.conf
của peer. Những quy tắc này giúp bạn có thể kết nối với hệ thống bên ngoài khi tunnel được kết nối. Nếu không, khi tunnel được thiết lập, toàn bộ lưu lượng thông thường được xử lý trên giao diện mạng công cộng sẽ không được định tuyến để tránh giao diện tunnel wg0. Từ đó dẫn đến hệ thống từ xa không thể truy cập được.
Đầu tiên, bạn cần xác định địa chỉ IP mà hệ thống sử dụng làm gateway mặc định. Bạn chạy lệnh ip route
sau đây:
ip route list table main default
Bạn sẽ nhận được kết quả như sau:
Output default via 203.0.113.1 dev eth0 proto static
Lưu ý đến địa chỉ IP 203.0.113.1
và thiết bị eth0
. Tên thiết bị của bạn có thể khác.
Tiếp theo, tìm địa chỉ IP công cộng của hệ thống bằng lệnh ip address show
:
ip -brief address show eth0
Bạn sẽ nhận được kết quả như sau:
Output eth0 UP 203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64
Trong kết quả của ví dụ, địa chỉ IP 203.0.113.5 (không bao gồm /20 ở cuối) là địa chỉ công cộng được gán cho thiết bị eth0. Bạn cần thêm đêm địa chỉ này vào cấu hình WireGuard.
Tiếp theo, hãy mở tệp /etc/wireguard/wg0.conf
của WireGuard Peer với nano
hoặc trình chỉnh sửa bất kỳ.
sudo nano /etc/wireguard/wg0.conf
Trước dòng [Peer]
, bạn thêm vào 4 dòng sau đây:
PostUp = ip rule add table 200 from 203.0.113.5 PostUp = ip route add table 200 default via 203.0.113.1 PreDown = ip rule delete table 200 from 203.0.113.5 PreDown = ip route delete table 200 default via 203.0.113.1 [Peer] . . .
Những dòng này sẽ tạo một rule định tuyến và thêm một định tuyến tùy chỉnh để đảm bảo lưu lượng công cộng đến hệ thống sử dụng default gateway.
PostUp = ip rule add table 200 from 203.0.113.5
: Lệnh này tạo quy tắc kiểm tra các mục định tuyến trong bảng được đánh số200
khi IP khớp với địa chỉ công cộng203.0.113.5
của hệ thống.PostUp = ip route add table 200 default via 203.0.113.1
: Lệnh này đảm bảo rằng bất kỳ lưu lượng nào được xử lý bởi bảng200
sẽ sử dụng cổng gateway203.0.113.1
cho định tuyến.
Các dòng PreDown
sẽ gỡ bỏ quy tắc và tự định tuyến khi tunnel bị tắt.
Lưu ý: Số bảng 200
có thể tùy chỉnh khi xây dựng các quy tắc. Bạn có thể sử dụng một giá trị giữa 2 và 252. Hoặc bạn có thể sử dụng tên tùy chỉnh bằng cách thêm nhãn vào tệp /etc/iproute2/rt_tables
và sau đó tham chiếu đến tên thay vì giá trị số.
(Optional) Cấu hình trình DNS Resolvers của Wireguard Peer
Nếu bạn đang sử dụng WireGuard Server như một cổng VPN cho tất cả lưu lượng, bạn cần thêm một dòng vào phần [Interface]
để chỉ định trình DNS resolvers. Nếu không thêm cài đặt này, các yêu cầu DNS của bạn có thể không được bảo mật bởi VPN. Các yêu cầu có thể được tiết lộ cho Nhà cung cấp Dịch vụ Internet của bạn hoặc bên thứ ba khác.
Nếu bạn sử dụng WireGuard để truy cập tài nguyên trên mạng VPN hoặc trong cấu hình ngang hàng với các peer thì bạn có thể bỏ qua phần này.
Để thêm DNS resolvers vào cấu hình peer, trước tiên xác định máy chủ DNS mà WireGuard Server của bạn đang sử dụng. Chạy lệnh sau trên WireGuard Server. Thay thế tên thiết bị ethernet của bạn vào eth0
nếu tên thiết bị của bạn khác eth0:
resolvectl dns eth0
Bạn sẽ nhận được kết quả như sau:
Output Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888
Địa chỉ IP được hiển thị là các DNS resolvers mà máy chủ đang sử dụng. Bạn có thể chọn sử dụng bất kỳ, chỉ IPv4 hoặc IPv6 tùy thuộc vào nhu cầu của bạn. Nhớ ghi chú lại các DNS resolvers mà bạn sẽ sử dụng.
Tiếp theo, bạn cần thêm các DNS resolvers đã chọn vào file cấu hình của WireGuard Peer. Trên WireGuard Peer, mở tệp /etc/wireguard/wg0.conf
bằng nano
hoặc trình chỉnh sửa bất kỳ:
sudo nano /etc/wireguard/wg0.conf
Trước dòng [Peer]
, hãy thêm vào đoạn sau:
DNS = 67.207.67.2 2001:4860:4860::8844 [Peer] . . .
Tương tự như trên, tùy thuộc vào yêu cầu IPv4 và IPv6 của bạn, bạn có thể chỉnh sửa theo nhu cầu của mình.
Sau khi kết nối với VPN ở bước tiếp theo, bạn có thể kiểm tra xem bạn đang gửi truy vấn DNS qua VPN bằng cách sử dụng một trang web như DNS leak test.com.
Bạn cũng có thể kiểm tra peer của bạn đang sử dụng những resolver đã cấu hình bằng lệnh resolvectl dns
. Bạn sẽ nhận được output hiển thị các DNS resolver mà bạn đã cấu hình cho tunnel VPN:
Output Global: 67.207.67.2 67.207.67.3 . . .
Với thiết lập này, bạn đã sẵn sàng để thêm khóa công khai của peer vào máy chủ. Sau đó, bạn có thể bắt đầu tunnel WireGuard trên peer.
Bước 8: Thêm khóa công khai của Peer vào WireGuard Server
Trước khi kết nối đến máy chủ, bạn cần thêm khóa công khai của peer vào WireGuard Server. Bước này đảm bảo bạn sẽ có thể kết nối và định tuyến lưu lượng qua VPN. Nếu không hoàn thành bước này, WireGuard Server sẽ không cho phép peer gửi hoặc nhận bất kỳ lưu lượng nào qua tunnel.
Bạn có thể xem bản sao của khóa công khai được mã hóa base64 cho WireGuard Peer bằng cách chạy lệnh:
sudo cat /etc/wireguard/public.key
Output PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
Sau đó, bạn đăng nhập vào WireGuard server và chạy lệnh sau:
sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2
Chú ý rằng phần allowed-ips
lấy một danh sách các địa chỉ IPv4 và IPv6 được phân tách bằng dấu phẩy. Bạn có thể chỉ định các địa chỉ IP riêng nếu bạn muốn hạn chế địa chỉ IP peer có thể gán chính nó. Hoặc một phạm vi giống ví dụ khi các peer có thể sử dụng bất kỳ địa chỉ IP nào trong dải VPN. Lưu ý rằng không có hai peer nào có cùng cài đặt allowed-ips
.
Nếu bạn muốn cập nhật allowed-ips
cho một peer, bạn có thể chạy lại cùng một lệnh nhưng thay đổi các địa chỉ IP. Có nhiều địa chỉ IP được hỗ trợ. Ví dụ, để thêm một IP như 10.8.0.100
vào các IP hiện có là 10.8.0.2
và fd0d:86fa:c3bc::2
, bạn sẽ chạy lệnh sau:
sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2
Sau khi chạy lệnh thêm peer, hãy kiểm tra trạng thái của tunnel trên máy chủ bằng lệnh wg
:
sudo wg
Output interface: wg0 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= private key: (hidden) listening port: 51820 peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128
Chú ý rằng dòng peer
hiển thị khóa công khai của WireGuard Peer. Thêm vào đó là các địa chỉ IP hoặc phạm vi địa chỉ được phép sử dụng để gán cho mình một địa chỉ IP.
Sau khi bạn đã xác định các thông số kết nối của peer trên máy chủ, bước tiếp theo là khởi động tunnel trên peer.
Bước 9: Kết nối WireGuard Peer với tunnel
Máy chủ và peer của bạn đã được cấu hình để hỗ trợ lựa chọn IPv4, IPv6, chuyển tiếp gói tin và DNS. Tiếp theo là kết nối peer với VPN tunnel.
Để VPN hoạt động trong trường hợp sử dụng cụ thể, hãy sử dụng lệnh wg-quick
để thiết lập kết nối theo cách thủ động. Nếu bạn muốn tự động chạy tunnel giống như đã làm trên máy chủ, hãy làm theo Bước 6 thay vì sử dụng lệnh wq-quick
.
Trong trường hợp bạn đang định tuyến tất cả lưu lượng qua VPN và đã thiết lập chuyển tiếp DNS. Bạn cần cài đặt tiện ích resolvconf
trên WireGuard Peer trước khi chạy tunnel. Chạy lệnh sau để cài đặt tiện ích:
sudo apt install resolvconf
Để bắt đầu kết nối, hãy chạy lệnh sau trên WireGuard Peer:
sudo wg-quick up wg0
Bạn sẽ nhận được kết quả như sau:
Output [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.8.0.2/24 dev wg0 [#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a tun.wg0 -m 0 -x
Lưu ý các địa chỉ IPv4 và IPv6 đã được chỉ định cho peer.
Nếu bạn đã thiết lập AllowedIPs
trên peer để là 0.0.0.0/0
và ::/0
(hoặc sử dụng phạm vi khác với phạm vi bạn chọn cho VPN) thì kết quả sẽ như sau:
Output [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.8.0.2/24 dev wg0 [#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] resolvconf -a tun.wg0 -m 0 -x [#] wg set wg0 fwmark 51820 [#] ip -6 route add ::/0 dev wg0 table 51820 [#] ip -6 rule add not fwmark 51820 table 51820 [#] ip -6 rule add table main suppress_prefixlength 0 [#] ip6tables-restore -n [#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820 [#] ip -4 rule add not fwmark 51820 table 51820 [#] ip -4 rule add table main suppress_prefixlength 0 [#] sysctl -q net.ipv4.conf.all.src_valid_mark=1 [#] iptables-restore -n
Bạn có thể kiểm tra trạng thái của tunnel trên peer bằng lệnh wg
:
sudo wg
Output interface: wg0 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= private key: (hidden) listening port: 49338 fwmark: 0xca6c peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= endpoint: 203.0.113.1:51820 allowed ips: 10.8.0.0/24, fd0d:86fa:c3bc::/64 latest handshake: 1 second ago transfer: 6.50 KiB received, 15.41 KiB sent
Bạn cũng có thể kiểm tra trạng thái trên máy chủ một lần nữa và bạn cũng sẽ nhận được output tương tự.
Xác minh rằng peer của bạn đang sử dụng VPN bằng cách sử dụng các lệnh ip route
và ip -6
. Nếu bạn đang sử dụng VPN cho tất cả lưu lượng Internet, hãy kiểm tra giao diện nào được sử dụng cho lưu lượng dành cho DNS của CloudFlare 1.1.1.1
và 2606: 4700: 4700 :: 1111
.
Nếu bạn chỉ sử dụng WireGuard để truy cập các tài nguyên trên VPN, hãy thay thế một địa chỉ IPv4 hoặc IPv6 hợp lệ. Ví dụ 10.8.0.1
hoặc fd0d:86fa:c3bc::1
.
Sử dụng lệnh ip route get 1.1.1.1 để kiểm tra:
ip route get 1.1.1.1
Output 1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000 cache
Chú ý đến thiết bị wg0
được sử dụng và địa chỉ IPv4 10.8.0.2
mà bạn đã gán cho peer. Tương tự, nếu bạn đang sử dụng IPv6, hãy chạy lệnh sau:
ip -6 route get 2606:4700:4700::1111
Output 2606:4700:4700::1111 from :: dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium
Lưu ý về giao diện wg0
và địa chỉ IPv6 fd0d:86fa:c3bc::2
mà bạn đã gán cho peer.
Nếu peer của bạn có trình duyệt web cài đặt, bạn cũng có thể truy cập vào ipleak.net và ipv6-test.com để xác nhận rằng peer của bạn đang định tuyến lưu lượng qua VPN.
Khi bạn muốn ngắt kết nối từ VPN trên peer, sử dụng lệnh wg-quick
:
sudo wg-quick down wg0
Bạn sẽ nhận được kết quả cho thấy tunnel VPN đã đóng:
Output [#] ip link delete dev wg0 [#] resolvconf -d tun.wg0 -f
Nếu bạn thiết lập AllowedIPs
trên peer thành 0.0.0.0/0
và ::/0
(hoặc sử dụng các dải khác ngoài những dải mà bạn chọn cho VPN) thì đầu ra sẽ giống như sau:
Output [#] ip rule delete table 200 from 203.0.113.5 [#] ip route delete table 200 default via 203.0.113.1 [#] ip -4 rule delete table 51820 [#] ip -4 rule delete table main suppress_prefixlength 0 [#] ip -6 rule delete table 51820 [#] ip -6 rule delete table main suppress_prefixlength 0 [#] ip link delete dev wg0 [#] resolvconf -d tun.wg0 -f [#] iptables-restore -n [#] ip6tables-restore -n
Để kết nối lại với VPN, hãy chạy lại lệnh wg-quick up wg0
trên peer. Nếu bạn muốn hoàn toàn xóa cấu hình của một peer khỏi WireGuard Server, bạn có thể chạy lệnh sau đây. Hãy thay thế khóa công khai chính xác cho peer mà bạn muốn xóa:
sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= r
Thông thường, bạn chỉ cần xóa cấu hình của một peer nếu peer không còn tồn tại hoặc nếu các khóa mã hóa của nó bị thay đổi hoặc xâm phạm. Nếu không thì bạn hãy giữ nguyên cấu hình cho peer. Như vậy peer có thể kết nối lại với VPN mà không cần yêu cầu thêm khóa và allowed-ips
.
Bạn có thể sử dụng dịch vụ VPS Vietnix nếu gặp vấn đề khi thực hiện các thao tác trên hoặc cảm thấy chúng quá phức tạp. Vietnix có nhiều kinh nghiệm trong lĩnh vực cung cấp các giải pháp lưu trữ, với hơn 11 năm kinh nghiệm, và đã kích hoạt hơn 100.000 dịch vụ cho hơn 50.000 khách hàng cá nhân, doanh nghiệp. Khi sử dụng dịch vụ của VPS Vietnix, bạn sẽ được hỗ trợ cài đặt hệ thống hay các ứng dụng một cách nhanh chóng. Ngoài ra, đội ngũ kỹ thuật túc trực 24/7 sẽ hỗ trợ bạn giải quyết mọi vấn đề phát sinh trong thời gian ngắn nhất.
Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093.
- Email: sales@vietnix.com.vn.
Lời kết
Qua bài viết này, Vietnix đã hướng dẫn bạn đã cài đặt gói và công cụ WireGuard trên cả hệ thống máy chủ và máy khách Ubuntu 20.04. Bạn đã học được cách thiết lập các quy tắc tường lửa cho WireGuard và cấu hình các thiết lập kernel. Bạn cũng đã học được cách tạo khóa mã hóa WireGuard riêng tư và công khai, cách cấu hình máy chủ và peer (hoặc các peer) để kết nối với nhau. Nếu bạn có bất cứ góp ý hay thắc mắc gì, hãy để lại bình luận ở dưới bài viết nhé.