WireGuard hiện tại là 1 giải pháp VPN chủ yếu tập trung vào bảo mật. Theo đó WireGuard đang sử dụng những giao thức mã hóa cũng như những thuật toán nhằm bảo vệ dữ liệu. Với khả năng kết nối tích tắc, mã hoá rõ ràng và sử dụng mật mã hiện đại, Wireguard ngày càng trở nên phổ biến, thậm chí là được đưa vào Linux kernel 5.6.
WireGuard là gì?
Wireguard là một giao thức VPN (Virtual Private Network) nguồn mở phổ biến tập trung chủ yếu vào bảo mật và tốc độ kết nối bằng mật mã hiện đại giúp người dùng có thể thông qua internet để thiết lập một kết nối mã hoá giữa client và server. Tính đơn giản và dễ dàng sử dụng cho tất cả mọi người đối với cả những người không chuyên về kỹ thuật được xác định chính là nguyên nhân ban đầu giúp Wireguard trở nên ngày càng phổ biến.
Hiện tại nó đang sử dụng những giao thức mã hóa cũng như những thuật toán nhằm bảo vệ dữ liệu.
- Vì sử dụng các nguyên mã tiên tiến nhất như Curve25519, ChaCha20 Poly1305, BLAKE2s và SipHash24 nên Wireguard cung cấp cho hệ thống khả năng bảo mật mạnh mẽ ngay cả khi nó được sử dụng thông qua kết nối internet công cộng không đáng tin cậy.
- Sử dụng các thuật toán và các giao thức mã hoá chính là cách để Wireguard thực hiện việc bảo vệ dữ liệu.
Wireguard là một giao thức VPN (Virtual Private Network) chủ yếu tập trung vào bảo mật
Cơ chế mã hóa của WireGuard :
WireGuard đã sử dụng ChaCha20 để có thể mã hóa đối xứng cùng với Polu1305 dành cho message authentication. Theo đó sự kết hợp này sẽ đạt được hiệu quả hơn so với AES trên những kiến trúc CPU được nhúng và hoàn toàn không có khả năng giúp tăng tốc về phần cứng mật mã (hay cryptographic hardware acceleration) và Curve25519 dành cho Diffie-Hellman (ECDH). Hoặc BLAKE2s dùng để hashing, nhanh hơn so với SHA-3 cũng như 1.5-RTT dựa vào nền tảng Noise. Bên cạnh đó nó cũng gồm có tính năng bảo vệ khỏi tình trạng giả mạo, replay attack và từ chối dịch vụ.
Tương tự như IPsec và OpenVPN, Wireguard cũng là một hệ thống VPN có khả năng thiết lập một kết nối được mã hoá giữa một máy chủ được đặt tại vị trí bất kỳ và một máy khách (máy tính cá nhân của bạn). Bạn chỉ cần gửi yêu cầu của mình đến máy chủ để máy chủ chuyển tiếp yêu cầu này đến với trang web mà bạn muốn truy cập. Sau đó, trang web sẽ gửi thông tin trở lại máy chủ và máy chủ sẽ truyền thông tin đó đến máy tính cá nhân của bạn.
Ưu điểm và hạn chế của Wireguard :
– Ưu điểm:
+ Wireguard có mã nguồn mở với kích cỡ chỉ bằng khoảng 1% so với công nghệ cạnh tranh khác (chưa đến 4000 dòng code). Chính điều này cho thấy rằng,
- Wireguard khá nhanh chóng và đảm bảo được khả năng bảo mật thông qua sự đơn giản của nó.
- Một người có thể đọc cơ sở mã của Wireguard chỉ trong vòng vài giờ trong khi một nhóm lớn phải mất vài ngày để kiểm tra OpenVPN.
- So với OpenVPN hay IPsec thì Wireguard kiểm toán dễ dàng hơn, ít lỗ hổng hơn, duy trì an toàn hơn và bề mặt tấn công thấp hơn.
+ Wireguard được thiết kế để cung cấp những cải tiến lớn về hiệu suất cho VPN. Sự kết hợp của giao thức Wireguard và các nguyên bản mật mã đặc biệt giúp cho mạng trở nên an toàn và nhanh chóng. Với Wireguard,
- Tốc độ VPN trở lên nhanh chóng hơn
- Tuổi thọ pin của điện thoại, máy tính bảng hay các thiết bị điện tử khác trở nên tốt hơn
- VPN được hỗ trợ chuyển vùng tốt hơn với mức độ tin cậy cao hơn
+ Wireguard có khả năng thiết lập và mã hoá thông tin liên lạc thay vì phải triển khai tất cả các giao thức có trong hệ thống. Điều này giúp đảm bảo khả năng hoạt động tốt và tính bảo mật cho hệ thống.
+ Wireguard hoạt động tốt trên nhiều nền tảng khác nhau như Windows, Mac OS, Android, iOS và Linux mặc dù nó vẫn xuất hiện một chút chậm trễ trong việc triển khai hoạt động đầy đủ.
+ Wireguard duy trì tốt tính bảo mật thông qua tính năng thiết lập văn bản. Nó có thể được vá và cập nhật ngay khi một vấn đề được phát giác trong chính giao thức của nó. So với quy trình phức tạp là hoán đổi giao thức từng phần một của những VPN cũ thì Wireguard bảo mật tốt hơn.
+ Điều thay đổi đáng chú ý nhất của Wireguard đối với người dùng là khả năng mang lại vận tốc kết nối và tính ổn định cho hệ thống bởi hệ thống mã hoá của giải pháp này là dựa vào việc trao đổi key. Điều này giúp hệ thống dựa trên Wireguard nhanh chóng hơn nhiều.
– Nhược điểm:
+ Wireguard được xây dựng với mục đích để bảo mật chứ không phải là vì quyền riêng tư. Do đó, tuy Wireguard cung cấp một giao thức giao tiếp và đi kèm một vài biện pháp bảo mật thích hợp nhưng vẫn còn rất nhiều thứ cần được thực hiện bởi những người chịu trách nhiệm vận hành máy chủ.
+ Mọi giao thức VPN đều biết nơi gửi dữ liệu nhưng Wireguard thường tốn nhiều thời gian cho việc quên đi một IP được kết nối trong khi hầu hết các doanh nghiệp muốn xoá đều đặn các địa chỉ và không muốn chúng được ghi lại.
Hướng dẫn cài đặt WireGuard :
Quá trình cài đặt Wireguard VPN Server có 3 bước :
- Cài đặt Wireguard package
- Enable IP Forwarding
- Cấu hình NAT cho iptables
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 :
Cách 1 : Chúng ta có thể install Wireguard thủ công :
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: 112.213.89.3 – Địa chỉ IP public của server
- SERVER_PORT: 99999 – Port của VPN
- DEVICE: ens192 – Tên card mạng chứa địa chỉ IP public của server
- TUNNEL_ADDR_PREFIX: 172.30.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 172.30.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 = 172.30.0.254/24
SaveConfig = true
ListenPort = 99999
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 172.30.0.0/24 -o ens192 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 172.30.0.0/24 -o ens192 -j MASQUERADE
[Peer]
PublicKey = $client_pub_key
AllowedIPs = 172.30.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 = 172.30.0.254/24 DNS = 1.1.1.1, 8.8.8.8
[Peer] PublicKey =
${server_pub_key} Endpoint = 112.213.89.3:99999 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.
Cách 2 : Sử dụng script để cài đặt :
Đầu tiên là SSH vào VPS với tài khoản root và cài đặt Wireguard VPN với lệnh sau :
wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
Nếu VPS / Server của bạn có nhiều IP mạng, nhớ chọn IP Public của VPS.
Which IPv4 address should be used?
1) 112.213.89.3
2) 172.30.0.1
IPv4 address [1]: 1
Tiếp theo nhập thông tin theo yêu cầu của script cài đặt.
## Chọn port, bấm Enter để giữ nguyên port mặc định 51820
What port should WireGuard listen to?
Port [51820]:
## Chọn tên
Enter a name for the first client:
Name [client]: pavietnam.vn
## Chọn DNS Server
Select a DNS server for the client:
1) Current system resolvers
2) Google
3) 1.1.1.1
4) OpenDNS
5) Quad9
6) AdGuard
DNS server [1]: 2
WireGuard installation is ready to begin.
Press any key to continue...
## Bấm nút bất kỳ để tiếp tục
Đợi khoảng vài phút cho script cài đặt và cấu hình Wireguard VPN tự động cho bạn. Sau khi hoàn tất, bạn sẽ nhận được thông báo như sau.
Tạo thêm tài khoản client :
wget https://git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
Hệ thống sẽ tự động nhận ra WireGuard đã được cài đặt và hiện thông báo như dưới đây.
- Chọn 1 để tạo thêm client mới,
- Chọn 2 để xoá client hiện có,
- Chọn 3 để xoá WireGuard
- Chọn 4 để thoát ra.
Để xem lại QR Code của tài khoản đã tạo bạn dùng lệnh sau :
qrencode -t UTF8 < pavietnam_vn.conf
Các bạn thay thế pavietnam_vn.conf bằng tên file tương ứng với tài khoản bạn đã tạo trước đó. File này được lưu ở thư mục /root.
Cài đặt WireGuard Client :
Để kết nối với Wireguard Server vừa tạo, bạn cần tải Wireguard Client trên thiết bị cần sử dụng. Wireguard cung cấp client cho mọi hệ điều hành phỏo biến: iOS, Android, Windows, Linux, Mac OS,… Bạn có thể tham thêm khảo hướng dẫn ở đây: WireGuard install.
Các bạn có thể cài WireGuard client trên iOS / Android thông qua App Store / Play Store. Sau đó bạn thêm cấu hình WireGuard bằng cách chọn Create from QR Code và scan QR Code nhận được ở bước cài đặt trên là được.
Tổng kết :
Thực hiện các bước như hướng dẫn trên thì các bạn đã cài đặt thành công WireGuard VPN.
Trong quá trình cài đặt phalcon nếu có vấn đề lỗi phát sinh, vui lòng gửi yêu cầu về kythuat@pavietnam.vn để được hỗ trợ kiểm tra và xử lý.
Xem thêm các hướng dẫn khác về VPS tại đây.
P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng :
Cloud Server
Cloud Server Pro
Máy Chủ Riêng
Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/