Skip to content
Thuan Bui's Blog
Go back

PiVPN - Script cài đặt WireGuard VPN Server cho Raspberry Pi

Updated:

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

https://thuanbui.me/cai-dat-wireguard-vpn/

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.

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

Terminal window
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

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

https://thuanbui.me/static-ip-address-raspberry-pi/

Tải script PiVPN

Tải và cài PiVPN chỉ bằng 1 dòng lệnh duy nhất

Terminal window
curl -L <https://install.pivpn.io> | bash

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:

Chọn OK
Chọn OK

Thiết lập Static IP

Chọn OK
Chọn OK
Chọn No
Chọn No
Chọn Yes
Chọn Yes
Chọn OK
Chọn OK

Chọn tài khoản quản lý PiVPN

Chọn OK
Chọn OK
Chọn tài khoản mới vừa tạo ở bước trên và chọn OK
Chọn tài khoản mới vừa tạo ở bước trên và chọn OK

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

https://thuanbui.me/wireguard-vs-openvpn/

Chọn WireGuard và bấm OK
Chọn WireGuard và bấm OK
Port mặc định của WireGuard là 51820, bạn có thể giữ nguyên hoặc đổi port khác. Mình đổi qua port 51821 và chọn OK
Port mặc định của WireGuard là 51820, bạn có thể giữ nguyên hoặc đổi port khác. Mình đổi qua port 51821 và chọn OK
Chọn Yes để xác nhận
Chọn Yes để xác nhận

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.

Mình chọn Custom để cấu hình DNS Server về Server đang cài AdGuard Home. Bạn có thể chọn CloudFlare nếu không có AdGuard Home / Pi-Hole trên hệ thống
Mình chọn Custom để cấu hình DNS Server về Server đang cài AdGuard Home. Bạn có thể chọn CloudFlare nếu không có AdGuard Home / Pi-Hole trên hệ thống
Điền vào IP của máy chủ đang chạy AdGuard Home
Điền vào IP của máy chủ đang chạy AdGuard Home
Chọn Yes để xác nhận
Chọn Yes để xác nhận

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

Chọn DNS Entry và bấm OK
Chọn DNS Entry và bấm OK

Ở 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:

Điền vào tên miền đã thiết lập Dynamic DNS
Điền vào tên miền đã thiết lập Dynamic DNS
Chọn Yes để xác nhận
Chọn Yes để xác nhận

Hoàn thành và khởi động lại

Chọn OK để PiVPN tạo Server Keys
Chọn OK để PiVPN tạo Server Keys
Chọn OK
Chọn OK
Chọn Yes để xác nhận cập nhật tự động các bản cập nhật bảo mật
Chọn Yes để xác nhận cập nhật tự động các bản cập nhật bảo mật
Chọn OK
Chọn OK
Chọn Yes để khởi động lại máy
Chọn Yes để khởi động lại máy

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

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

Terminal window
cat /home/thuanbui/configs/thuanbui.conf

Bạn có thể copy nội dung hiện ra để điền vào WireGuard client trên máy tính

Cấu hình WireGuard VPN Client trên MacOS
Cấu hình WireGuard VPN Client trên MacOS

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
Chọn Create from QR Code
Chọn Create from QR Code
Scan QR Code này để tạo client mới
Scan QR Code này để tạo client mới

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

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

Terminal window
sudo iptables -I INPUT 6 -m state --state NEW -p udp --dport 51820 -j ACCEPT
sudo netfilter-persistent save

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

https://thuanbui.me/cau-hinh-vps-mien-phi-oracle-cloud/?swcfpc=1#i-cau-hinh-mang-cho-may-ao

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!


Share this post on:

Previous Post
Hướng dẫn tự thiết lập VPN cá nhân chỉ với 1 dòng lệnh cài đặt WireGuard VPN
Next Post
[Case Study] Tối ưu tốc độ và Core Web Vitals website YCB.vn đạt 99 (Mobile) - 100 (Desktop)