
Trả lời nhanh: Ba lỗi khóa hay gặp: fetch control key, máy không kéo được khóa từ control server, thủ phạm số một là giờ hệ thống lệch làm TLS fail (kiểm date, bật NTP), sau đó mới đến mạng chặn; invalid key: api key does not exist, auth key đã hết hạn hoặc gõ sai, tạo key mới; duplicate node key, hậu quả clone VM/restore backup, xóa node cũ trong console rồi logout/login máy mới.
Khóa là xương sống của Tailscale: khóa máy để nhận diện node, auth key để vào mạng không cần trình duyệt, khóa control để tin máy chủ điều phối. Ba thông báo lỗi trong bài này đều là chuyện khóa trục trặc, và cái đầu tiên, fetch control key, có thủ phạm ít ai ngờ tới: đồng hồ máy chạy sai. Dân dev hay gặp cả ba khi provision VPS tự động, clone máy ảo và dựng Headscale.
fetch control key: kiểm giờ hệ thống TRƯỚC (lệch vài phút là TLS chết), rồi mới đến firewall/proxyinvalid key: api key does not exist: auth key hết hạn/sai, key mặc định sống 90 ngày là tối đaduplicate node key: hai máy chung một danh tính do clone/restore, xóa node cũ, đăng nhập lại- Dựng Headscale: fetch control key thường do server_url sai hoặc chứng chỉ HTTPS chưa chuẩn
- Provision tự động nên dùng key reusable + tag, lưu trong secret chứ đừng hardcode
fetch control key: nghi đồng hồ trước, nghi mạng sau
Máy nối control server qua TLS; chứng chỉ TLS có hiệu lực theo thời gian, đồng hồ máy lệch nhiều là bắt tay thất bại và Tailscale báo đúng câu the last login error was fetch control key. Ca này dày đặc trên: VM vừa restore từ snapshot (đồng hồ đứng ở quá khứ), máy ảo tắt lâu mới bật, thiết bị nhúng không pin CMOS. Kiểm và sửa:
date # gio co dung khong (ke ca mui gio)?
sudo timedatectl set-ntp true
timedatectl status # NTP synchronized: yes
sudo tailscale upGiờ chuẩn rồi mà vẫn lỗi: mạng đang chặn đường ra control server, wifi công ty có proxy chặn, DNS hỏng. Thử mạng khác (phát 4G) để cô lập, và chạy tailscale netcheck theo bài chẩn đoán.
invalid key: api key does not exist, vòng đời auth key
Lỗi này gần như luôn là auth key có vấn đề: hết hạn (key sống tối đa 90 ngày, mặc định ngắn hơn), một lần dùng (key không reusable đã bị máy khác xài), hoặc dán thiếu ký tự. Xử: vào admin console → Settings → Keys, tạo key mới, chọn Reusable nếu dùng cho nhiều máy, gắn tag cho server. Script provision (cloud-init, Ansible, Docker) là nơi lỗi này hay nằm im chờ nổ: key hardcode từ 3 tháng trước lặng lẽ hết hạn, đợt deploy sau toàn máy câm. Quy tắc: key nằm trong secret manager, đặt lịch nhắc xoay key trước hạn, và log của script phải in rõ lỗi Tailscale thay vì nuốt.
duplicate node key: hậu quả của clone máy
Mỗi node có khóa danh tính riêng nằm trong /var/lib/tailscale/. Clone VM, nhân template, hay restore backup nguyên đĩa sang máy thứ hai là hai máy cùng vác một danh tính, control server thấy tiếng nói từ hai nơi và báo duplicate node key, hai máy thay nhau văng. Xử đúng: trên máy mới sudo tailscale logout, xóa node lỗi trong admin console, rồi sudo tailscale up đăng nhập như máy mới tinh. Phòng từ gốc khi làm template VM: xóa thư mục state (/var/lib/tailscale) trước khi đóng template, hoặc cài Tailscale ở bước first-boot, đừng nướng sẵn danh tính vào ảnh.
Ca Headscale: fetch control key có nghĩa khác
Tự host control server bằng Headscale trên VPS thì fetch control key trỏ về phía bạn: client không nói chuyện được với server của bạn. Danh sách kiểm: --login-server gõ đúng URL (https, đúng tên miền)? Chứng chỉ HTTPS hợp lệ (Caddy đã xin cert thành công, curl -v https://hs.ten-mien.vn từ máy ngoài)? Dịch vụ headscale sống (systemctl status headscale)? Port 443 mở? Đổi cấu hình server_url sau khi đã có client thì các client cũ phải logout/login lại.
Bảng tra nhanh: khóa nào, lỗi nào, thuốc nào
| Thông báo | Khóa liên quan | Thuốc |
|---|---|---|
| fetch control key | Khóa control server | Sửa giờ hệ thống → thử mạng khác → (Headscale) kiểm server |
| invalid key: api key does not exist | Auth key | Tạo key mới reusable + tag, cập nhật secret |
| duplicate node key | Khóa danh tính node | Logout máy mới, xóa node cũ trong console, up lại |
| key expired / 403 | Khóa máy hết hạn | Đăng nhập lại; server bật Disable key expiry, xem bài lỗi 403 |
| 401 khi gọi REST API | API key | Tạo API key mới (hạn tối đa 90 ngày) |
Kiểm giờ và chứng chỉ trong một phút
Vì lỗi fetch control key phần lớn do giờ lệch, đây là bộ lệnh kiểm đủ cho ba hệ:
# Linux timedatectl status # NTP service: active, System clock synchronized: yes sudo timedatectl set-ntp true sudo systemctl restart systemd-timesyncd # Windows (PowerShell quyen quan tri) w32tm /query /status w32tm /resync # Kiem doc lap: gio may so voi gio that curl -sI https://controlplane.tailscale.com | grep -i "^date:"
Lệnh cuối lấy giờ từ máy chủ Tailscale trả về trong tiêu đề phản hồi. So với date trên máy: lệch quá vài phút là đủ làm bắt tay bảo mật thất bại. Đây là cách kiểm nhanh và không cần công cụ gì thêm.
Máy ảo và mẫu máy: chặn lỗi trùng danh tính từ gốc
Trước khi đóng gói một mẫu máy ảo hoặc tạo ảnh đĩa để nhân bản:
sudo tailscale logout sudo systemctl stop tailscaled sudo rm -rf /var/lib/tailscale/* sudo systemctl disable tailscaled # de lan dau boot moi tu dang nhap # Sau do moi dong goi mau may
Với cloud-init, đưa việc đưa máy vào mạng xuống bước khởi động lần đầu thay vì nướng sẵn vào ảnh:
#cloud-config
runcmd:
- curl -fsSL https://tailscale.com/install.sh | sh
- tailscale up --auth-key=${TS_AUTHKEY} --advertise-tags=tag:server --hostname=$(hostname)
Khóa xác thực đặt trong nơi lưu bí mật của công cụ triển khai, không viết thẳng vào tệp cấu hình nằm trong kho mã nguồn. Đây là lỗi rò rỉ hay gặp nhất khi tự động hóa.
Bảng tra ba loại khóa, đừng nhầm lẫn
| Loại khóa | Dùng để | Hạn dùng | Lỗi khi hỏng |
|---|---|---|---|
| Khóa máy (node key) | Nhận diện thiết bị trong mạng | 180 ngày mặc định, máy gắn thẻ thì không hết hạn | 403 user is not logged in |
| Khóa xác thực (auth key) | Đưa máy vào mạng không cần trình duyệt | Tối đa 90 ngày, đặt ngắn hơn được | invalid key: api key does not exist |
| Khóa gọi API (API access token) | Kịch bản gọi giao diện lập trình | Tối đa 90 ngày | Lỗi 401 trong kịch bản |
| Khóa control | Máy tin máy chủ điều phối | Không do bạn quản lý | fetch control key |
Ba loại đầu bạn tự tạo và tự xoay. Nguyên tắc vận hành: đặt lịch nhắc xoay khóa trước hạn 7 ngày, và trong kịch bản triển khai luôn in ra thông báo lỗi gốc của Tailscale thay vì nuốt lỗi. Rất nhiều ca "đợt deploy sau toàn máy câm" chỉ đơn giản là khóa hết hạn mà nhật ký không nói gì.
Nếu tự dựng máy chủ điều phối
Với Headscale, lỗi fetch control key trỏ về phía bạn. Kiểm theo thứ tự:
curl -v https://hs.congty.vn/health # tu MAY NGOAI, xem chung chi va phan hoi systemctl status headscale # dich vu con song khong ss -tlnp | grep -E ':(443|8080)' # co tien trinh nghe khong openssl s_client -connect hs.congty.vn:443 -servername hs.congty.vn | head -20
Lệnh cuối in ngày hết hạn chứng chỉ và chuỗi tin cậy. Chứng chỉ tự ký hoặc hết hạn là máy khách từ chối kết nối và báo đúng lỗi này. Sau khi đổi địa chỉ máy chủ trong cấu hình, mọi máy khách cũ phải đăng xuất rồi đăng nhập lại.
Câu hỏi thường gặp
Vì sao giờ hệ thống lệch lại làm hỏng Tailscale?
Kết nối đến control server chạy trên TLS, mà chứng chỉ TLS có mốc hiệu lực thời gian. Đồng hồ máy lệch xa là chứng chỉ bị coi là chưa/hết hiệu lực, bắt tay thất bại, Tailscale chỉ thấy hậu quả là không kéo được khóa control. Bật NTP là hết vĩnh viễn.
Auth key nên đặt hạn bao lâu?
Ngắn nhất đủ dùng: key một lần cho một máy đặt hạn vài giờ; key reusable cho provision tự động đặt theo chu kỳ deploy và xoay định kỳ. Node vào bằng key gắn tag không hết hạn theo user, hợp cho server.
Clone VPS từ snapshot có bị duplicate node key không?
Có nếu snapshot chụp sau khi cài Tailscale và bạn chạy cả máy gốc lẫn máy clone. Restore đè lên chính máy cũ (thay thế) thì không sao. Quy tắc: một danh tính chỉ sống trên một máy tại một thời điểm.
Đổi từ Tailscale chính chủ sang Headscale có phải làm gì với khóa?
Có, logout khỏi control server cũ rồi up với --login-server mới; máy nhận danh tính mới trên hệ mới. Hai control server không chia sẻ được node.
Bài viết liên quan
- Headscale: tự host control server Tailscale trên VPS
- Sửa lỗi Tailscale is stopped và error 503 no backend
- Tailscale trên Ubuntu toàn tập: headless, autostart, DNS
- Cài Windows 11 lên VPS thuê: key Retail không dùng được, đây là các đường hợp lệ
- Proxy cho SEO SERP tracking 2026: multi-country
- EmDash là gì? Hướng đi mới của Cloudflare cho một CMS kiểu “hậu WordPress”
- Coolify vs CapRover vs Dokku: chọn self-host PaaS nào?
- 99.99% Uptime Guarantee hay cam kết uptime 99.99% là gì?
- ImmuDB vs PostgreSQL: chọn DB nào cho audit log startup?


