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.
Mục Lục
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.
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 tailscale
Code 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 | sh
Code 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 tailscaled
Code language: Bash (bash)
Kết nối thiết bị vào mạng riêng ảo
sudo tailscale up
Code 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/7b6e22b9f748
Code 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 up
Code language: Nginx (nginx)
Kết quả trả về
100.108.55.94
fd7a:115c:a1e0:ab12:4843:cd96:626c:375e
Code language: CSS (css)
Mình thử ping đến 1 thiết bị khác trong mạng riêng ảo
ping 100.118.121.87
Code 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 ms
Code 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 -s
Code 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.vn
Code 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.87
Code 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 receiver
Code 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.
Khi dùng tailscale thì máy hay bị leak DNS, 2 là các dịch vụ của Microsoft bị chặn, vd như microsoft store không connect được. Nếu bạn có cách khắc phụ thì xin chia sẽ.
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,
Bên cạnh tailscale còn có headscale, anh Thuận hôm nào làm hướng dẫn về headscale nữa nhé!