삭제한 ZeroTier 구성원이 다시 나타납니다: 먼저 권한을 취소하세요
온라인 상태인 기기는 레코드가 제거되는 즉시 다시 참여를 요청할 수 있습니다. 먼저 권한을 취소하고, 삭제는 목록 정리로 취급하세요.
구성원을 삭제하고 페이지를 닫았는데 하루 뒤 같은 기기가 다시 나타납니다. 이것은 콘솔의 버그가 아닙니다. 기기가 온라인인 채로 계속 참여를 요청하는 동안 레코드를 삭제하면 이렇게 됩니다.
두 작업은 나란히 존재하며 서로 다른 일을 합니다. 하나는 접근을 결정하고, 다른 하나는 목록만 정리합니다.
다시 나타난 레코드부터 시작하세요
네트워크를 열고 돌아온 항목을 보세요. 그 node ID, 마지막 주소, 다시 나타난 시각을 기록합니다. 폐기하려던 기기와 비교하세요. 표시 이름은 누군가 입력한 것이고, 주소는 다음 참여 때 바뀔 수 있습니다.
node ID가 안정적인 식별자입니다. 네트워크 ID는 네트워크에 이름을 붙입니다, 그래서 어느 목록을 읽고 있는지는 알려 주지만 그 안에 어느 기기가 있는지는 알려 주지 않습니다. 둘 다 기록한 뒤 node ID를 폐기하려던 기기와 맞춰 보세요.
이 비교를 잘못하면 작동하는 기기를 제거하고 원하지 않는 기기는 계속 요청합니다. 그러면 목록은 하루 동안 올바르게 보입니다. 아무도 알아차리지 못할 만큼 충분히 길고, 바로 그것이 문제입니다.
삭제하기 전에 취소하세요
먼저 컨트롤러가 지원하는 워크플로로 권한 상태를 바꿉니다. 그 시점부터 참여 시도는 접근을 조용히 복원하는 대신 미승인으로 표시되고, 요청은 보이지 않는 것이 아니라 보이게 됩니다.
삭제는 그다음에 오며, 결코 그 대신이 아닙니다. 승인된 구성원의 레코드를 지우면 취소할 것이 남지 않습니다. 기기는 다시 요청하고 컨트롤러는 이를 새것으로 취급합니다.
아직 제어하는 기기라면 네트워크를 떠나는 것이 폐기의 유용한 일부입니다. 분실한 기기에 대한 관리자의 결정을 대신하지는 않습니다. 더 이상 제어하지 않는 클라이언트는 무슨 말을 들었든 무시할 수 있습니다.
두 작업이 있는 곳
호스팅 컨트롤러에서는 구성원 목록이 두 작업을 모두 제공하고 구분할 수 있을 만큼 분명히 표시합니다. 직접 호스팅하는 컨트롤러에서는 같은 구분이 API와 로컬 구성에 나타나며, 보통 그곳에서 혼란이 시작됩니다.
# 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"
구성원이 실제로 미승인 상태였는지 보여 주기에는 이 두 호출로 충분합니다. authorized: true 값으로 계속 돌아오는 레코드는 취소된 적이 없으며, 그저 삭제되었을 뿐입니다.
목록이 아니라 리소스에서 확인하세요
정돈된 구성원 목록은 접근 검사가 아닙니다. 기기가 이전에 사용한 리소스를 그 기기에서, 또는 옛 주소를 가진 기기에서 시도하고 연결이 실패하는지 확인하세요. 그다음 승인된 대체 기기가 여전히 작동하는지 확인합니다.
그 테스트에 경로와 서비스 권한도 포함하세요. ZeroTier는 구성원을 승인하고도 관리되는 경로에 도달하지 못하게 남겨 둘 수 있습니다. 애플리케이션 권한도 같은 방식으로 실패할 수 있습니다. 구성원 목록에서는 둘 다 똑같아 보입니다.
zerotier-cli listnetworks
ip route show | grep zt
ping -c 3 10.144.0.5
직접 호스팅하는 컨트롤러라면 그 정체성과 구성의 일관된 백업을 유지하세요. 이전 상태로 되돌리는 복원은 예전 권한도 함께 되살릴 수 있고, 구성원 목록은 폐기 전과 똑같이 보일 것입니다.
옛 정체성이 아무것에도 도달하지 못하고 레코드가 사라졌을 때 폐기가 끝납니다. 이 순서대로 하면 구성원은 다시 나타나지 않습니다.