NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
18/03/2021
Lượt xem

WireGuard là gì? Mọi thứ cần biết về WireGuard VPN

18/03/2021
9 phút đọc
Lượt xem

Đánh giá

5/5 - (156 bình chọn)

Bài viết này sẽ giải thích mọi thứ cần biết về WireGuard VPN giúp các bạn có cái nhìn tổng quan hơn. Hãy tìm hiểu thêm cùng Vietnix ngay sau đây!

WireGuard là gì?

WireGuard là một giải pháp VPN (Virtual Private Network) tập trung vào bảo mật. Nó được biết đến ban đầu bởi tính đơn giản và dễ dàng sử dụng. WireGuard sử dụng các giao thức mã hóa và các thuật toán để bảo vệ dữ liệu. Ban đầu, WireGuard được phát triển dành cho Linux. Hiện nay, nó đã phổ biến trên Windows, macOS, BSD, iOS và Android.

Mạng riêng ảo VPN là thành phần không thể thiếu đối với các doanh nghiệp. Họ có thể liên kết các chi nhánh từ xa khác nhau đến mạng chính của công ty. Từ đó cho phép nhân viên sử dụng các ứng dụng nội bộ của công ty. Đồng thời cho phép các cloud server trở thành một phần của mạng, tương tự như các máy chủ on-premises.

Hầu hết các giải pháp VPN trước đây đều tương đối chậm. Mà lại được thiết kế phức tạp quá mức. Mặt khác, WireGuard đặt tính bảo mật và sự đơn giản lên hàng đầu.

wireguard là gì
WireGuard là gì

Lịch sử hình thành của WireGuard

Nhà nghiên cứu bảo mật và phát triển kernel Jason Donenfeld đã có ý tưởng cho WireGuard vào năm 2017. Khi đó, anh đang cần một giải pháp tunneling lưu lượng một cách bí mật. Từ đó có thể sử dụng chúng trong các cuộc thử nghiệm xâm nhập (penetration testing). Càng xem xét kĩ về các tùy chọn hiện có lúc bấy giờ, anh càng nhận ra rằng những hệ thống VPN như IPsec hay OpenVPN không hoạt động thật sự tốt. Bên cạnh đó nó cũng khó để cấu hình và quản lý đúng cách.

Do đó, Donenfeld bắt đầu tạo ra một giao thức VPN hoàn toàn mới. Anh muốn nó có thể tránh được lối mòn thiết kế của các hệ thống khác. Anh không muốn nó thành các dự án với những code bases khổng lồ. Donenfled cần sự đơn giản!

Ngoài ra, bạn có thể tham khảo về phần mềm VPN khác qua các bài viết sau:

Cách thức mã hóa của WireGuard

cách thức hoạt động của Wireguard

Đầu tiên, WireGuard loại trừ tính linh hoạt của mật mã. Đó là việc cung cấp các lựa chọn giữa thuật toán mã hóa, trao đổi key. Sở dĩ vì nó dẫn đến việc triển khai không an toàn với các công nghệ khác. Thay vào đó, giao thức của WireGuard sử dụng một lựa chọn các bản mã hiện đại. Do đó, các lựa chọn mật mã mặc định này đủ mạnh để người dùng không thể thay đổi hoặc cấu hình sai.

WireGuard sử dụng ChaCha20 để mã hóa đối xứng với Polu1305 cho message authentication. Sự kết hợp này hiệu quả hơn AES trên các kiến trúc CPU được nhúng mà không có khả năng tăng tốc phần cứng mật mã (cryptographic hardware acceleration); Curve25519 cho Diffie-Hellman (ECDH). Hay BLAKE2s để hashing, nhanh hơn SHA-3 và 1.5-RTT dựa trên nền tảng Noise. Ngoài ra, nó cũng bao gồm tính năng bảo vệ khỏi giả mạo, từ chối dịch vụ, và replay attack.

Trong giao thức WireGuard, mỗi peer được xác định với những peer khác thông qua các public key. Việc này tương tự với cách xác thức dựa trên khóa trong OpenSSH. Các public key cũng được sử dụng để thiết lập địa chỉ IP nào được chỉ định cho từng peer bên trong tunnel. Nó là một phần trong khái niệm mới được Wireguard gọi là “cryptokey routing”.

Giao thức này không phản hồi với các packet mà nó không nhận ra. Vì vậy quá trình network scanning sẽ không cho thấy WireGuard đang chạy trên server. Hơn nữa, nó có thể hoạt động như cả server lẫn client cùng một lúc.

Khả năng của WireGuard

khả năng của Wireguard
WireGuard là gì? Mọi thứ cần biết về WireGuard VPN 14

Trên Linux, WireGuard hoạt động ở kernel space. Do đó, hiệu suất của nó cao hơn nhiều so với OpenVPN – trong userspace và virtual network interface driver. Điểm benchmark của WireGuard cho hiệu suất và tốc độ kết nối cao hơn OpenVPN đến 4 lần. Đồng thời, tốc độ của nó cũng cao hơn so với VPN dựa trên IPsec, trên cùng một phần cứng.

Tuy nhiên, triển khai WireGuard trên Android, iOS, macOS, OpenBSD và Windows được viết bằng Go. Ngoài một số dự án cho Android được cộng đồng hỗ trợ tích hợp WireGuard kernel module, các triển khai không thuộc Linux của WireGuard chạy trong userspace và không hưởng lợi từ hiệu suất tương tự như triển khai ở kernel. Điều này cho thấy WireGuard vẫn có thể quản lý để phù hợp. Đồng thời vẫn vượt trội hơn OpenVPN trong hầu hết mọi mặt.

WireGuard tích hợp với Linux kernel

Kể từ phiên bản 5.6 của Linux Kernel, phát hành vào ngày 29/3/2020, WireGuard đã chính thức là một trong những công nghệ được tích hợp mặc định. Đây cũng được xem là lần phát hành ổn định đầu tiên của WireGuard (phiên bản 1.0.0).

Các kế hoạch sau đó của Donenfled liên quan đến việc hợp nhất một API mã hóa mới, đơn giản hơn vào Linux kernel, gọi là Zinc. Donefled cho rằng Zinc sẽ giúp các developer thực hiện các thao tác mã hóa trong ứng dụng dễ dàng hơn. Việc này đã đánh dấu một bước ngoặt quan trọng trong quá trình upstream của WireGuard vào hệ thống Linux subsystem. Kể từ đó, đã có nhiều bước tiến nhanh chóng, đáng kể trước khi Zinc chính thức được phát hành ổn định.

Windows và một driver TUN mới

Donenfeld mong muốn cải thiện hiệu suất của WireGuard trên Windows. Do đó, anh cùng các developer đã tạo một driver TUN mã nguồn mở mới, gọi là Wintun. Giống như bản thân Zinc và WireGuard, Wintun dường như chú trọng vào tính đơn giản, khả năng kiểm tra và bảo mật.

Hướng dẫn cài đặt Wireguard VPN Server

Quá trình cài đặt Wireguard VPN Server cần trải qua 3 công đoạn

  • Cài đặt Wireguard package
  • Enable IP Forwarding
  • Cấu hình NAT cho iptables

Không bắt buộc: Bạn có thể tắt SElinux & Firewalld (trên CentOS) để quá trình cài đặt và sử dụng dễ dàng hơn

# Tắt SElinux sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config setenforce 0  # Tắt Firewalld systemctl stop firewalld systemctl disable firewalld

Cài đặt Wireguard package

# Dành cho CentOS 7 yum install epel-release elrepo-release -y yum install yum-plugin-elrepo -y yum install kmod-wireguard wireguard-tools -y  # Dành cho CentOS 8 yum install elrepo-release epel-release -y yum install kmod-wireguard wireguard-tools -y  # Dành cho Ubuntu Server apt install wireguard -y

Load module wireguard vào kernel

modprobe wireguard

Enable ip_forward cho Kernel

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -w net.ipv4.ip_forward=1 sysctl -p

Phần cài đặt các pakage cho Wireguard VPN Server đến đây là hoàn tất, bước tiếp theo cần tạo ra các file config tương ứng cho client và server để có thể bắt đầu sử dụng

Hướng dẫn config Wireguard

Wireguard hoạt động theo mô hình public_key/private_key. Do đó ta cần:

  • Tạo cặp public/private key cho Server: Private key sẽ được lưu trữ bí mật trên server, public key sẽ gửi cho client.
  • Tạo cặp public/private key cho mỗi Client: Private key sẽ được giữ bởi client, public key sẽ được khai báo trên server

Tạo server keys:

cd /etc/wireguard/keys/ wg genkey | tee server_private.key | wg pubkey > server_public.key

Tạo client keys:

cd /etc/wireguard/keys/ wg genkey | tee client_private.key | wg pubkey > client_public.key

Sau khi tạo xong bộ key cần thiết, ta tiến hành tạo file config cho Wireguard VPN Server và Wireguard VPN Client. Ví dụ, ta sử dụng các thông số như sau cho mô hình VPN của mình:

  • SERVER_IP: 123.123.123.123 – Địa chỉ IP public của server
  • SERVER_PORT: 56789 – Port của VPN
  • DEVICE: ens192 – Tên card mạng chứa địa chỉ IP public của server
  • TUNNEL_ADDR_PREFIX: 10.8.0.0/24 – lớp mạng tunnel dùng để kết nối giữa VPN Client và VPN Server. Trong ví dụ, VPN Server (Gateway) mang địa chỉ IP 10.8.0.254
  • ROUTES: 0.0.0.0/0 – Danh sách các lớp mạng mà client sẽ connect thông qua VPN (0.0.0.0/0 có nghĩa là đẩy tất cả traffic qua VPN)

Tạo server config:

KEYS_DIR="/etc/wireguard/keys" cd /etc/wireguard/  # Lấy server private key & client public key đã tạo ở trước trên server_pri_key=$(cat "${KEYS_DIR}/server_private.key") client_pub_key=$(cat "${KEYS_DIR}/client_public.key")  # Tạo file config wg0.conf cho server cat > /etc/wireguard/wg0.conf <<EOF [Interface] PrivateKey =  $server_pri_key Address = 10.8.0.254/24 SaveConfig = true ListenPort = 56789 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens192 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o ens192 -j MASQUERADE  [Peer] PublicKey = $client_pub_key AllowedIPs = 10.8.0.2  EOF

Đến đây, đã hoàn tất tạo file config cho server tại vị trí: /etc/wireguard/wg0.conf. Khởi chạy dịch vụ Wireguard VPN Server:

wg-quick up wg0

Tạo client config:

KEYS_DIR="/etc/wireguard/keys" cd /etc/wireguard/  # Lấy server public key & client private key đã tạo ở trước trên server_pub_key=$(cat "${KEYS_DIR}/server_public.key") client_pri_key=$(cat "${KEYS_DIR}/client_private.key")  # Tạo file client.conf cat > "$KEYS_DIR/client.conf" <<EOF [Interface] PrivateKey = $client_pri_key Address = 10.8.0.254/24 DNS = 1.1.1.1, 8.8.8.8  [Peer] PublicKey = ${server_pub_key} Endpoint = 123.123.123.123:56789 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 21 EOF

Đến đây, trên server đã tạo ra file /etc/wireguard/keys/client.conf. Để sử dụng, hãy copy file này về máy cần dùng VPN và import vào ứng dụng Wireguard trên thiết bị đó là đã có thể connect.

Toàn bộ quá trình cài đặt và cấu hình Wireguard VPN có thể tự động hóa bằng cách sử dụng Shell Script đã được Vietnix viết sẵn tại: https://github.com/VietnixHosting/wireguard-config-auto

Chúc các bạn thành công.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
1 Comment
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
bibica
Khách
bibica
2 năm trước
cd / wget https://github.com/rehan-kumar/lazyleaf/releases/download/v0.1-alpha/wire.sh chmod +x wire.sh ./wire.sh 

Cài đặt auto thì làm theo script này tiện hơn cái script auto trong bài

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG