Chuyên mục
Network

Tailscale – Thiết lập mạng riêng ảo bảo mật dễ dàng, nhanh gọn

Hiện tại mình đang quản lý 8 VPS, nằm rải rác khắp nơi: Đức (1 của Hetzner), HongKong (3 của HostHatch, 1 của GreencloudVPS), Vietnam (1 của AZdigi, 1 của GreencloudVPS), Mỹ (1 của GreencloudVPS). Ngoài ra còn có thêm vô số các máy ảo VM / LXC được thiết lập trên máy chủ Proxmox ở nhà.

Mình muốn kết nối tất cả các VPS này với nhau để tạo thành một mạng riêng ảo (VPN – Virtual Private Network), để tiện việc sao lưu, đồng bộ dữ liệu. Giờ phải làm sao?

Dĩ nhiên muốn tạo VPN thì phải xài dịch vụ VPN rồi. WireGuard VPN là lựa chọn hoàn hảo nhất hiện nay để tạo mạng riêng ảo.

Tuy nhiên, việc cấu hình mạng riêng ảo cho hơn chục thiết bị kết nối với nhau thông qua WireGuard nó quá rối rắm và mất thời gian. Chưa kể đến việc quản lý và bảo trì cũng sẽ gặp nhiều rắc rối.

Để giải quyết vấn đề này, mình đã tìm đến Tailscale – một dịch vụ VPN giúp tạo thành mạng riêng ảo bảo mật siêu nhanh, siêu dễ.

Dưới đây là hướng dẫn chi tiết cách sử dụng Tailscale.

I. Tailscale là gì?

Tailscale là một dịch vụ VPN cho phép kết nối các thiết bị và ứng dụng của bạn ở khắp mọi nơi trên thế giới tạo thành một mạng LAN ảo. Các kết nối giữa hai thiết bị được mã hóa dựa trên giao thức WireGuard, bảo đảm chỉ có các thiết bị nằm trong hệ thống mạng riêng ảo có thể giao tiếp với nhau.

Tailscale kết nối các thiết bị tạo thành hệ thống mạng dạng lưới ngang hàng (peer-to-peer mesh network), được gọi là tailnet. Nhờ vậy giúp cải thiện tốc độ kết nối, giảm độ trễ và tăng sự ổn định cho hệ thống mạng.

Kết nối VPN truyền thống: Sử dụng nút mạng trung tâm để kết nối các thiết bị với nhau, làm tăng độ trễ và dễ bị nghẽn mạng, gây ảnh hưởng đến sự ổn định. Ảnh: https://tailscale.com/kb/1151/what-is-tailscale/
Khi sử dụng Tailscale, các thiết bị được kết nối trực tiếp với nhau, giúp giảm độ trễ kết nối. Ảnh: https://tailscale.com/kb/1151/what-is-tailscale/

1. Ưu điểm

  • Tốc độ kết nối nhanh vì được phát triển dựa trên WireGuard.
  • Đơn giản, dễ cài đặt và sử dụng, không cần cấu hình phức tạp.
  • Miễn phí cho 20 thiết bị.

2. Nhược điểm

  • Phụ thuộc vào máy chủ của Tailscale.
  • Tốc độ không bằng kết nối trực tiếp.

II. Tạo tài khoản Tailscale

Để có thể sử dụng Tailscale, đầu tiên cần phải đăng ký tài khoản: https://login.tailscale.com/start

Sau khi đăng ký và đăng nhập vào tài khoản, bạn sẽ được chuyển hướng đến trang quản lý như dưới đây

Trong hình trên là tài khoản của mình với các thiết bị đã được cài đặt Tailscale, được cấp địa chỉ IP riêng trong mạng riêng.

III. Cài đặt Tailscale

Để thêm thiết bị vào mạng riêng ảo của Tailscale, bạn cần cài đặt Tailscale client lên máy. Tailscale cung cấp ứng dụng cho các hệ điều hành phổ biến hiện nay: macOS, iOS, Windows, Linux, Android. Xem chi tiết cách cài đặt ở đây: https://tailscale.com/download

Mình cài đặt Tailscale lên EndeavourOS Linux bằng lệnh sau

yay -S install tailscaleCode language: Nginx (nginx)

Hoặc bạn có thể cài đặt lên tất cả các bản phân phối Linux bằng dòng lệnh này

curl -fsSL https://tailscale.com/install.sh | shCode language: Nginx (nginx)

Sau khi cài Tailscale, mình cần kích hoạt cho nó hoạt động

sudo systemctl enable tailscaled
sudo systemctl start tailscaledCode language: Bash (bash)

Kết nối thiết bị vào mạng riêng ảo

sudo tailscale upCode language: Nginx (nginx)

Terminal sẽ hiện ra một đường link, yêu cầu mở trình duyệt và đăng nhập để xác thực.

To authenticate, visit:

	https://login.tailscale.com/a/7b6e22b9f748Code language: JavaScript (javascript)

Sau khi đăng nhập thành công, trình duyệt sẽ hiện ra thông báo “Authorizatoin successful”. Đồng thời trong Terminal cũng sẽ hiện ra thông báo Success.

Máy đã được thêm vào mạng riêng ảo thành công. Kiểm tra địa chỉ IP do Tailscale cấp bằng lệnh

tailscale upCode language: Nginx (nginx)

Kết quả trả về

100.108.55.94
fd7a:115c:a1e0:ab12:4843:cd96:626c:375eCode language: CSS (css)

Mình thử ping đến 1 thiết bị khác trong mạng riêng ảo

ping 100.118.121.87Code language: CSS (css)

Kết nối ngon lành

PING 100.118.121.87 (100.118.121.87) 56(84) bytes of data.
64 bytes from 100.118.121.87: icmp_seq=1 ttl=64 time=103 ms
64 bytes from 100.118.121.87: icmp_seq=2 ttl=64 time=33.0 ms
64 bytes from 100.118.121.87: icmp_seq=3 ttl=64 time=34.3 ms
64 bytes from 100.118.121.87: icmp_seq=4 ttl=64 time=34.6 ms
64 bytes from 100.118.121.87: icmp_seq=5 ttl=64 time=34.6 ms
64 bytes from 100.118.121.87: icmp_seq=6 ttl=64 time=31.1 ms
64 bytes from 100.118.121.87: icmp_seq=7 ttl=64 time=30.1 ms
64 bytes from 100.118.121.87: icmp_seq=8 ttl=64 time=32.5 msCode language: YAML (yaml)

IV. Kiểm tra băng thông

Mình sử dụng công cụ iperf3 để kiểm tra băng thông kết nối

Chạy iperf3 server trên VPS đặt ở HongKong

iperf3 -sCode language: Nginx (nginx)

1. Kết nối trực tiếp

Chạy iperf3 client trên máy tính ở nhà để kiểm tra băng thông

iperf3 -c ycb.vnCode language: CSS (css)

Kết quả

Connecting to host ycb.vn, port 5201
[  5] local 192.168.0.22 port 52632 connected to 2xx.xxx.xxx.222 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  148    457 KBytes       
[  5]   1.00-2.00   sec  15.3 MBytes   128 Mbits/sec    0    510 KBytes       
[  5]   2.00-3.00   sec  17.6 MBytes   148 Mbits/sec    0    546 KBytes       
[  5]   3.00-4.00   sec  16.4 MBytes   138 Mbits/sec    2    405 KBytes       
[  5]   4.00-5.00   sec  14.1 MBytes   118 Mbits/sec    0    442 KBytes       
[  5]   5.00-6.00   sec  15.3 MBytes   128 Mbits/sec    0    463 KBytes       
[  5]   6.00-7.00   sec  10.6 MBytes  89.2 Mbits/sec   21    359 KBytes       
[  5]   7.00-8.00   sec  13.0 MBytes   109 Mbits/sec    0    378 KBytes       
[  5]   8.00-9.00   sec  12.9 MBytes   108 Mbits/sec    0    397 KBytes       
[  5]   9.00-10.00  sec  10.6 MBytes  89.2 Mbits/sec   34    319 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   140 MBytes   118 Mbits/sec  205             sender
[  5]   0.00-10.03  sec   137 MBytes   115 Mbits/sec                  receiver

iperf Done.Code language: YAML (yaml)

2. Kết nối thông qua Tailscale

Đổi địa chỉ Server thành IP của Tailscale: 100.118.121.87

iperf3 -c 100.118.121.87Code language: CSS (css)

Kết quả

Connecting to host 100.118.121.87, port 5201
[  5] local 100.127.160.108 port 47044 connected to 100.118.121.87 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  10.7 MBytes  89.5 Mbits/sec  205    221 KBytes       
[  5]   1.00-2.00   sec  7.45 MBytes  62.5 Mbits/sec    0    242 KBytes       
[  5]   2.00-3.00   sec  8.19 MBytes  68.7 Mbits/sec    0    261 KBytes       
[  5]   3.00-4.00   sec  8.94 MBytes  75.0 Mbits/sec   37    204 KBytes       
[  5]   4.00-5.00   sec  6.70 MBytes  56.2 Mbits/sec    0    239 KBytes       
[  5]   5.00-6.00   sec  8.19 MBytes  68.7 Mbits/sec    0    260 KBytes       
[  5]   6.00-7.00   sec  8.94 MBytes  75.0 Mbits/sec    0    271 KBytes       
[  5]   7.00-8.00   sec  6.70 MBytes  56.2 Mbits/sec   23    210 KBytes       
[  5]   8.00-9.00   sec  6.95 MBytes  58.3 Mbits/sec    9    163 KBytes       
[  5]   9.00-10.00  sec  5.21 MBytes  43.7 Mbits/sec    0    181 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  78.0 MBytes  65.4 Mbits/sec  274             sender
[  5]   0.00-10.03  sec  76.6 MBytes  64.1 Mbits/sec                  receiver

iperf Done.Code language: YAML (yaml)

3. Kết nối thông qua WireGuard

Mình tạm thời tắt Tailscale và kết nối hai thiết bị với nhau bằng WireGuard. Và kiểm tra lại băng thông kết nối

Connecting to host 10.8.0.1, port 5201
[  5] local 10.8.0.2 port 52718 connected to 10.8.0.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  13.8 MBytes   116 Mbits/sec  103    500 KBytes       
[  5]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec   74    389 KBytes       
[  5]   2.00-3.00   sec  12.5 MBytes   105 Mbits/sec    0    418 KBytes       
[  5]   3.00-4.00   sec  14.0 MBytes   117 Mbits/sec    0    436 KBytes       
[  5]   4.00-5.00   sec  14.0 MBytes   117 Mbits/sec    0    448 KBytes       
[  5]   5.00-6.00   sec  14.2 MBytes   119 Mbits/sec   23    339 KBytes       
[  5]   6.00-7.00   sec  11.3 MBytes  95.2 Mbits/sec   17    273 KBytes       
[  5]   7.00-8.00   sec  8.83 MBytes  74.1 Mbits/sec    0    303 KBytes       
[  5]   8.00-9.00   sec  10.3 MBytes  86.4 Mbits/sec    0    321 KBytes       
[  5]   9.00-10.00  sec  10.3 MBytes  86.4 Mbits/sec    0    341 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   124 MBytes   104 Mbits/sec  217             sender
[  5]   0.00-10.03  sec   122 MBytes   102 Mbits/sec                  receiverCode language: YAML (yaml)

4. Đánh giá

Có thể thấy rõ sự chênh lệch giữa Tailscale và WireGuard / Trực tiếp. Tốc độ kết nối của WireGuard gần bằng với kết nối trực tiếp, nhưng Tailscale chỉ đạt hơn phân nửa. Tuy vậy, tốc độ của Tailscale vẫn là rất ấn tượng, nếu so sánh với OpenVPN. Nhiêu đó là đủ đáp ứng cho nhu cầu sử dụng của mình.

Bài viết đã hết. Chúc bạn thiết lập mạng riêng ảo thành công với Tailscale.

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

2 trả lời trong “Tailscale – Thiết lập mạng riêng ảo bảo mật dễ dàng, nhanh gọn”

Cám ơn bạn đã khai sáng vụ DNS Leak, giờ mới biết đến cái này. Mình kiểm tra thì thấy đúng là dùng Tailscale bị leak DNS, mình khắc phục bằng cách kết nối thêm vô WireHole-UI. Còn Microsoft Store trên Windows mình thấy vẫn kết nối bình thường,

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *