Cách thiết lập Wireguard VPN trên Linux

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 sao nên sử dụng Wireguard làm giải pháp VPN?

Một trong những ưu điểm lớn nhất của Wireguard là nó là một daemon VPN nhanh và nhẹ. Không giống như các giải pháp truyền thống, Wireguard không làm tăng thêm nhiều chi phí cho mạng của bạn. Điều này dẫn đến độ trễ thấp hơn và tốc độ thông lượng tổng thể cao trên các node của bạn.

Thử nghiệm iperf3 giữa hai node Wireguard cho thấy thông lượng cao.
Thử nghiệm iperf3 giữa hai node Wireguard cho thấy thông lượng cao.

Một tính năng chính khác của Wireguard là nó là một mô-đun bên trong Linux kernel. Điều này cho phép nó chạy mà không chiếm bất kỳ tài nguyên hệ thống bổ sung nào từ máy tính của bạn, khiến nó trở thành lựa chọn lý tưởng để triển khai trên các thiết bị cấp thấp và SOC.

Wireguard được load trên Linux kernel.
Wireguard được load trên Linux kernel.

Cuối cùng, Wireguard cũng tận dụng các tiêu chuẩn mã hóa hiện đại và các hoạt động phát triển. Nó cũng có nhiều xác minh chính thức, xác nhận tính chính xác của mã, đảm bảo bảo mật và khả năng chống lại các cuộc tấn công của Wireguard.

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
Menu trợ giúp cho công cụ userspace Wireguard
Menu trợ giúp cho công cụ userspace Wireguard

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.

Sao chép private key của máy chủ trên Ubuntu
Sao chép private key của máy chủ trên Ubuntu

Thay thế giá trị của biến PrivateKey bằng key trên clipboard.

Private key của máy chủ trong cấu hình Wireguard
Private key của máy chủ trong cấu hình Wireguard

Tìm network interface có quyền truy cập Internet bằng lệnh ip:

ip route get 8.8.8.8
Tên của network interface có quyền truy cập Internet.
Tên của network interface có quyền truy cập Internet.

Đặ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.

Tên thiết bị phù hợp trong file cấu hình của Wireguard server.
Tên thiết bị phù hợp trong file cấu hình của Wireguard server.

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.

Vị trí của tùy chọn chuyển tiếp IPv4 trong sysctl.conf.
Vị trí của tùy chọn chuyển tiếp IPv4 trong sysctl.conf.

Load lại cấu hình sysctl mới bằng cách chạy: sudo sysctl -p.

Quá trình load lại file sysctl.conf.
Quá trình load lại file sysctl.conf.

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.

Private key cho Wireguard client đầu tiên.
Private key cho Wireguard client đầu tiên.

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ủ.

Public key của Wireguard server trong file cấu hình của client thứ hai.
Public key của Wireguard server trong file cấu hình của client thứ hai.

Thay đổi biến Endpoint thành địa chỉ IP của Wireguard server.

Địa chỉ IP của Wireguard server.
Đị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
Quá trình khởi động daemon Wireguard client.
Quá trình khởi động daemon Wireguard client.

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.

Vị trí của block [Peer] và public key của client.
Vị trí của block [Peer] và public key của 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

Thêm client thứ hai vào server

Một tính năng chính của mọi dịch vụ VPN là nó có thể liên kết nhiều máy từ các mạng khác nhau. Tính năng này hữu ích nếu bạn có máy tính ở nhiều vị trí khác nhau hoặc muốn host game server riêng cho bạn bè.

Để thực hiện việc này trong Wireguard, bạn cần tạo file cấu hình cho giao diện VPN mới trên máy chủ của mình. Cách dễ nhất để thực hiện việc này là sao chép cấu hình máy chủ hiện tại và đặt tên mới cho bản sao:

sudo cp /etc/wireguard/wg0.conf /etc/wireguard/wg1.conf

Mở file cấu hình mới của bạn bằng trình soạn thảo văn bản yêu thích:

sudo nano /etc/wireguard/wg1.conf

Đặt biến ListenPort thành 60102. Thực hiện thao tác này sẽ ngăn chặn mọi xung đột cổng giữa giao diện VPN wg0 và wg1.

Biến ListenPort đã sửa đổi cho interface Wireguard thứ hai.
Biến ListenPort đã sửa đổi cho interface Wireguard thứ hai.

Đi đến phần [Peer] và thay đổi biến AllowedIPs từ “10.0.0.2/32” thành “10.0.0.3/32”, sau đó lưu file cấu hình của bạn.

Biến AllowedIPs đã sửa đổi cho máy khách Wireguard thứ hai.
Biến AllowedIPs đã sửa đổi cho máy khách Wireguard thứ hai.

Cấu hình Wireguard client thứ hai

Đăng nhập vào máy thứ hai, sau đó chuẩn bị thư mục cấu hình Wireguard của bạn:

cd /etc/wireguard
sudo umask 077

Tạo cặp key Wireguard mới bằng lệnh sau:

sudo sh -c 'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'

Tạo file cấu hình mới 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ới:

[Interface]
PrivateKey = PASTE-YOUR-CLIENT2-PRIVATE-KEY-HERE
Address = 10.0.0.3/32
ListenPort = 60102
 
[Peer]
PublicKey = PASTE-YOUR-SERVER-PUBLIC-KEY-HERE
AllowedIPs = 0.0.0.0/0
Endpoint = PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60102
PersistentKeepalive = 25

Đặt biến PrivateKey thành private key của máy thứ hai, sau đó đổi biến PublicKey thành public key của máy chủ.

Private key của client thứ hai và public key của máy chủ Wireguard.
Private key của client thứ hai và public key của máy chủ Wireguard.

Thay thế biến Endpoint bằng địa chỉ IP của máy chủ, theo sau là “:60102”.

Địa chỉ IP của máy chủ Wireguard trong cấu hình của client thứ hai.
Địa chỉ IP của máy chủ Wireguard trong cấu hình của client thứ hai.

Lưu file cấu hình của bạn, sau đó khởi động Wireguard client của máy thứ hai:

sudo wg-quick up wg0

Liên kết client thứ hai với máy chủ Wireguard

Đăng nhập lại vào máy chủ Wireguard, sau đó mở cấu hình interface VPN cho client thứ hai của bạn:

sudo nano /etc/wireguard/wg1.conf

Cuộn xuống phần [Peer], sau đó thay thế biến PublicKey bằng public key của client thứ hai.

Public key của client thứ hai bên trong file cấu hình wg1 của máy chủ.
Public key của client thứ hai bên trong file cấu hình wg1 của máy chủ.

Lưu file cấu hình của bạn, sau đó khởi động interface VPN thứ hai bằng lệnh wg-quick:

sudo wg-quick up wg1

Xác nhận rằng client Wireguard đầu tiên và thứ hai của bạn đang hiển thị chính xác trên máy chủ bằng cách chạy wg.

2 node client đang giao tiếp với máy chủ Wireguard.
2 node client đang giao tiếp với máy chủ Wireguard.
Thứ Tư, 06/11/2024 17:28
53 👨 269
0 Bình luận
Sắp xếp theo
    ❖ Linux