Thành viên ZeroTier đã xóa quay lại: hãy thu hồi ủy quyền trước
Một thiết bị đang trực tuyến có thể yêu cầu tham gia lại ngay khi bản ghi của nó bị gỡ. Hãy thu hồi ủy quyền, rồi coi việc xóa là dọn dẹp danh sách.
Bạn xóa thành viên, đóng trang, và một ngày sau chính thiết bị đó quay lại. Đây không phải lỗi của bảng điều khiển. Đó là điều xảy ra khi một bản ghi bị xóa trong lúc thiết bị vẫn trực tuyến và vẫn yêu cầu tham gia.
Hai thao tác nằm cạnh nhau và làm việc khác nhau. Một thao tác quyết định quyền truy cập, thao tác kia chỉ dọn dẹp danh sách.
Bắt đầu từ bản ghi quay lại
Mở mạng và xem mục đã quay lại. Ghi lại node ID, địa chỉ cuối cùng và thời điểm nó xuất hiện lại. So sánh với thiết bị bạn định cho ngừng sử dụng. Tên hiển thị là thứ ai đó đã nhập, còn địa chỉ có thể thay đổi ở lần tham gia tiếp theo.
Node ID là định danh ổn định. ID mạng đặt tên cho mạng, nên nó cho biết bạn đang đọc danh sách nào và không cho biết thiết bị nào nằm trong đó. Ghi lại cả hai, rồi đối chiếu node ID với máy bạn định cho ngừng sử dụng.
Nếu so sánh sai, bạn sẽ gỡ một máy đang hoạt động trong khi thiết bị không mong muốn vẫn tiếp tục yêu cầu. Danh sách khi đó trông đúng trong một ngày. Đủ lâu để không ai nhận ra, và đó chính là vấn đề.
Thu hồi trước khi xóa
Trước tiên hãy đổi trạng thái ủy quyền qua quy trình mà bộ điều khiển hỗ trợ. Từ thời điểm đó, một lần thử tham gia hiện ra là chưa được ủy quyền thay vì lặng lẽ khôi phục quyền truy cập, và yêu cầu trở nên hiển thị thay vì vô hình.
Việc xóa đến sau, không bao giờ thay thế. Gỡ bản ghi của một thành viên đã được ủy quyền không để lại gì để thu hồi. Thiết bị hỏi lại, và bộ điều khiển coi nó là mới.
Với một máy bạn vẫn kiểm soát, rời khỏi mạng là phần hữu ích của việc ngừng sử dụng. Nó không thay thế quyết định của quản trị viên về một thiết bị bị mất. Một máy khách bạn không còn kiểm soát có thể bỏ qua bất cứ điều gì đã được nói với nó.
Hai thao tác nằm ở đâu
Trên bộ điều khiển được lưu trữ, danh sách thành viên cung cấp cả hai hành động và gắn nhãn đủ rõ để phân biệt. Trên bộ điều khiển tự lưu trữ, sự phân biệt tương tự xuất hiện trong API và trong cấu hình cục bộ, và sự nhầm lẫn thường bắt đầu từ đó.
# list members with authorization state
curl -s -H "X-ZT1-Auth: $TOKEN" \
"http://127.0.0.1:9993/controller/network/$NETWORK_ID/member" | jq 'to_entries[] | {id: .key, authorized: .value.authorized}'
# deauthorize one member by node id, then confirm
curl -s -X POST -H "X-ZT1-Auth: $TOKEN" -d '{"authorized": false}' \
"http://127.0.0.1:9993/controller/network/$NETWORK_ID/member/$NODE_ID"
Hai lệnh gọi đó đủ để cho thấy thành viên có từng thực sự chưa được ủy quyền hay không. Bản ghi cứ quay lại với authorized: true chưa bao giờ bị thu hồi; nó chỉ bị xóa.
Xác nhận từ tài nguyên, không phải từ danh sách
Một danh sách thành viên gọn gàng không phải là kiểm tra truy cập. Hãy thử tài nguyên mà thiết bị từng dùng, từ chính thiết bị đó hoặc từ một máy giữ địa chỉ cũ của nó, và xác nhận kết nối thất bại. Sau đó xác nhận một thiết bị thay thế đã được phê duyệt vẫn hoạt động.
Đưa cả tuyến đường và quyền dịch vụ vào bài kiểm tra đó. ZeroTier có thể ủy quyền cho một thành viên và vẫn để nó không thể tới một tuyến được quản lý. Quyền của ứng dụng cũng có thể thất bại theo cách tương tự. Cả hai trông giống hệt nhau từ danh sách thành viên.
zerotier-cli listnetworks
ip route show | grep zt
ping -c 3 10.144.0.5
Với bộ điều khiển tự lưu trữ, hãy giữ bản sao lưu nhất quán về danh tính và cấu hình của nó. Một lần khôi phục quay về trạng thái trước đó có thể mang theo ủy quyền cũ, và danh sách thành viên sẽ trông đúng như trước khi ngừng sử dụng.
Việc ngừng sử dụng hoàn tất khi danh tính cũ không thể tới được gì và bản ghi đã biến mất. Làm theo thứ tự đó thì thành viên sẽ thôi quay lại.