Lỗi fetch control key và invalid key trong Tailscale

Chia sẻ bài viết

Mục lục
Lỗi fetch control key và invalid key trong Tailscale

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.

Tóm tắt nhanh
  • 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/proxy
  • invalid 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 đa
  • duplicate 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 up

Giờ 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áoKhóa liên quanThuốc
fetch control keyKhóa control serverSửa giờ hệ thống → thử mạng khác → (Headscale) kiểm server
invalid key: api key does not existAuth keyTạo key mới reusable + tag, cập nhật secret
duplicate node keyKhóa danh tính nodeLogout máy mới, xóa node cũ trong console, up lại
key expired / 403Khó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 APIAPI keyTạ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óaDùng đểHạn dùngLỗi khi hỏng
Khóa máy (node key)Nhận diện thiết bị trong mạng180 ngày mặc định, máy gắn thẻ thì không hết hạn403 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ệtTối đa 90 ngày, đặt ngắn hơn đượcinvalid 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ìnhTối đa 90 ngàyLỗi 401 trong kịch bản
Khóa controlMáy tin máy chủ điều phốiKhô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.

Hạ tầng VPS tại Việt Nam của TND
Cloud VPS linh hoạt và VPS NVMe xung cao, IP công cộng riêng, đặt tại Việt Nam
Lỗi khóa lộ ra nhiều nhất lúc provision hàng loạt, và biến mất khi hạ tầng chuẩn: VPS mới bàn giao trong 5 phút với đồng hồ NTP chuẩn sẵn, cloud-init nhận auth key là vào mạng ngay. Cloud VPS TND đặt tại Việt Nam; chạy Headscale hay dịch vụ nặng I/O có dòng VPS NVMe.
Xem bảng giá thuê VPS giá rẻ tại Việt NamCần I/O mạnh? Xem VPS NVMe

Bài viết liên quan