Skip to main content
Quay lại Blog

Tailscale — mạng riêng mesh cho homelab và VPS không cần tự dựng WireGuard

· One min read
Vu Nguyen
Java / Backend Engineer

Nhiều máy rải rác — VPS, NAS, VM trên Proxmox — nhưng bạn chỉ muốn SSH, rsync, hoặc API nội bộ giữa chúng mà không mở hàng loạt port ra Internet. Tailscale gom chúng vào một tailnet (mạng mesh trên WireGuard) với vài lệnh cài đặt.

Bài toán thực tế

Homelab không chỉ là một máy ở nhà. Thường có thêm:

  • Một hoặc vài VPS (backup, CI nhẹ, bastion).
  • VM / LXC trên Proxmox chỉ có IP LAN.
  • Laptop và điện thoại khi cần “như đang ngồi trong mạng nhà”.

Bạn muốn ssh [email protected], chạy Syncthing/rsync giữa các node, hoặc gọi service nội bộ (http://nas.lan:8080) không phụ thuộc IP public đổi liên tục và không publish SSH ra 0.0.0.0.

WireGuard thuần vẫn là nền tảng tốt — nhưng tự quản N×N peer, key rotation, firewall khi thêm máy mới nhanh chóng thành công việc phụ. Tailscale giữ WireGuard cho data plane, phần điều phối (đăng nhập, phân IP 100.64.0.0/10, NAT traversal, ACL) giao cho control plane của họ.

:::info So với Cloudflare Tunnel Cần RDP vào Windows từ máy không cho cài VPN? Xem bài Cloudflare Tunnel + RDP. Tailscale hợp khi bạn kiểm soát được client trên laptop/phone/server. :::


Tailscale là gì?

  • Tailnet: mạng riêng ảo của tài khoản/org bạn; mỗi thiết bị nhận địa chỉ Tailscale IP (thường dạng 100.x.y.z).
  • Mesh: hai máy cố gắng kết nối trực tiếp (UDP hole punching). Nếu không được, traffic đi qua DERP relay (vẫn mã hóa WireGuard).
  • WireGuard: giao thức tunnel; Tailscale không thay thế bảo mật lớp transport.

Hub-and-spoke (một VPN server trung tâm) dễ nghẽn và tăng latency. Mesh giảm “đi vòng” khi hai VPS ở hai region nói chuyện với nhau.


Ưu / nhược điểm (góc nhìn homelab)

Ghi chú
ƯuCài nhanh trên Linux/macOS/Windows/iOS/Android; dashboard quản lý máy; MagicDNS; ACL theo tag; subnet router / exit node khi cần
ƯuKhông tự host coordination server (khác Headscale — self-host control plane)
NhượcPhụ thuộc dịch vụ Tailscale (hoặc bạn chuyển sang Headscale nếu policy yêu cầu)
NhượcOverlay thêm một lớp — băng thông thường thấp hơn kết nối public trực tiếp hoặc WireGuard point-to-point tối ưu; đủ cho admin, sync, API

Giới hạn gói Personal thay đổi theo thời gian — luôn đối chiếu Tailscale pricing.


1. Tạo tài khoản

  1. Mở https://login.tailscale.com/start.
  2. Đăng nhập bằng Google, GitHub, Microsoft, hoặc SSO doanh nghiệp (nếu có).
  3. Vào Admin consoleMachines: danh sách thiết bị và IP tailnet sẽ hiện ở đây sau khi tailscale up.

Bật device approval nếu tailnet dùng chung: máy mới phải được admin chấp nhận trước khi tham gia.


2. Cài trên Linux (VPS / VM)

Script chính thức hoạt động trên hầu hết distro:

install-tailscale.sh
curl -fsSL https://tailscale.com/install.sh | sh
sudo systemctl enable --now tailscaled
sudo tailscale up

Lệnh tailscale up in ra URL — mở trình duyệt, đăng nhập cùng tài khoản tailnet, Authorize. Terminal báo Success khi xong.

Kiểm tra:

tailscale-status.sh
tailscale status
tailscale ip -4

Ping một máy khác trong tailnet (dùng IP 100.x từ dashboard):

ping-tailnet.sh
ping -c 4 100.x.y.z

Arch / EndeavourOS: có thể dùng yay -S tailscale thay script, vẫn cần systemctl enable --now tailscaled.


3. Cài trên máy cá nhân

  • macOS / Windows / mobile: Tailscale download — app GUI, đăng nhập một lần.
  • Sau khi laptop vào tailnet, bạn có thể SSH vào VPS qua 100.x không cần mở port 22 ra Internet (vẫn nên PermitRootLogin no, key-only, fail2ban nếu có surface khác).

4. MagicDNS và tên máy

Trong admin console: DNS → bật MagicDNS. Máy my-vps có thể gọi ssh user@my-vps thay vì nhớ IP 100.x.

Nếu dùng domain riêng (Split DNS), xem MagicDNS — phần nâng cao, không bắt buộc ngày đầu.


5. Subnet router (tuỳ chọn)

Một node trong LAN (ví dụ mini PC chạy Tailscale) quảng bá dải 192.168.1.0/24 vào tailnet. Máy ở xa truy cập 192.168.1.50 như đang trong LAN.

subnet-router.sh
# Trên máy đứng trong LAN, sau khi bật IP forwarding theo docs Tailscale:
sudo tailscale up --advertise-routes=192.168.1.0/24

Trong console: Approve route. Đọc kỹ Subnet routers — sai route có thể lộ LAN.

Exit node (đi Internet qua nhà): --advertise-exit-node — hữu ích khi du lịch, nhưng là quyền lực lớn; chỉ bật khi hiểu rủi ro.


6. ACL và bảo mật tối thiểu

  • Gắn tag cho tag:server, tag:personal — policy chỉ cho laptop cá nhân SSH vào server.
  • Tắt key expiry chỉ khi thật sự cần (máy headless); ưu tiên re-auth định kỳ trên laptop.
  • Không thay thế patch OS, firewall trên VPS, hay secrets management.

Mẫu ACL: Tailscale ACL samples.


7. Hiệu năng — kỳ vọng đúng

Đo iperf3 giữa hai máy qua tailnet thường thấp hơn cùng cặp qua IP public hoặc WireGuard một-hop — do relay, MTU, đường đi. Với đồng bộ backup, kubectl/API nội bộ, SSH, mình thấy đủ dùng; không chọn Tailscale làm đường truyền chính cho stream 4K.

Nếu cần tối đa throughput giữa đúng hai node và bạn sẵn sàng bảo trì config: WireGuard tự host vẫn thắng. Nếu cần mười máy và đổi máy thường xuyên: Tailscale tiết kiệm thời gian hơn rõ rệt.


8. Headscale — khi phải self-host

Headscale là implementation open-source của control server, client vẫn dùng tailscale. Hợp org cấm SaaS. Đổi chi phí: bạn vận hành, backup, upgrade.


Tóm tắt workflow

  1. Tạo tailnet → cài tailscaled trên từng máy → tailscale up + authorize.
  2. Bật MagicDNS; SSH/rsync qua 100.x hoặc hostname.
  3. Cần LAN đầy đủ từ xa → subnet router có kiểm soát.
  4. RDP / máy không cài VPN → cân nhắc tunnel (Cloudflare hoặc tương đương), không nhét mọi thứ vào một giải pháp.

Tài liệu chính thức: What is Tailscale? · Install Linux.