Site icon Nhạc lý căn bản – nhacly.com

[WireGuard Là Gì] – Hướng dẫn cài đặt và cấu hình Wireguard VPN

Bài viết này sẽ lý giải mọi thứ cần biết về WireGuard VPN giúp những bạn có cái nhìn tổng quan hơn. Hãy tìm hiểu và khám phá 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 chuyên sâu vào bảo mật thông tin. Nó được biết đến bắt đầu bởi tính đơn thuần và thuận tiện sử dụng. WireGuard sử dụng những giao thức mã hóa và những thuật toán để bảo vệ tài liệu. Ban đầu, WireGuard được tăng trưởng dành cho Linux. Hiện nay, nó đã phổ cập trên Windows, macOS, BSD, iOS và Android .
Mạng riêng ảo VPN là thành phần không hề thiếu so với những doanh nghiệp. Họ hoàn toàn có thể link những Trụ sở từ xa khác nhau đến mạng chính của công ty. Từ đó cho phép nhân viên cấp dưới sử dụng những ứng dụng nội bộ của công ty. Đồng thời được cho phép những cloud server trở thành một phần của mạng, tựa như như những sever 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 và điều tra bảo mật thông tin và tăng trưởng kernel Jason Donenfeld đã có sáng tạo độc đáo 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í hiểm. Từ đó hoàn toàn có thể sử dụng chúng trong những cuộc thử nghiệm xâm nhập ( penetration testing ). Càng xem xét kĩ về những tùy chọn hiện có lúc bấy giờ, anh càng nhận ra rằng những mạng lưới hệ thống VPN như IPsec hay OpenVPN không hoạt động giải trí thật sự tốt. Bên cạnh đó nó cũng khó để thông số kỹ thuật và quản trị đúng cách .
Do đó, Donenfeld mở màn tạo ra một giao thức VPN trọn vẹn mới. Anh muốn nó hoàn toàn có thể tránh được lối mòn phong cách thiết kế của những mạng lưới hệ thống khác. Anh không muốn nó thành những dự án Bất Động Sản với những code bases khổng lồ. Donenfled cần sự đơn thuần !

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

Đầu tiên, WireGuard loại trừ tính linh động của mật mã. Đó là việc phân phối những 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 tiến hành không bảo đảm an toàn với những công nghệ tiên tiến khác. Thay vào đó, giao thức của WireGuard sử dụng một lựa chọn những bản mã tân tiến. Do đó, những lựa chọn mật mã mặc định này đủ mạnh để người dùng không hề biến hóa hoặc thông số kỹ thuật sai .
WireGuard sử dụng ChaCha20 để mã hóa đối xứng với Polu1305 cho message authentication. Sự phối hợp này hiệu suất cao hơn AES trên những kiến trúc CPU được nhúng mà không có năng lực tăng cường 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 gồm có tính năng bảo vệ khỏi trá hình, phủ nhận dịch vụ, và replay attack .
Trong giao thức WireGuard, mỗi peer được xác lập với những peer khác trải qua những public key. Việc này tương tự như 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 những packet mà nó không nhận ra. Vì vậy quy trình network scanning sẽ không cho thấy WireGuard đang chạy trên server. Hơn nữa, nó hoàn toàn có thể hoạt động giải trí như cả server lẫn client cùng một lúc .

Khả năng của WireGuard


Trên Linux, WireGuard hoạt động giải trí ở 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à vận tốc liên kết cao hơn OpenVPN đến 4 lần. Đồng thời, vận 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, tiến hành WireGuard trên Android, iOS, macOS, OpenBSD và Windows được viết bằng Go. Ngoài 1 số ít dự án Bất Động Sản cho Android được hội đồng tương hỗ tích hợp WireGuard kernel module, những tiến hành 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ư như tiến hành ở kernel. Điều này cho thấy WireGuard vẫn hoàn toàn có thể quản trị để tương thích. Đồng thời vẫn tiêu biểu 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ệ tiên tiến được tích hợp mặc định. Đây cũng được xem là lần phát hành không thay đổi tiên phong của WireGuard ( phiên bản 1.0.0 ) .
Các kế hoạch sau đó của Donenfled tương quan đến việc hợp nhất một API mã hóa mới, đơn thuần hơn vào Linux kernel, gọi là Zinc. Donefled cho rằng Zinc sẽ giúp những developer thực thi những thao tác mã hóa trong ứng dụng thuận tiện hơn. Việc này đã lưu lại một bước ngoặt quan trọng trong quy trình upstream của WireGuard vào mạng lưới hệ thống Linux subsystem. Kể từ đó, đã có nhiều bước tiến nhanh gọn, đáng kể trước khi Zinc chính thức được phát hành không thay đổi .

Windows và một driver TUN mới

Donenfeld mong ước cải tổ hiệu suất của WireGuard trên Windows. Do đó, anh cùng những 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 có vẻ như chú trọng vào tính đơn thuần, năng lực kiểm tra và bảo mật thông tin .

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

Quá trình thiết lập Wireguard VPN Server cần trải qua 3 quy trình

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

Không bắt buộc : Bạn hoàn toàn có thể tắt SElinux và Firewalld ( trên CentOS ) để quy trình thiết lập và sử dụng thuận tiện 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 setup những pakage cho Wireguard VPN Server đến đây là hoàn tất, bước tiếp theo cần tạo ra những file config tương ứng cho client và server để hoàn toàn có thể mở màn 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 thiết yếu, ta triển khai tạo file config cho Wireguard VPN Server và Wireguard VPN Client. Ví dụ, ta sử dụng những thông số kỹ thuật như sau cho quy mô 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 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" 

Đế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à đã hoàn toàn có thể connect .
Toàn bộ quy trình thiết lập và thông số kỹ thuật Wireguard VPN hoàn toàn 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 những bạn thành công xuất sắc .

5/5 – ( 1 bầu chọn )

Exit mobile version