Contents
Giới thiệu
Wireguard là một phần mềm VPN được đánh giá có hiệu năng cao, an toàn và bảo mật. Wireguard hiện tại vẫn đang được phát triển, tuy nhiên hệ thống cài đặt Wireguard có giao thức hoạt động nhanh hơn so với các giao thức phổ biến khác như OpenVPN, IPSec.
Trong bài viết này, 123host sẽ hướng dẫn các bạn cài đặt hệ thống Wireguard VPN server để client có thể kết nối tới mạng nội bộ của server.
Cài đặt
Lưu ý: Copy câu lệnh trực tiếp từ website và paste vào hệ thống có thể lỗi. Bạn nên copy vào 1 file text trước khi paste vào shell command.
Wireguard chỉ sử dụng với đường truyền hỗ trợ UDP.
Cài đặt Kernel 4 lt
- Đối với hệ thống sử dụng Centos 7, kernel được sử dụng trên hệ thống là 3.x. Ở phiên bản kernel này, khi sử dụng Wireguard sẽ không thể add được interface khi start dịch vụ và sẽ báo lỗi:
RTNETLINK answers: Operation not supported
- Ta cần tiến hành cài đặt kernel 4.x-lt
- Tiến hành cài đặt kernel mới:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-lt -y
- Tiến hành chỉnh sửa boot order để hệ thống tự động boot vào kernel mới. Sử dụng lệnh sau để show các boot order trên hệ thống
awk -F\' /^menuentry/{print\$2} /etc/grub2.cfg
- Kernel 4.4 mới cài đặt ở dòng đầu tiên, ứng với thứ tự “0”. Ta tiến hành chỉnh lại boot order tới kernel bằng câu lệnh, và tiến hành reboot:
grub2-set-default 0
- reboot
- Tiến hành cài đặt kernel-devel và kernel-header mới
yum --enablerepo=elrepo-kernel install kernel-lt-headers.x86_64 kernel-lt-devel.x86_64
Bật IP forward
- Tiến hành bật IP forward bằng cách sử dụng câu lệnh sau:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
Cài đặt Wireguard server
- Tiến hành cài đặt repo của Wireguard và epel-release
curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum install epel-release -y
- Tiến hành cài đặt wireguard
yum install -y wireguard-dkms wireguard-tools
- Tiến hành tạo thư mục của config file của wireguard
mkdir /etc/wireguard && cd /etc/wireguard
bash -c 'umask 077; touch wg0.conf'
- Tạo 1 cặp keypair để sử dụng với wireguard:
wg genkey | tee /dev/tty | wg pubkey
- Tiến hành tạo config cho wireguard
/etc/wireguard/wg0.conf
- Điền các thông tin tương tự như hình:
[Interface]
ListenPort = 51820
PrivateKey = xxxxxxxxxxxxx
Address = 172.16.0.1/30
- Lưu ý, Trong trường hợp bạn muốn nhiều máy tính kết nối tới VPN này, bạn nên sử dụng 172.16.0.1/24 để cấu hình vì /30 sẽ chỉ có 2 IP được sử dụng.
- Tiến hành start wireguard và cho phép wireguard khởi động cùng với hệ thống bằng câu lệnh sau:
systemctl start wg-quick@wg0
systemctl enable wg-quick@wg0
- Wireguard sẽ được listen trên port UDP 51280:
- Ta có thể dùng lênh sau để xem một số thông tin của wireguard:
wg show
Cấu hình firewalld
- Tiến hành kiểm tra các zone của firewalld hiện tại
firewall-cmd --get-active-zones
- Như vậy hệ thống hiện tại chỉ chạy duy nhất 1 zone “public” và bao gồm cả 2 interface eth0 (IP public) và eth1 (IP private).
- Tiến hành kiểm tra rule của zone này
firewall-cmd --zone=public --list-all
- Hệ thống hiện tại chưa bật masquerade và chỉ allow dhcpv6 cũng như ssh. Ta cần add interface wg0 vào zone public và bật chức năng masquerade và allow port udp của Wireguard trên zone này, như vậy client mới có thể truy cập được wireguard và kết nối với dải mạng private trên eth1.
- Add interface wg0 vào zone public
firewall-cmd --zone=public --add-interface=wg0 --permanent
- Enable masquerade
firewall-cmd --zone=public --add-masquerade --permanent
- Allow port 51820/udp của wireguard
firewall-cmd --zone=public --add-port=51820/udp --permanent
- Tiến hành reload lại
firewall-cmd --reload
- Tiến hành kiểm tra lại các rule mới add
Cài đặt Wireguard client
- Cài đặt Wireguard client trên Ubuntu, do ubuntu đã sử dụng kernel 4.x, vì vậy ta có thể tiến hành cài đặt trực tiếp phần mêm Wireguard:
- Tiến hành install repo của wireguard:
sudo add-apt-repository ppa:wireguard/wireguard
- Cài đặt wireguard bằng câu lệnh
sudo apt install wireguard openresolv
- Tạo cặp key pair để sử dụng cấu hình cho client. Lưu lại Private key và public key sau khi hệ thống tạo ra. Private key sẽ được sử dụng tại file cấu hình của tunesafe clien. Public key sẽ được sử dụng để cấu hình trên Wireguard server.
umask 077
wg genkey | tee /dev/tty | wg pubkey
- Tạo file config dùng để kết nối cho Wireguard client tới server
nano /etc/wireguard/wg0.conf
- Điền các thông tin cấu hình như:
- [Interface] PrivateKey: Private Key vừa Randomize ở bước trước.
- [Interface] DNS: DNS mà client sẽ sử dụng.
- [Interface] Address: IP mà client sẽ sử dụng để kết nối với server.
- [Peer] Publickey: Public key của wireguard server, có thể xem bằng lệnh wg trên server.
- [Peer] Enpoint: IP:port – IP public và port của Wireguard server.
- [Peer] AllowedIPs: Các dải IP sẽ được route để đi qua VPN, trong trường hợp bạn muốn toàn bộ traffic của client qua VPN, bạn có thể để thành 0.0.0.0/0.
- Save lại file cấu hình trên và khởi động wireguard bằng câu lệnh:
wg-quick up wg0
- Để stop wireguard, ta có thể sử dụng lệnh:
wg-quick down wg0
Cài đặt Wireguard client trên Windows
- Do hiện tại wireguard đang phát triển client cho Windows, vì vậy ta có thể sử dụng client khác của bên thứ 3 là Tunsafe. Bạn có thể truy cập link sau để tải về và cài đặt: https://tunsafe.com/download
- Sau khi cài đặt xong, bấm vào biểu tượng tunsafe trên taskbar để hiển thị giao diện phần mềm.
- Chọn File > Generate Key Pair để tạo 1 cặp keypair mới.
- Chọn Randomize để tạo cặp key pair. Lưu lại Private key và public key sau khi hệ thống tạo ra. Private key sẽ được sử dụng tại file cấu hình của tunesafe clien. Public key sẽ được sử dụng để cấu hình trên Wireguard server.
- Tạo 1 file config dùng để lưu các thông tin kết nối với Wireguard VPN server. Trong trường hợp này ta tạo 1 file VPN-new.conf nằm ở Desktop và tiến hành edit, điền các thông tin như:
- [Interface] PrivateKey: Private Key vừa Randomize ở bước trước.
- [Interface] DNS: DNS mà client sẽ sử dụng.
- [Interface] Address: IP mà client sẽ sử dụng để kết nối với server.
- [Peer] Publickey: Public key của wireguard server, có thể xem bằng lệnh wg trên server.
- [Peer] Enpoint: IP:port – IP public và port của Wireguard server.
- [Peer] AllowedIPs: Các dải IP sẽ được route để đi qua VPN, trong trường hợp bạn muốn toàn bộ traffic của client qua VPN, bạn có thể để thành 0.0.0.0/0.
- Lưu lại file trên và copy vào thư mục cài đặt của Tunesafe, trong trường hợp này là ở thư mục như trong hình:
- Quay lại giao diện của tunsafe, chọn cấu hình vừa tạo và bấm connect.
- Như vậy bạn đã cấu hình xong client, bước tiếp theo cần cấu hình kết nối trên Wireguard VPN server.
Cài đặt Wireguard client trên MacOS
- Tiến hành tìm kiếm và tải wireguard về máy thông qua appstore
- Tiến hành bật wireguard và chọn Manage tunnels tại biểu tượng của wireguard trên menubar:
- Bấm vào biểu tượng dấu “+” và chọn add empty tunnel..
- Một cửa sổ mới sẽ hiện ra, có sẵn 1 số thông tin như sau, private key và public key sẽ được hệ thống tự động tạo ra:
- Điền thêm các thông tin sau:
- Name: Đặt tên cho cấu hình VPN này
- [Interface] DNS: DNS mà client sẽ sử dụng.
- [Interface] Address: IP mà client sẽ sử dụng để kết nối với server.
- [Peer] Publickey: Public key của wireguard server, có thể xem bằng lệnh wg trên server.
- [Peer] Enpoint: IP:port – IP public và port của Wireguard server.
- [Peer] AllowedIPs: Các dải IP sẽ được route để đi qua VPN, trong trường hợp bạn muốn toàn bộ traffic của client qua VPN, bạn có thể để thành 0.0.0.0/0. Trong trường hợp này chỉ sử dụng VPN để kết nối tới dải IP private của server, do đó ta chỉ Allow dải IP private và dải IP của wireguard.
- Bạn cũng cần lưu lại publickey của client để cấu hình tại server.
- Chọn save sau khi hoàn tất.
Cài đặt Wireguard client Iphone
- Truy cập Appstore, tìm kiếm và cài đặt app wireguard
- Truy cập app wireguard sau khi cài đặt, và chọn add tunnel
- Chọn Create from Scratch
- Điền các thông tin:
- Name: Tên của cấu hình
- Chọn Generate keypair để hệ thống tự tạo 1 cặp private, public key. Ta cần lưu thông tin public key được tạo ở bước này để cấu hình trên server.
- Address: IP mà client sẽ sử dụng để kết nối với server.
- DNS: DNS mà hệ thống sẽ sử dụng.
- Chọn Add peer để tạo cấu hình kết nối tới Wireguard VPN server.
- Điền các thông tin sau và chọn save khi hoàn tất:
- Public key: Nhập public key của Wireguard server.
- Enpoint: Nhập theo dạng IP:port với IP public và port của Wireguard server.
- Allowed IPs: Các dải IP sẽ được route để đi qua VPN, trong trường hợp bạn muốn toàn bộ traffic của client qua VPN, bạn có thể để thành 0.0.0.0/0. Trong trường hợp này chỉ sử dụng VPN để kết nối tới dải IP private của server, do đó ta chỉ Allow dải IP private và dải IP của wireguard.
Cài đặt Wireguard client trên điện thoại Android
- Truy cập CHPlay, tìm app Wireguard và cài đặt:
- Giao diện phần mềm sau khi cài đặt xong:
- Bấm vào dấu “+” và chọn Create from Scratch:
- Bấm Generate để tạo cặp keypair sử dụng cho cấu hình này và điền một số thông tin như, sau đó bấm vào nút Add peer:
- Name: tên của cấu hình
- Address: IP mà client sẽ sử dụng để kết nối với Wireguard server
- DNS Server: DNS mà client sẽ sử dụng
- Điền các thông tin của Wireguard server như sau và bấm vào biểu tượng save để lưu cấu hình:
- Public key: Nhập public key của Wireguard server.
- Enpoint: Nhập theo dạng IP:port với IP public và port của Wireguard server.
- Allowed IPs: Các dải IP sẽ được route để đi qua VPN, trong trường hợp bạn muốn toàn bộ traffic của client qua VPN, bạn có thể để thành 0.0.0.0/0. Trong trường hợp này chỉ sử dụng VPN để kết nối tới dải IP private của server, do đó ta chỉ Allow dải IP private và dải IP của wireguard.
Allow kết nối với client trên Wireguard server
- Trên Wireguard server, chạy câu lệnh sau với các thông số:
- Client Public Key: Public key được tạo ra bới Wireguard client.
- Allowed-ips: Chỉ cho phép IP nào đó của Client được kết nối với Server ứng với public key được cấu hình.
wg set wg0 peer <Client Public Key> allowed-ips <client ip address>
- Trong ví dụ này ta chạy lệnh:
wg set wg0 peer /TVXTGcaZH3HLc0GopYtc4bgs1uTVAsLOa5ns4lcXgo= allowed-ips 172.16.0.2/32
- Kiểm tra lại thông tin bằng cách sử dụng lệnh
wg show wg0
- Lưu lại cấu hình:
wg-quick save wg0
- Như vậy cấu hình sẽ được lưu lại trong file wg0.conf của hệ thống, trong trường hợp hệ thống khởi động lại, cấu hình sẽ không bị mất đi.
Kiểm tra kết nối
- Tiến hành bật kết nối trên client.
- Khi client kết nối, kiểm tra status trên server có thể thấy được một số thông tin của client
- Đứng từ phía Client, đã có thể kết nối tới IP của interface wg0, eth1, và IP của server khác trong mạng private.
- Trong trường hợp bạn set allows-ips là 0.0.0.0/0 trên config của client. Mọi traffic của máy client sẽ được route qua VPN. Khi kiểm tra thông tin IP public của máy client đã được nhận sang IP public của VPN server
- Như vậy bạn đã hoàn tất việc cấu hình và kết nối tới Wireguard VPN server.
Leave A Comment?