노드 ID인가 네트워크 ID인가: 무엇이 ZeroTier 네트워크에 참여하는가
노드 ID는 장치를 가리키고 네트워크 ID는 가상 네트워크를 가리킵니다. 참여에는 네트워크가 필요하고, 구성원 승인에는 장치의 정체성이 필요합니다.
모든 ZeroTier 대화에는 두 개의 식별자가 등장하고, 채팅 창에서는 혼동할 만큼 비슷하게 보입니다. 노드 ID는 장치를 가리킵니다. 네트워크 ID는 그 장치가 참여하려는 가상 네트워크를 가리킵니다. 참여에는 두 번째가 쓰이고, 구성원 승인에는 첫 번째가 쓰입니다.
두 식별자, 두 가지 일
노드 정체성은 서비스가 기기에서 처음 실행될 때 만들어지며, 열 자리 십육진법 주소입니다. 정체성 파일을 지우기 전까지 그 설치와 함께 남기 때문에, 다시 설치하면 아무도 승인하지 않은 새 구성원이 생길 수 있습니다. 네트워크 ID는 열여섯 자리 십육진법이고, 기기가 아니라 가상 네트워크를 식별합니다. 네트워크를 소유한 컨트롤러 자체가 노드이므로, 네트워크 ID의 처음 열 자리는 컨트롤러 주소와 일치합니다.
두 값 모두 비밀이 아니며 서로를 대신하지도 않습니다. 네트워크 ID를 모든 참가자와 공유하는 것은 정상이지만, 노드 ID를 공유하는 것은 컨트롤러에 장치 하나를 알리는 일입니다.
값을 보고하는 명령에서 각 값을 읽기
한 명령은 로컬 서비스의 정체성을 보고하고, 다른 명령은 참여한 네트워크를 보고합니다. 잘못된 명령에 값을 물으면 결국 구성원 목록에 네트워크 ID를 붙여 넣게 됩니다.
zerotier-cli info zerotier-cli status zerotier-cli listnetworks
첫 번째는 노드 주소와 서비스가 온라인인지 출력합니다. 두 번째는 버전과 포트 정보를 더합니다. 세 번째는 참여한 네트워크를 ID, 상태, 할당된 주소와 함께 나열하며, 네트워크 ID가 필요할 때 사용해야 하는 유일한 명령입니다.
네트워크로 참여하고, 노드로 승인하기
참여 명령은 컨트롤러를 운영하는 사람이 제공한 네트워크 ID를 받습니다. 명령이 긍정적인 응답을 주는 것은 요청이 전송되었다는 뜻이며, 사설 네트워크에서 구성원 자격이 부여되었다는 뜻은 아닙니다.
참여한 뒤 관리자는 해당 네트워크의 구성원 목록에서 장치를 노드 ID로 승인합니다. 네트워크 ID를 다시 필요로 하지 않으며, 정체성이 곧 주소이므로 호스트 이름으로 장치를 승인할 수도 없습니다. 관리자라면 구성원 목록을 읽고 요청과 노드 주소를 맞춰 보십시오. 네트워크만 적고 노드 주소가 없는 요청은 처리할 수 없습니다.
공통 접두사에는 이유가 있다
네트워크 ID가 컨트롤러의 노드 주소로 시작하므로 같은 열 자리가 두 곳에 나타납니다. 이는 라우팅 편의일 뿐, 두 값이 서로 교환 가능하다는 암시가 아닙니다.
컨트롤러의 정체성이 표시 이름보다 중요한 이유도 여기에 있습니다. 새 정체성으로 컨트롤러를 복원하면 다른 주소 공간이 생기므로, 이전 정체성 아래에서 정의한 네트워크는 이름을 다시 써도 같은 네트워크가 아닙니다.
컨트롤러의 정체성을 구성과 함께 백업에 보관하십시오. 그 정체성을 다시 만들 수 있는 이름표로 취급하면 복원이 재설계가 됩니다.
결과를 확인하십시오. 명령 출력이 아니라
성공적인 참여는 확인의 시작이지 끝이 아닙니다. 그다음 네트워크 항목을 보고 상태, 할당된 주소, 네트워크 ID 세 필드를 읽으십시오.
zerotier-cli listnetworks -j ip -br addr show | grep zt ping -c 2 10.147.20.5
첫 번째 명령은 같은 목록을 분석 가능한 형태로 출력하므로 관리자가 기대한 것과 비교하기 쉽습니다. 두 번째는 인터페이스가 주소를 받았음을 확인하고, 세 번째는 로컬 상태가 아니라 네트워크의 상대를 시험합니다.
항목이 ACCESS_DENIED라고 하면 노드 ID가 승인되지 않은 것입니다. NOT_FOUND라면 네트워크 ID가 잘못된 것입니다. 주소 없이 OK라면 다음 질문은 컨트롤러의 주소 할당이며, 이 세 가지 중 어느 것도 다시 참여해서는 해결되지 않습니다.