Trước đây, mình đã chia sẻ cách cài đặt WireGuard VPN Server lên Linux chỉ bằng 1 dòng lệnh wireguard-install
do Nyr phát triển. Tuy nhiên cách này lại không cài được trên các máy tính sử dụng CPU sử dụng nền tảng ARM: ví dụ Raspberry Pi, NanoPi, Orange Pi, Oracle Cloud Ampere A1,…
Bài viết này sẽ hướng dẫn bạn cách cài đặt WireGuard VPN lên Raspberry Pi bằng cách sử dụng script PiVPN. Mặc dù được thiết kế tối ưu cho Raspberry Pi nhưng PiVPN có thể được cài đặt trên mọi máy chủ, VPS dùng CPU x86 (Intel / AMD) sử dụng hệ điều hành Ubuntu, Debian.
Nếu bạn sử dụng hệ điều hành khác như AlmaLinux, Rocky Linux, CentOS and Fedora, hãy tham khảo cách cài đặt WireGuard VPN với script wireguard-install
Dưới đây là hướng dẫn chi tiết cách cài đặt và cấu hình PiVPN. Mình sử dụng Raspberry Pi 1 ở nhà làm thí nghiệm. Nếu không có Raspberry Pi, bạn có thể đăng ký chương trình Oracle Cloud Free Tier để tạo máy ảo sử dụng miễn phí trọn đời.
Mục Lục
Hướng dẫn cài đặt PiVPN
Tạo user quản lý PiVPN
Đầu tiên, bạn cần tạo 1 user mới trên hệ thống để dành riêng cho việc quản lý PiVPN
sudo adduser thuanbui # Tạo tài khoản thuanbui
sudo usermod -aG sudo thuanbui # Trao quyền sudo cho tài khoản mới tạo
Code language: Nginx (nginx)
Cấu hình Static IP cho Raspberry Pi
Nếu cài đặt trên Raspberry Pi, bạn cần cấu hình Static IP khi kết nối vào mạng LAN trong nhà. Tham khảo bài viết hướng dẫn dưới đây
Tải script PiVPN
Tải và cài PiVPN chỉ bằng 1 dòng lệnh duy nhất
curl -L <https://install.pivpn.io> | bash
Code language: Nginx (nginx)
Tiếp theo bạn làm theo hướng dẫn chi tiết bên dưới. Các thao tác căn bản khi thao tác trên giao diện dòng lệnh command-line:
- Bấm Tab để di chuyển qua lại giữa các mục
- Bấm Spacebar (thanh ngang) để xác nhận chọn
Thiết lập Static IP
Chọn tài khoản quản lý PiVPN
Chọn giao thức WireGuard vs OpenVPN
PiVPN hỗ trợ cài đặt cả hai giao thức OpenVPN và WireGuard. Bạn nên chọn WireGuard vì đây là giao thức mới cho tốc độ nhanh hơn rất nhiều so với OpenVPN. Mình đã có bài so sánh tốc độ bên dưới để bạn tham khảo
Chọn DNS Server
Bạn có thể chọn DNS Server của CloudFlare hay Google ở bước này. Hoặc nếu trên mạng nội bộ đang có máy chủ nào đó chạy AdGuard Home hay Pi-Hole để chặn quảng cáo. Hãy chọn Custom và điền IP của máy chủ tương ứng.
Thiết lập tên miền
Nếu bạn cài đặt trên VPS, hay máy ảo của Oracle Cloud hãy chọn Use this Public IP
, vì IP của các máy này là cố định.
Nếu cài đặt PiVPN ở nhà (mạng ở nhà dùng IP động), hãy chọn DNS Entry
Ở bước tiếp theo, bạn cần phải điền vào tên miền đã được thiết lập Dynamic DNS trỏ về IP động của mạng trong nhà. Tham khảo hai bài viết dưới đây để biết cách thiết lập:
- Hướng dẫn cấu hình Dynamic DNS trên Router Mikrotik
- Cập nhật IP động cho tên miền qua CloudFlare để truy cập homelab tại nhà
Hoàn thành và khởi động lại
Tạo tài khoản WireGuard client
Sau khi khởi động lại máy, WireGuard VPN Server sẽ tự động chạy nền trên hệ thống. Bạn cần tạo WireGuard client để có thể truy cập VPN server
Tài tài khoản client bằng lệnh
pinvn add --name thuanbui #thay thuanbui bằng tên của bạn
Code language: Dockerfile (dockerfile)
Hệ thống sẽ tự động tạo ra 1 file cấu hình thuanbui.conf
lưu trong thư mục home/thuanbui/configs
(Nếu tài khoản quản lý PiVPN của bạn tên abc
thì thư mục lưu cấu hình sẽ là /home/abc/configs
Để xem nội dung file cấu hình, dùng lệnh cat
cat /home/thuanbui/configs/thuanbui.conf
Code language: Nginx (nginx)
Bạn có thể copy nội dung hiện ra để điền vào WireGuard client trên máy tính
Nếu cần xem mã QR của client vừa tạo để cấu hình WireGuard trên điện thoại, bạn sử dụng lệnh
pivpn -qr thuanbui
Code language: Nginx (nginx)
Cấu hình Open Port cho WireGuard
Để có thể kết nối vào WireGuard VPN Server từ bên ngoài, bạn còn phải cấu hình mở port trên router mạng (nếu cài WireGuard trên server ở nhà), hoặc cấu hình tường lửa nếu cài trên máy ảo Oracle Cloud.
Mở port trên Router mạng ở nhà
Port mặc định của WireGuard là 51820. Nếu ở bước cài đặt PiVPN ở trên bạn đổi qua port khác (ví dụ mình đổi thành 51821) thì cần cấu hình mở port tương ứng trên Router. Thông số thiết lập như sau
- Protocal: UDP
- Port: 51820 (hoặc port bạn chọn)
- Address: IP của máy đang cài PiVPN
Cấu hình tường lừa trên máy ảo Oracle Cloud
Nếu cài đặt PiVPN trên máy ảo miễn phí của Oracle, bạn cần phải mở port 51820 trên máy ảo bằng lệnh sau
sudo iptables -I INPUT 6 -m state --state NEW -p udp --dport 51820 -j ACCEPT
sudo netfilter-persistent save
Code language: YAML (yaml)
Sau đó vào tiếp mục Security Lists để mở port 51820. Tham khảo chi tiết trong bài viết dưới đây
Kiểm tra kết nối
Sau khi đã thiết lập, bạn hãy kết nối thử vào WireGuard VPN Server. Nếu kết nối thành công, khi truy cập https://www.whatismyip.com/
bạn sẽ thấy hiện ra địa chỉ IP của WireGuard VPN Server đang kết nối. Nếu IP không thay đổi, nghĩa là bạn đã làm sai bước nào đó ở trên, cần kiểm tra lại
Trên server, bạn có thể dùng lệnh pivpn -c
để kiểm tra kết nối vào VPN Server.
Với WireGuard VPN Server được thiết lập trên Raspberry Pi, bạn có thể truy cập vào các dịch vụ cài đặt trên homelab ở bất cứ nơi nào khi kết nối VPN vào mạng ở nhà. Nếu trên máy chủ có cài đặt thêm AdGuard Home, kết nối vào WireGuard sẽ còn giúp bạn chặn thêm quảng cáo. Không còn lo bị quảng cáo làm phiền khi dùng mạng 4G / Wifi công cộng nữa.
Chúc bạn cấu hình thành công PiVPN!
MÌNH ĐÃ LÀM NHƯ TRÊN ĐÃ KẾT NỐI ĐC ĐẾN VPN SERVER NHƯNG KHÔNG RA INTERNET ĐƯỢC.