Tuyển dụng
Viettel IDC

WireGuard là gì? Cách hoạt động và hướng dẫn cài đặt trên Ubuntu

22/10/2025

WireGuard là giao thức VPN và phần mềm mã nguồn mở dùng để tạo đường hầm mã hóa giữa các thiết bị, bằng cách đóng gói gói tin IP bên trong gói UDP. Bài viết của Viettel IDC giải thích cơ chế hoạt động, ưu nhược điểm, trường hợp nên dùng và các bước dựng một tunnel WireGuard trên Ubuntu.

WireGuard là gì? Cách hoạt động và hướng dẫn cài đặt trên Ubuntu

WireGuard là gì?

WireGuard do Jason A. Donenfeld phát triển và giới thiệu năm 2016 với mục tiêu của WireGuard là nhanh hơn, đơn giản hơn và gọn hơn IPsec, đồng thời có hiệu năng tốt hơn đáng kể so với OpenVPN. Ban đầu WireGuard chỉ có trên Linux; hiện dự án đã có bản cho Windows, macOS, BSD, iOS và Android.

Từ Linux kernel 5.6, phát hành cuối tháng 3/2020, WireGuard được tích hợp sẵn vào nhân Linux. Nhờ vậy, các bản phân phối dùng nhân từ 5.6 trở lên không cần cài thêm module ngoài, chỉ cần bộ công cụ dòng lệnh để cấu hình.

Có hai điểm cần phân biệt khi tìm hiểu WireGuard:

- WireGuard là giao thức và phần mềm, không phải một dịch vụ VPN. Nhiều nhà cung cấp VPN thương mại dùng WireGuard bên trong ứng dụng của họ, nhưng bản thân WireGuard chỉ là công cụ để tự dựng đường hầm.

- WireGuard hoạt động ở tầng 3 (tầng mạng). Nó vận chuyển gói tin IPv4 và IPv6, không truyền khung Ethernet ở tầng 2. Về mặt giao thức, các bên đều là peer ngang hàng; "máy chủ" và "máy khách" chỉ là vai trò do cách cấu hình tạo ra.

WireGuard hoạt động như thế nào?

WireGuard xoay quanh ba thành phần: một giao diện mạng ảo, bảng ánh xạ giữa khóa công khai và địa chỉ IP được phép, và một quy trình bắt tay ngắn để tạo khóa phiên.

Giao diện mạng wg0 và Cryptokey Routing

Khi cài WireGuard, hệ thống có thêm một giao diện mạng, thường đặt tên là wg0, tương tự eth0 hay wlan0. Giao diện này được gán địa chỉ IP và định tuyến bằng các công cụ mạng quen thuộc như ip, còn khóa và danh sách peer được cấu hình bằng công cụ wg.

Mỗi giao diện có một khóa riêng (private key) và danh sách peer. Mỗi peer gồm khóa công khai (public key) và danh sách AllowedIPs, tức các địa chỉ IP trong đường hầm được gắn với peer đó. Dự án gọi cơ chế này là Cryptokey Routing, và AllowedIPs đóng hai vai trò:

- Khi gửi: AllowedIPs hoạt động như bảng định tuyến. Gói tin đi tới địa chỉ thuộc AllowedIPs của peer nào sẽ được mã hóa bằng khóa của peer đó. Nếu địa chỉ đích không khớp peer nào, gói tin bị loại bỏ.

- Khi nhận: AllowedIPs hoạt động như danh sách kiểm soát truy cập. Sau khi giải mã và xác thực, WireGuard kiểm tra địa chỉ nguồn bên trong gói tin có nằm trong AllowedIPs của peer vừa gửi hay không; nếu không, gói tin bị loại bỏ.

Ví dụ, máy chủ khai báo một peer có AllowedIPs là 10.8.0.2/32. Gói tin gửi tới 10.8.0.2 sẽ được mã hóa cho đúng peer này. Ngược lại, peer này chỉ được gửi vào đường hầm các gói tin mang địa chỉ nguồn 10.8.0.2. Vì danh tính peer gắn chặt với địa chỉ IP trong đường hầm, quy tắc tường lửa có thể dựa vào "gói tin đến từ IP nào, trên giao diện nào" thay vì phải xử lý thêm lớp xác thực riêng.

Giao diện mạng wg0 và Cryptokey Routing

Bắt tay và mã hóa

Trước khi truyền dữ liệu, hai peer thực hiện một lần bắt tay (handshake) gồm hai thông điệp, dựa trên mẫu Noise_IK của Noise Protocol Framework. Toàn bộ gói tin, kể cả gói bắt tay, đều đi qua UDP. WireGuard dùng các thành phần mật mã sau:

Thành phần

Vai trò

Curve25519

Trao đổi khóa ECDH giữa hai peer

ChaCha20 và Poly1305

Mã hóa đối xứng và xác thực dữ liệu (cấu trúc AEAD theo RFC 7539)

BLAKE2s

Hàm băm và băm có khóa

SipHash24

Tạo khóa cho bảng băm nội bộ

HKDF

Dẫn xuất khóa phiên

Bộ thuật toán này được cố định theo phiên bản giao thức, người dùng không chọn hay thương lượng thuật toán. Quá trình bắt tay được lặp lại vài phút một lần để thay khóa phiên, giúp đạt tính bảo mật chuyển tiếp hoàn hảo (perfect forward secrecy): lộ khóa của phiên hiện tại không làm lộ dữ liệu của các phiên trước. Nếu cần thêm một lớp bảo vệ bằng khóa đối xứng, ví dụ để chuẩn bị cho rủi ro máy tính lượng tử, WireGuard hỗ trợ tùy chọn khóa chia sẻ trước (PresharedKey).

Roaming và hành vi "im lặng"

WireGuard cập nhật địa chỉ endpoint của peer theo nguồn của gói tin hợp lệ gần nhất. Khi máy khách đổi từ Wi-Fi sang 4G, chỉ cần gửi một gói tin đã xác thực từ địa chỉ mới, máy chủ sẽ tự trả dữ liệu về địa chỉ đó mà người dùng không phải kết nối lại.

Ngoài ra, WireGuard không phản hồi gói tin không xác thực được. Với người quét cổng không có khóa hợp lệ, cổng UDP của WireGuard gần như không có phản hồi. Mặt khác, WireGuard cũng không tự gửi gói tin khi không có dữ liệu cần truyền, nên peer đứng sau NAT có thể cần bật PersistentKeepalive (xem phần cài đặt).

Roaming và hành vi "im lặng"

Ưu điểm và hạn chế của WireGuard

Thiết kế tối giản giúp WireGuard dễ triển khai, nhưng cũng là lý do một số tính năng quen thuộc của VPN doanh nghiệp không có sẵn.

Ưu điểm:

- Cấu hình ngắn gọn: mỗi peer chỉ cần khóa riêng, khóa công khai của bên kia và danh sách AllowedIPs. Cách trao đổi khóa giống trao đổi khóa SSH, không cần dựng hạ tầng chứng chỉ (PKI).

- Ít lựa chọn mật mã để cấu hình sai: bộ thuật toán cố định giúp tránh việc vô tình bật thuật toán yếu hoặc cấu hình bộ mã không khớp giữa hai đầu.

- Mã nguồn nhỏ, dễ kiểm tra: dự án được thiết kế để có thể triển khai với ít dòng mã và cho phép một cá nhân rà soát toàn bộ, khác với các bộ mã nguồn lớn của IPsec hay OpenVPN/OpenSSL.

- Hiệu năng tốt trên Linux: WireGuard chạy trong nhân Linux và dùng ChaCha20-Poly1305, vốn nhanh khi xử lý bằng phần mềm trên phần lớn CPU phổ thông. Tốc độ thực tế vẫn phụ thuộc phần cứng, băng thông và đường truyền.

- Hợp với thiết bị di động: roaming giữa các mạng diễn ra tự động, không cần kết nối lại.

Hạn chế:

- Chỉ dùng UDP: WireGuard không hỗ trợ chạy qua TCP. Trong mạng chặn UDP và chỉ mở TCP 443, cần thêm công cụ chuyển đổi như udp2raw hoặc chọn giao thức khác.

- Không che giấu lưu lượng: WireGuard không tập trung vào làm rối (obfuscation), nên hệ thống kiểm tra gói tin sâu (DPI) có thể nhận diện lưu lượng WireGuard.

- Không có sẵn công cụ quản lý người dùng: việc phân phối khóa, đẩy cấu hình và cấp IP động nằm ngoài phạm vi của WireGuard. Khi số người dùng lớn, cần công cụ quản lý bổ sung hoặc nền tảng xây dựng trên WireGuard.

- Không mặc định kháng lượng tử: cần dùng thêm PresharedKey nếu có yêu cầu này.

- Phụ thuộc đồng hồ hệ thống: WireGuard dùng thời gian hệ thống trong quá trình bắt tay, nên máy cần đồng bộ thời gian ổn định và không để đồng hồ bị kẻ xấu kiểm soát.

WireGuard khác OpenVPN và IPsec thế nào?

Ba giải pháp đều tạo đường hầm mã hóa, nhưng khác nhau ở cách xác thực, mức độ tùy biến và hệ sinh thái hỗ trợ.

Tiêu chí

WireGuard

OpenVPN

IPsec (IKEv2)

Giao thức vận chuyển

Chỉ UDP

UDP hoặc TCP

ESP, kèm IKE trên UDP 500 và 4500

Lựa chọn mật mã

Cố định theo phiên bản giao thức

Cấu hình được, dựa trên TLS và OpenSSL

Thương lượng trong quá trình IKE

Xác thực

Cặp khóa công khai cho từng peer

Chứng chỉ, có thể kết hợp tên đăng nhập và mật khẩu

Chứng chỉ, khóa chia sẻ trước hoặc EAP

Quản lý người dùng, cấp IP động

Không có sẵn

Có sẵn ở phía máy chủ

Có, qua cơ chế cấp cấu hình của IKEv2

Hỗ trợ sẵn trong hệ thống

Nhân Linux từ 5.6, ứng dụng chính thức cho các nền tảng khác

Cần cài phần mềm máy khách

Có sẵn trong nhiều hệ điều hành và thiết bị mạng

Độ phức tạp cấu hình

Thấp

Trung bình

Cao

Không có giải pháp nào tốt hơn trong mọi trường hợp. WireGuard phù hợp khi cần đường hầm gọn nhẹ, hiệu năng tốt và đội kỹ thuật chủ động quản lý khóa. OpenVPN linh hoạt hơn khi mạng chỉ cho phép TCP. IPsec thường được chọn khi cần kết nối với router, tường lửa của các hãng hoặc khi quy định nội bộ yêu cầu tiêu chuẩn này.

Khi nào nên dùng WireGuard?

WireGuard là lựa chọn phù hợp trong các tình huống sau:

- Truy cập từ xa vào mạng nội bộ hoặc máy chủ đám mây: nhân viên hoặc quản trị viên kết nối vào mạng riêng mà không cần mở trực tiếp các cổng quản trị ra Internet.

- Kết nối giữa hai địa điểm (site-to-site): nối văn phòng với văn phòng, hoặc văn phòng với hạ tầng cloud, khi hai đầu đều do đội kỹ thuật tự quản lý.

- Mạng giữa các máy chủ: tạo mạng riêng mã hóa giữa nhiều máy chủ ở các trung tâm dữ liệu hoặc nhà cung cấp khác nhau.

- Thiết bị di động và thiết bị tài nguyên hạn chế: roaming tự động và cấu hình gọn phù hợp với điện thoại, router nhỏ hoặc thiết bị nhúng.

Nên cân nhắc giải pháp khác hoặc bổ sung công cụ quản lý khi:

- Mạng của người dùng thường chặn UDP.

- Cần tích hợp sẵn với hệ thống xác thực tập trung như LDAP, Active Directory, xác thực đa yếu tố, hoặc cấp IP động cho hàng trăm người dùng.

- Phải kết nối với thiết bị mạng chỉ hỗ trợ IPsec, hoặc chính sách bảo mật của tổ chức quy định giao thức cụ thể.

Hướng dẫn cài đặt và cấu hình WireGuard trên Ubuntu

Hướng dẫn dưới đây dựng một đường hầm giữa một máy chủ Ubuntu 22.04 hoặc 24.04 có IP public và một máy khách Linux. Các giá trị sau chỉ là ví dụ, cần thay bằng thông số thực tế:

- Dải mạng trong đường hầm: 10.8.0.0/24, máy chủ dùng 10.8.0.1, máy khách dùng 10.8.0.2.

- Cổng lắng nghe trên máy chủ: UDP 51820.

- IP public của máy chủ: 203.0.113.10.

Trong cấu hình mẫu, máy khách chỉ đi qua đường hầm khi truy cập dải 10.8.0.0/24; lưu lượng Internet khác vẫn đi theo đường mạng thông thường. Nếu muốn toàn bộ lưu lượng của máy khách đi qua máy chủ, xem phần cấu hình mở rộng ở cuối mục này.

Bước 1: Cài đặt WireGuard

Trên cả máy chủ và máy khách Ubuntu, chạy:

sudo apt update

sudo apt install wireguard

Gói wireguard cài bộ công cụ wg và wg-quick; module WireGuard đã có sẵn trong nhân Linux của các phiên bản Ubuntu này. Với bản phân phối khác, Windows, macOS, Android hoặc iOS, xem lệnh cài và ứng dụng chính thức tại trang cài đặt WireGuard.

Bước 2: Tạo cặp khóa trên mỗi máy

Thực hiện trên máy chủ, sau đó lặp lại trên máy khách:

sudo -i

cd /etc/wireguard

umask 077

wg genkey | tee privatekey | wg pubkey > publickey

cat publickey

exit

Lệnh umask 077 đảm bảo tệp khóa chỉ người dùng root đọc được. Tệp privatekey phải giữ bí mật trên đúng máy đã tạo ra nó; chỉ nội dung publickey được gửi cho máy bên kia.

Bước 3: Cấu hình máy chủ

Trên máy chủ, tạo tệp /etc/wireguard/wg0.conf:

[Interface]

Address = 10.8.0.1/24

ListenPort = 51820

PrivateKey = <khóa riêng của máy chủ>

 

[Peer]

PublicKey = <khóa công khai của máy khách>

AllowedIPs = 10.8.0.2/32

Mỗi máy khách là một khối [Peer] riêng, với một địa chỉ /32 không trùng nhau trong AllowedIPs. Tên tệp wg0.conf cũng là tên giao diện mạng sẽ được tạo.

Bước 4: Cấu hình máy khách

Trên máy khách, tạo tệp /etc/wireguard/wg0.conf:

[Interface]

Address = 10.8.0.2/24

PrivateKey = <khóa riêng của máy khách>

 

[Peer]

PublicKey = <khóa công khai của máy chủ>

Endpoint = 203.0.113.10:51820

AllowedIPs = 10.8.0.0/24

PersistentKeepalive = 25

Endpoint cho máy khách biết nơi gửi gói tin đầu tiên. PersistentKeepalive = 25 gửi gói giữ kết nối mỗi 25 giây, giá trị mà tài liệu chính thức đánh giá phù hợp với nhiều loại tường lửa. Chỉ cần dòng này khi máy khách nằm sau NAT hoặc tường lửa và cần nhận kết nối từ phía máy chủ sau thời gian không có lưu lượng; nếu không cần, có thể bỏ.

Bước 5: Mở cổng UDP trên máy chủ

Cho phép gói tin đến cổng UDP 51820 trên máy chủ. Nếu dùng UFW:

sudo ufw allow 51820/udp

Nếu máy chủ chạy trên hạ tầng đám mây, cần mở thêm cổng này trong security group hoặc tường lửa của nhà cung cấp.

Bước 6: Khởi động đường hầm

Trên cả hai máy, chạy:

sudo systemctl enable --now wg-quick@wg0

Lệnh này bật giao diện wg0 ngay và tự khởi động lại giao diện ở các lần bật máy sau. Nếu chỉ muốn thử tạm thời, có thể dùng sudo wg-quick up wg0 và tắt bằng sudo wg-quick down wg0.

Bước 7: Kiểm tra kết nối

Từ máy khách, gửi lưu lượng vào đường hầm rồi xem trạng thái:

ping -c 3 10.8.0.1

sudo wg show

Kết nối hoạt động khi lệnh ping có phản hồi và wg show hiển thị dòng latest handshake cùng số liệu transfer tăng dần. WireGuard chỉ bắt tay khi có lưu lượng cần gửi, nên ngay sau khi khởi động, việc chưa thấy latest handshake là bình thường.

Hướng dẫn cài đặt và cấu hình WireGuard trên Ubuntu

Câu hỏi thường gặp (FAQs)

1. WireGuard có miễn phí không?

Có. WireGuard là phần mềm mã nguồn mở; thành phần trong nhân Linux dùng giấy phép GPLv2, các thành phần khác dùng MIT, BSD, Apache 2.0 hoặc GPL tùy dự án. Một số dịch vụ VPN thương mại dùng WireGuard có thể thu phí cho dịch vụ của họ, nhưng bản thân WireGuard không mất phí.

2. WireGuard dùng cổng nào?

WireGuard không có cổng bắt buộc. Cổng 51820/UDP thường xuất hiện trong tài liệu và ví dụ cấu hình, nhưng quản trị viên có thể đặt cổng khác bằng ListenPort. Dù dùng cổng nào, WireGuard vẫn chỉ chạy trên UDP.

3. WireGuard có chạy qua TCP được không?

Không. Dự án chủ động không hỗ trợ TCP vì đặt đường hầm TCP bên trong kết nối TCP khác thường làm giảm mạnh hiệu năng. Nếu bắt buộc phải đi qua TCP, cần dùng thêm công cụ như udptunnel hoặc udp2raw, hoặc chọn giao thức VPN khác.

4. WireGuard có an toàn hơn OpenVPN không?

Không thể kết luận tuyệt đối. WireGuard có bề mặt tấn công nhỏ, bộ mật mã hiện đại và giao thức đã được kiểm chứng hình thức, trong khi OpenVPN là giải pháp lâu đời, được kiểm chứng rộng rãi. Mức an toàn thực tế còn phụ thuộc cách quản lý khóa, cập nhật phần mềm và cấu hình tường lửa của từng hệ thống.

Kết luận

WireGuard là giao thức VPN tầng 3 tối giản: mỗi peer được nhận diện bằng khóa công khai, AllowedIPs vừa định tuyến vừa kiểm soát truy cập, và bộ mật mã được cố định thay vì thương lượng. Thiết kế này giúp đường hầm dễ dựng, dễ kiểm tra và có hiệu năng tốt, đặc biệt trên Linux. Đổi lại, WireGuard chỉ chạy trên UDP và không có sẵn công cụ quản lý người dùng hay cấp IP động. Với kết nối giữa máy chủ, site-to-site hoặc truy cập từ xa quy mô vừa phải, WireGuard là lựa chọn đáng cân nhắc; khi cần quản lý tập trung cho nhiều người dùng hoặc tương thích thiết bị chỉ hỗ trợ IPsec, hãy đánh giá thêm công cụ quản lý hoặc giao thức khác.

Để tìm hiểu thêm về các sản phẩm, dịch vụ tại Viettel IDC, vui lòng liên hệ:

- Hotline: 1800.8088 (miễn phí cước gọi)

- Fanpage: https://www.facebook.com/viettelidc

- Website: https://viettelidc.com.vn

 

Bình luận ()

Đăng nhập | Đăng ký
để gửi bình luận
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Xem thêm bình luận

Tin liên quan

09/11/2026

Cổng SATA là gì? Cách nhận biết và kết nối ổ HDD, SSD

Cổng SATA là gì? Cách nhận biết cổng SATA trên mainboard, phân biệt các phiên bản và kiểm tra ổ HDD, SSD có tương thích trước khi nâng cấp.

09/11/2026

Microsoft Publisher là gì? Tổng quan về phần mềm thiết kế dàn trang

Microsoft Publisher là gì? Đây là phần mềm dàn trang của Microsoft, hỗ trợ thiết kế ấn phẩm bằng các mẫu có sẵn và công cụ sắp xếp văn bản, hình ảnh linh hoạt.

09/11/2026

Có nên sử dụng các công cụ Text to speech miễn phí? Ưu điểm và hạn chế

Có nên sử dụng các công cụ Text to Speech miễn phí? Cân nhắc chất lượng giọng đọc, hạn mức và quyền sử dụng để biết khi nào bản miễn phí đủ dùng hoặc cần nâng cấp.

09/11/2026

Kiến trúc Client Server là gì? Cách mô hình máy chủ - máy khách hoạt động

Kiến trúc Client Server là gì? Đây là mô hình máy khách - máy chủ, tổ chức việc gửi yêu cầu, xử lý và trao đổi dữ liệu trong các ứng dụng và dịch vụ mạng.

09/11/2026

Cấu trúc silo là gì trong SEO? Cách xây dựng cấu trúc silo cho website

Cấu trúc silo là gì? Nắm rõ cách phân nhóm nội dung, phân biệt silo vật lý và silo ảo để xây dựng website dễ điều hướng, thuận tiện quản lý và hỗ trợ SEO.

09/11/2026

Top 15 các phần mềm quay lại màn hình miễn phí cho máy tính và điện thoại

Các phần mềm quay lại màn hình miễn phí giúp bạn ghi hình rõ nét, lưu lại thao tác và tạo video hướng dẫn trực quan cho nhu cầu học tập, làm việc hằng ngày.

09/11/2026

Postfix là gì? Hướng dẫn cài đặt và cấu hình trên Ubuntu

Postfix là gì được giải đáp qua vai trò của phần mềm chuyển thư mã nguồn mở, giúp doanh nghiệp chủ động quản lý luồng email và cấu hình hệ thống trên Linux.

09/11/2026

Cách quét mã độc cho website WordPress và lưu ý bảo mật cần biết

Cách quét mã độc cho website WordPress giúp phát hiện tệp đáng ngờ, xác định dấu vết xâm nhập và hỗ trợ xử lý sớm nguy cơ ảnh hưởng đến dữ liệu, người truy cập.

09/11/2026

Top 20 các plugin hữu ích cho WordPress tốt nhất nên cài đặt

Các plugin hữu ích cho WordPress giúp mở rộng chức năng sẵn có của website, cải thiện trải nghiệm người dùng và đơn giản hóa công việc quản trị hằng ngày.

09/11/2026

Hướng dẫn cài đặt các ứng dụng trên Ubuntu cho người mới

Hướng dẫn cài đặt các ứng dụng trên Ubuntu chi tiết từng bước, giúp người mới dễ dàng thao tác từ tải phần mềm, thiết lập gói cài đến khởi chạy ứng dụng.