- Wireguard = VPN modern, nhanh, ít code, 1 file config, dễ setup hơn OpenVPN nhiều.
- 1 VPS US 2GB RAM đủ chạy VPN cá nhân + 3-5 client (iPhone, Mac, Windows, iPad, NAS).
- Dùng để: test geo-restriction US (Netflix US lib, ChatGPT EU region), dev access SSH/RDP qua IP cố định.
- Không phải dịch vụ thương mại che giấu identity - vẫn để lại fingerprint. Privacy ≠ anonymity.
- Tự host rẻ hơn NordVPN/Surfshark, kiểm soát log, không bị share IP với 1000 user spam khác.
Dev VN cần access US-only content: docs AWS region us-east-1 đôi khi block, ChatGPT EU policy khác US, Netflix library US nhiều series hơn VN, dev test geo-restriction phải xem app từ angle IP US. NordVPN: 12 USD/tháng, IP share với 1000 user khác, hay bị Netflix flag. Tự host: 5 USD/tháng VPS US, IP dành riêng, performance gấp 3 lần SaaS VPN. Bài này hướng dẫn dựng Wireguard server trên VPS US, cấu hình client cho iOS/Mac/Win, chống DNS leak, kèm tips chọn VPS provider hợp.
Wireguard vs OpenVPN vs IKEv2
| Khía cạnh | Wireguard | OpenVPN | IKEv2 |
|---|---|---|---|
| Code size | ~4000 dòng | ~600k dòng | Phức tạp |
| Speed | Nhanh nhất | Trung bình | Nhanh |
| Setup | 1 file config | Cả mớ cert | Trung bình |
| Hỗ trợ OS | Mọi OS qua app | Mọi OS | iOS/Android native |
| NAT/Firewall friendly | UDP port duy nhất | UDP/TCP linh hoạt | UDP 500/4500 |
| Roaming | Tốt | Hay đứt khi chuyển wifi | Tốt |
Wireguard thắng tuyệt đối cho use case cá nhân. OpenVPN chỉ giữ giá trị khi cần TCP fallback bypass firewall doanh nghiệp.
Chọn VPS US
- Datacenter US East (Virginia, NY) - latency từ VN ~180-220ms.
- Datacenter US West (LA, SF) - latency từ VN ~150-180ms, tốt hơn cho streaming.
- RAM 1-2 GB đủ, vCPU 1 đủ cho VPN cá nhân, bandwidth 1Gbps càng tốt.
- Disk 20-40 GB, không cần lớn.
- IP IPv4 dedicated (không CGNAT), provider phải allow port 51820/UDP outbound.
- Provider mạnh streaming: chọn IP không nằm trong blacklist Netflix/Hulu.
Một số provider US uy tín: Vultr (LA, NY), DigitalOcean (SF, NY), Linode (Atlanta, Fremont), BuyVM, Racknerd. Test trước với speedtest từ VN khi mới mua.
Cài Wireguard server
# Ubuntu 22/24 LTS
sudo apt update && sudo apt install -y wireguard qrencode
# AlmaLinux 9
sudo dnf install -y wireguard-tools qrencode
# Verify
wg --version
# Tạo key cặp cho server
cd /etc/wireguard
sudo wg genkey | sudo tee server_private.key | sudo wg pubkey | sudo tee server_public.key
sudo chmod 600 server_private.key
Cấu hình server
Tạo file /etc/wireguard/wg0.conf:
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY_HERE
SaveConfig = false
# Bật forward khi WG up
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Client iPhone (sẽ thêm sau)
# [Peer]
# PublicKey = ...
# AllowedIPs = 10.66.66.2/32
Bật IP forwarding và start:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf
# Cho phép port 51820 UDP
sudo ufw allow 51820/udp # Ubuntu
# Hoặc
sudo firewall-cmd --add-port=51820/udp --permanent && sudo firewall-cmd --reload # AlmaLinux
# Bật service
sudo systemctl enable --now wg-quick@wg0
sudo wg show
Thêm client (iPhone)
cd /etc/wireguard
sudo wg genkey | sudo tee client-iphone.key | sudo wg pubkey | sudo tee client-iphone.pub
Tạo file client-iphone.conf:
[Interface]
Address = 10.66.66.2/32
PrivateKey = CLIENT_IPHONE_PRIVATE_KEY
DNS = 1.1.1.1, 1.0.0.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = your-vps-ip:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Thêm peer vào server config /etc/wireguard/wg0.conf:
[Peer]
PublicKey = CLIENT_IPHONE_PUBLIC_KEY
AllowedIPs = 10.66.66.2/32
Apply config mới mà không restart:
sudo wg syncconf wg0 <(wg-quick strip wg0)
Cài client iPhone bằng QR code
# Trên VPS server, generate QR code in terminal
sudo qrencode -t ansiutf8 < client-iphone.conf
iPhone tải app Wireguard từ App Store, bấm "+", "Create from QR code", scan terminal. App tự load config. Bật toggle là kết nối. Verify IP: vào ifconfig.me, phải hiện IP VPS US.
Client Mac, Windows, Linux
- Mac: tải app Wireguard từ App Store, "Add Empty Tunnel" hoặc "Import from File", paste config text.
- Windows: tải installer wireguard.com, "Add Tunnel" -> "Import Tunnels from File".
- Linux desktop: install wireguard-tools, paste file vào
/etc/wireguard/wg0.conf,sudo wg-quick up wg0. - Android: app Wireguard từ Play Store, scan QR code tương tự iPhone.
DNS leak protection
VPN che IP nhưng nếu DNS query vẫn đi qua ISP local (Vietnam), trang web vẫn biết bạn ở VN. Đảm bảo client config có DNS = 1.1.1.1, 1.0.0.1 (hoặc 8.8.8.8). Test bằng dnsleaktest.com:
- Click Extended test.
- Kết quả phải hiện DNS server ở US (Cloudflare, Google, Quad9).
- Không có DNS server VN (Viettel, VNPT, FPT).
Nếu vẫn leak: trên Mac/Win, đặt DNS thủ công trong system settings về 1.1.1.1 khi VPN bật. Hoặc dùng Cloudflare Warp client kết hợp với Wireguard.
Kill switch và auto-reconnect
Kill switch = khi VPN rớt, chặn traffic không cho leak qua ISP thường. App Wireguard official có toggle "On-Demand" trên iOS/Mac giúp auto-reconnect khi mạng đổi. Bật để VPN luôn on khi rời nhà.
Trên Linux client, dùng iptables rule chặn outbound trừ qua wg0:
sudo iptables -I OUTPUT -o eth0 -j REJECT
sudo iptables -I OUTPUT -o wg0 -j ACCEPT
sudo iptables -I OUTPUT -m owner --uid-owner wireguard -j ACCEPT
Use case thực tế
- Test web app từ angle IP US (geo-restriction, A/B test, currency display).
- Truy cập docs/dashboard SaaS bị block (Stripe Atlas, Mercury, vài service finance).
- Streaming Netflix US, Hulu, HBO Max (library lớn hơn VN).
- Truy cập ChatGPT khi region bị throttle, hoặc dùng tool AI cấm cross-border.
- SSH/RDP từ VN có outbound IP US ổn định cho dev access cloud config IP whitelist.
- Bypass throttle ISP với Youtube/Twitch khi peak hour.
Lưu ý pháp lý và an toàn
- Self-host VPN không bị cấm ở VN, nhưng dùng để truy cập nội dung vi phạm pháp luật là cấm.
- Netflix etc có TOS cấm VPN, có thể khoá account nếu phát hiện. Rủi ro thấp với IP riêng nhưng không zero.
- Không log traffic trên VPS để bảo vệ privacy cá nhân.
- Backup config file riêng nơi an toàn, không upload Github public.
- Update Wireguard định kỳ, theo dõi CVE.
Bẫy thường gặp
| Triệu chứng | Cách fix |
|---|---|
| VPN connect nhưng không internet | Quên iptables MASQUERADE PostUp, hoặc IP forward chưa bật |
| Tốc độ chậm dù VPS gần | MTU mặc định 1420 có thể quá lớn, hạ xuống 1280 |
| Netflix phát hiện VPN | IP nằm blacklist, đổi VPS provider hoặc đổi IP |
| iOS battery drain | Bật On-Demand WiFi only, không trên cellular |
| Roaming giữa wifi-cellular drop | Set PersistentKeepalive 25 trong client config |
VPS VN cho hub mesh + VPS US cho exit node streaming
Cloud VPS TND sẵn AlmaLinux 9, Ubuntu 22/24, Debian 12/13. SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. Dùng VPS TND làm hub Tailscale/Wireguard nội bộ team, kết hợp VPS US riêng (Vultr, DO) làm exit node cho geo-restriction.
Xem 8 cấu hình Cloud VPS →FAQ
Wireguard có an toàn cho banking không?
Wireguard dùng crypto state-of-the-art (Curve25519, ChaCha20Poly1305, BLAKE2s), audit chính thức. An toàn hơn OpenVPN ở khía cạnh code base nhỏ ít bug. Tuy nhiên không nên dùng VPN để access banking VN qua IP US - ngân hàng VN có thể flag hành vi đáng ngờ, khoá thẻ tạm thời. Banking dùng VPN khi du lịch hoặc thật cần.
Có thể chạy Wireguard chung VPS với web app khác không?
Có. Wireguard chỉ chiếm port 51820/UDP, không xung đột với 80/443. App web vẫn chạy bình thường. Tuy nhiên nếu VPS lo cả VPN cá nhân + production web, traffic VPN có thể chiếm bandwidth lúc streaming, ảnh hưởng response time web. Khuyến nghị tách VPS riêng.
So sánh với Tailscale thì khác gì?
Tailscale dùng Wireguard bên dưới + coordination server cloud, SSO, mesh network giữa devices. Tốt cho team. Wireguard pure tốt cho cá nhân hoặc khi không trust company Tailscale Inc. Setup Tailscale 5 phút, setup Wireguard manual 30 phút. Cả 2 cùng family.
Có hỗ trợ split tunneling không?
Có. Trong client config, đổi AllowedIPs = 0.0.0.0/0 (toàn bộ) sang chỉ subnet cần (vd 10.66.66.0/24, hoặc IP cụ thể). Traffic khác đi thẳng ISP. Hữu ích khi chỉ cần VPN cho 1 vài service, không muốn route 100% traffic qua US.
Wireguard có hỗ trợ IPv6 không?
Có. Thêm dải IPv6 vào Interface (vd Address = 10.66.66.1/24, fd00::1/64) và PostUp iptables ip6tables tương ứng. Client config thêm IPv6 trong AllowedIPs. Hữu ích khi provider VPS có IPv6 native và cần test IPv6 trong app.


