Cài đặt Mesh VPN với Tailscale trên Linux: Kết nối Server từ xa, ‘vượt rào’ CGNAT không cần mở Port

Network tutorial - IT technology blog
Network tutorial - IT technology blog

Nỗi ám ảnh mang tên NAT và Port Forwarding

Sau 6 tháng vận hành homelab cùng 3 con VPS Cloud để chạy production, mình thấm thía nỗi khổ khi duy trì kết nối giữa các mạng khác nhau. Trước đây, mỗi lần muốn SSH về máy ở nhà, mình phải vã mồ hôi mở port trên Router và cấu hình DDNS. Chỉ cần hở port 22 ra tầm 10 phút là log hệ thống đã đầy rẫy dấu vết botnet từ khắp nơi vào “thăm hỏi”.

Nếu anh em từng cài WireGuard hay OpenVPN thủ công, chắc chắn sẽ hiểu cảm giác cực nhọc khi quản lý file config và key. Mọi chuyện còn bế tắc hơn nếu server đặt sau lớp mạng CGNAT của nhà mạng. Đây là nơi bạn chẳng có quyền can thiệp vào Router. Đó là lý do mình quyết định chuyển hẳn sang Tailscale cho toàn bộ hệ thống cá nhân và các dự án vệ tinh của khách hàng.

So sánh các cách tiếp cận kết nối từ xa

Để anh em hiểu tại sao Mesh VPN lại là “chân ái”, hãy nhìn vào 3 phương án phổ biến này:

  • Port Forwarding + DDNS: Cách truyền thống nhưng rủi ro cao. Bạn đang mở toang cửa cho hacker quét port. Phương án này gần như vô dụng nếu Router không có IP công khai (Public IP).
  • VPN truyền thống (Self-hosted WireGuard): Bảo mật tốt nhờ mã hóa. Tuy nhiên, một node bắt buộc phải có IP tĩnh hoặc mở port. Mô hình Hub-and-Spoke này dễ gây nghẽn băng thông tại node trung tâm khi tải nặng.
  • Mesh VPN (Tailscale, ZeroTier): Các máy tự kết nối trực tiếp (Peer-to-Peer). Nó tự động xuyên thủng mọi lớp NAT khó chịu. Dữ liệu đi thẳng giữa các máy nên độ trễ thường chỉ ở mức 1-5ms trong cùng mạng nội bộ ảo.

Tại sao mình chọn Tailscale thay vì các giải pháp khác?

Tailscale là lớp overlay thông minh chạy trên nền WireGuard. Nó giữ lại tốc độ xé gió và tính bảo mật của WireGuard nhưng dọn sạch đống cấu hình thủ công rắc rối. Tính năng MagicDNS khiến mình cực kỳ hài lòng. Thay vì nhớ dãy IP 100.x.y.z, mình chỉ cần gõ ssh user@ubuntu-server là máy tự hiểu.

Việc quản lý danh tính cũng nhàn hơn hẳn nhờ cơ chế Single Sign-On (SSO). Bạn có thể đăng nhập thẳng bằng Google hoặc GitHub. Không cần tạo thêm user, không cần quản lý thêm mật khẩu cho VPN, cực kỳ tinh gọn.

Hướng dẫn cài đặt Tailscale trên Linux trong 2 phút

Quy trình cài đặt trên Linux rất mượt mà. Ở đây mình thực hiện trên Ubuntu 22.04, các bản distro khác hoàn toàn tương tự.

Bước 1: Chạy lệnh cài đặt tự động

Sử dụng script chính chủ để Tailscale tự động nhận diện distro và thêm repository:

curl -fsSL https://tailscale.com/install.sh | sh

Bước 2: Kích hoạt và xác thực tài khoản

Cài xong, bạn hãy khởi động dịch vụ và lấy link đăng nhập bằng lệnh:

sudo tailscale up

Terminal sẽ trả về một đường link duy nhất. Bạn chỉ cần copy dán vào trình duyệt, đăng nhập bằng tài khoản đã chọn. Ngay lập tức, máy Linux sẽ xuất hiện trong mạng nội bộ ảo của bạn.

Bước 3: Kiểm tra các máy trong mạng

Để biết những thiết bị nào đang online, hãy gõ:

tailscale status

Lệnh này liệt kê chi tiết IP ảo và tên máy của từng node. Bạn sẽ thấy mọi thứ đã sẵn sàng để kết nối.

Biến Linux Server thành Subnet Router

Đây là tính năng đáng giá nhất mình thường xuyên sử dụng. Giả sử nhà bạn có một con NAS đời cũ hoặc camera IP không cài được Tailscale. Bạn có thể biến máy Ubuntu trong cùng mạng LAN đó thành một Subnet Router để làm cầu nối.

Trước tiên, hãy bật IP Forwarding trên Linux:

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

Tiếp theo, chạy lệnh up kèm theo dải IP nội bộ của bạn:

sudo tailscale up --advertise-routes=192.168.1.0/24

Nếu lúng túng khi tính toán dải IP, mình thường dùng toolcraft.app/vi/tools/developer/ip-subnet-calculator. Chỉ cần nhập CIDR là bạn có ngay network range chính xác, tránh việc bị trùng lặp dải IP khi kết nối nhiều chi nhánh (site-to-site).

Cuối cùng, bạn vào Admin Console trên web, tìm máy Linux này và bật dải IP vừa quảng bá trong mục “Edit route settings”. Giờ đây, dù ngồi ở quán cafe, bạn vẫn in tài liệu được qua máy in 192.168.1.50 ở nhà một cách dễ dàng.

Lưu ý về bảo mật và tối ưu hiệu suất

Dù Tailscale rất mạnh, nhưng khi đưa vào vận hành thực tế, anh em cần chú ý:

  • ACL (Access Control Lists): Theo mặc định, mọi máy trong mạng đều thấy nhau. Hãy dùng file cấu hình ACL trên Dashboard để giới hạn quyền truy cập, tránh việc một máy bị chiếm quyền sẽ ảnh hưởng cả hệ thống.
  • Exit Node: Khi dùng Wi-Fi công cộng, hãy bật tính năng Exit Node. Toàn bộ traffic của bạn sẽ được đẩy qua server riêng, giúp duyệt web an toàn như đang ở nhà.
  • Kiểm tra kết nối DERP: Tailscale luôn ưu tiên kết nối trực tiếp. Nếu firewall quá gắt, nó sẽ đi vòng qua DERP server trung gian. Lúc này tốc độ sẽ giảm, hãy kiểm tra bằng lệnh tailscale ping [IP-target] để biết trạng thái.

Tổng kết

Từ khi có Tailscale, mình đã xóa toàn bộ cấu hình port forwarding trên Router. Việc quản lý server trở nên thảnh thơi hơn vì cổng SSH không còn phơi ra internet. Đối với các kỹ sư hay phải di chuyển giữa văn phòng và công ty, đây là giải pháp thay đổi hoàn toàn cách chúng ta làm việc. Nó vừa giữ được sự đơn giản tối đa, vừa đảm bảo tiêu chuẩn bảo mật khắt khe của WireGuard.

Share: