Wireguard là một daemon mạng riêng ảo (VPN) mã nguồn mở mạnh mẽ có thể chạy trên cả desktop và thiết bị di động. Nó cung cấp một giải pháp thay thế nhanh và nhẹ cho các VPN truyền thống như IPsec và OpenVPN. Bài viết hôm nay sẽ chỉ cho bạn cách cài đặt Wireguard và tạo một thiết lập VPN đơn giản bằng 3 máy Linux.
Tải Wireguard
Bước đầu tiên để thiết lập Wireguard trên Linux là tải xuống các công cụ cốt lõi của nó từ kho lưu trữ của bản phân phối. Điều này cho phép bạn kiểm soát mô-đun kernel Wireguard tích hợp bằng các lệnh userspace.
Để cài đặt các công cụ cốt lõi trong Ubuntu và Debian, hãy chạy lệnh sau:
sudo apt install wireguard wireguard-tools
Trong Fedora, bạn có thể sử dụng trình quản lý gói dnf:
sudo dnf install wireguard-tools
Đối với Arch Linux, bạn có thể chạy pacman để tải các công cụ cốt lõi của Wireguard:
sudo pacman -S wireguard-tools
Xác nhận rằng bạn đã cài đặt đúng các công cụ Wireguard bằng cách load màn hình trợ giúp của nó:
wg -h
Thiết lập Wireguard server
Giả định: Bài viết này giả định rằng bạn đang cài đặt Wireguard server trên hệ thống Linux có địa chỉ IPv4 có thể truy cập công khai. Các hướng dẫn vẫn sẽ hoạt động trên máy chủ đằng sau một NAT, nhưng nó sẽ không tìm thấy những node bên ngoài mạng con của nó.
Với bộ công cụ cốt lõi Wireguard trên máy Linux, giờ đây bạn có thể thiết lập server node của VPN. Node này sẽ đóng vai trò là cổng Internet cho các client node trong mạng.
Bắt đầu bằng cách điều hướng đến thư mục cấu hình Wireguard và đặt quyền mặc định của nó thành "root only":
cd /etc/wireguard
sudo umask 077
Lưu ý: Một số hệ thống có thể ngăn bạn vào thư mục "/etc/wireguard" với tư cách là người dùng thông thường. Để khắc phục điều đó, hãy chuyển sang người dùng root bằng sudo -s.
Tạo public và private key cho Wireguard server:
sudo sh -c 'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'
Tạo file cấu hình máy chủ bằng trình soạn thảo văn bản yêu thích:
sudo nano /etc/wireguard/wg0.conf
Dán block code sau vào file cấu hình máy chủ:
[Interface]
PrivateKey = PASTE-YOUR-SERVER-PRIVATE-KEY-HERE
Address = 10.0.0.1/32
ListenPort = 60101
PostUp = iptables -t nat -I POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE
Mở một phiên terminal mới, sau đó in Wireguard private key của máy chủ:
sudo cat /etc/wireguard/server-private-key
Sao chép private key của máy chủ vào clipboard.
Thay thế giá trị của biến PrivateKey bằng key trên clipboard.
Tìm network interface có quyền truy cập Internet bằng lệnh ip:
ip route get 8.8.8.8
Đặt giá trị của flag -o trên cả hai biến PostUp và PostDown thành giao diện có quyền truy cập Internet, sau đó lưu file cấu hình.
Mở file "/etc/sysctl.conf" của máy chủ bằng trình soạn thảo văn bản yêu thích:
sudo nano /etc/sysctl.conf
Cuộn xuống dòng có chứa net.ipv4.ip_forward=1, sau đó xóa dấu thăng (#) ở phía trước.
Load lại cấu hình sysctl mới bằng cách chạy: sudo sysctl -p.
Thiết lập và kết nối Wireguard client
Lúc này, bạn đã có Wireguard server được cấu hình đúng mà không có bất kỳ peer nào. Để sử dụng, bạn cần thiết lập và kết nối Wireguard client đầu tiên của mình.
Điều hướng đến thư mục cấu hình Wireguard của hệ thống client và đặt quyền mặc định của nó:
cd /etc/wireguard
sudo umask 077
Tạo cặp key Wireguard của client bằng lệnh sau:
sudo sh -c 'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'
Tạo file cấu hình Wireguard của client bằng trình soạn thảo văn bản yêu thích:
sudo nano /etc/wireguard/wg0.conf
Dán block code sau vào file cấu hình client:
[Interface]
PrivateKey = PASTE-YOUR-CLIENT1-PRIVATE-KEY-HERE
Address = 10.0.0.2/32
ListenPort = 60101
[Peer]
PublicKey = PASTE-YOUR-SERVER-PUBLIC-KEY-HERE
AllowedIPs = 0.0.0.0/0
Endpoint = PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60101
PersistentKeepalive = 25
Thay thế biến PrivateKey bằng private key của client.
Mở phiên terminal của Wireguard server, sau đó in public key của nó:
sudo cat /etc/wireguard/server-public-key
Đặt giá trị của biến PublicKey thành public key của máy chủ.
Thay đổi biến Endpoint thành địa chỉ IP của Wireguard server.
Lưu file cấu hình, sau đó sử dụng lệnh wg-quick để khởi động Wireguard client:
sudo wg-quick up wg0
Lưu ý: Lệnh này sẽ vô hiệu hóa kết nối mạng của client cho đến khi bạn khởi động Wireguard server. Để quay lại mạng ban đầu, hãy chạy sudo wg-quick down wg0.
Liên kết Wireguard server với client
Truy cập phiên terminal của Wireguard server, sau đó mở file cấu hình của máy chủ:
sudo nano /etc/wireguard/wg0.conf
Dán block code sau vào sau phần [Interface]:
[Peer]
PublicKey = PASTE-YOUR-CLIENT1-PUBLIC-KEY-HERE
AllowedIPs = 10.0.0.2/32
PersistentKeepalive = 25
Đặt biến PublicKey thành public key của Wireguard client.
Lưu ý: Bạn có thể lấy public key bằng cách chạy sudo cat /etc/wireguard/client1-public-key trên client của mình.
Lưu file cấu hình, sau đó chạy lệnh sau để khởi động service Wireguard trên máy chủ:
sudo wg-quick up wg0