Phần lớn sự cố VPN quy về một vài nguyên nhân, và kiểm tra chúng theo đúng thứ tự sẽ giúp bạn đỡ mất cả buổi tối. Hãy chạy lệnh trên máy chủ, trừ khi bước đó nói khác. Ví dụ dùng WireGuard trên cổng mặc định 51820/udp; với OpenVPN hoặc Xray, hãy thay bằng tên dịch vụ và cổng của bạn.
Kiểm tra lần cuối 2026-11-13.
1. Máy chủ có dùng gói có IPv4 riêng không?
Client VPN kết nối vào máy chủ của bạn từ bên ngoài. Gói NAT chỉ cho một cổng đi vào từ bên ngoài, đó là cổng SSH cá nhân của bạn, nên không VPN nào chạy được trên đó. Nếu bảng điều khiển hiển thị địa chỉ kèm cổng dạng 20xxx, bạn đang dùng NAT. Chuyển sang IPv4 riêng vẫn giữ nguyên dữ liệu và không cần cài lại; xem Đổi địa chỉ IP.
2. Dịch vụ có đang chạy không?
systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -n 30 --no-pager
Với OpenVPN, unit thường là openvpn-server@server; với Xray là xray. Dịch vụ không khởi động được gần như luôn ghi lý do ở mấy dòng cuối của log: gõ sai cấu hình, thiếu file khóa, cổng đã bị dùng.
3. Nó có lắng nghe trên cổng bạn mong đợi không?
ss -ulpn | grep 51820 # UDP: WireGuard, OpenVPN over UDP
ss -tlpn | grep 443 # TCP: Xray / VLESS, OpenVPN over TCP
Không có kết quả nghĩa là dịch vụ không lắng nghe ở đó, dù cấu hình ghi gì đi nữa. Hãy so cổng này với cổng trong client.
4. Tường lửa có cho qua không?
ufw status verbose
Nếu tường lửa đang bật mà cổng của bạn không có trong danh sách, hãy mở nó:
ufw allow 51820/udp
Chú ý giao thức: WireGuard cần UDP, và quy tắc 51820/tcp chẳng giúp gì cho nó. Hãy giữ nguyên quy tắc SSH trước khi bật hoặc nạp lại tường lửa, nếu không bạn sẽ tự khóa mình ở ngoài. Nếu vẫn xảy ra, console trên trình duyệt trong bảng điều khiển sẽ đưa bạn vào lại.
5. Client có thực sự tới được máy chủ không?
Với WireGuard, handshake sẽ cho bạn biết:
wg show
latest handshake: N seconds ago ở một peer nghĩa là client đã tới máy chủ và khóa khớp nhau. Hoàn toàn không có dòng handshake nghĩa là nó chưa bao giờ tới. Khi đó hãy kiểm tra theo thứ tự: IP và cổng endpoint trong cấu hình client, tường lửa ở bước 4, và khóa công khai của client có nằm trong khối [Peer] trên máy chủ không (và ngược lại).
6. Kết nối được nhưng không mở được gì?
Đường hầm chạy, nhưng máy chủ không đẩy lưu lượng ra Internet. Kiểm tra chuyển tiếp:
sysctl net.ipv4.ip_forward
Kết quả phải là 1. Nếu không, hãy bật vĩnh viễn:
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-vpn.conf
sysctl --system
Sau đó kiểm tra quy tắc NAT. Trong cấu hình WireGuard, đó là dòng PostUp có MASQUERADE, và tên card mạng trong đó phải là tên thật của card mạng trên máy chủ:
ip -br addr
Nếu dòng đó ghi -o eth0 mà card mạng của bạn tên khác, hãy sửa cấu hình rồi khởi động lại dịch vụ.
7. Thử từ một mạng khác
Kết nối bằng dữ liệu di động thay vì Wi-Fi ở nhà, hoặc nhờ ai đó ở nước khác thử. Nếu ở đó VPN chạy nhưng từ mạng quen thuộc của bạn thì không, máy chủ vẫn ổn và có thứ gì đó ở giữa đang chặn kết nối.
- Để xem máy chủ của bạn có truy cập được từ một quốc gia cụ thể hay không: Cách kiểm tra IP VPS của bạn có truy cập được từ Nga và Iran không.
- Ở những nơi WireGuard và OpenVPN bị nhận diện và chặn, VLESS + Reality trông như HTTPS thông thường và khó chặn hơn nhiều.
8. Vẫn chưa được?
Hãy mở ticket và ghi rõ bạn đã kiểm tra những gì: kết quả các bước 2–5 và tên client VPN bạn dùng. Có những thông tin đó, thường chúng tôi có thể chỉ ra chỗ hỏng ngay trong lần trả lời đầu tiên.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.