ZeroTier에서 승인되었지만 주소가 없나요? 별개의 두 가지 설정
구성원 승인과 주소 부여는 별개의 설정입니다. IP를 지어내기 전에 풀, 할당 모드, 클라이언트가 적용한 상태를 읽어 보세요.
ZeroTier는 구성원을 OK로 표시하고 네트워크도 가입되어 있는데 ping할 주소가 없습니다. 이 조합은 버그처럼 느껴지지만 대개는 설정이 둘로 나뉜 탓입니다. 구성원 승인은 하나의 스위치이고 주소 부여는 또 다른 스위치입니다. 풀이나 할당 모드가 설정되지 않았다면 네트워크는 기기를 받아들이고도 아무것도 할당하지 않습니다.
둘 중 하나를 바꾸기 전에 양쪽을 모두 읽어 보세요. 답은 두 곳에 나타나며, 그중 컨트롤러에 있는 것은 하나뿐입니다.
승인과 할당은 서로 다른 스위치
승인은 이 노드가 네트워크에 참여해도 되는지를 답합니다. 주소 할당은 참여한 뒤 네트워크가 무엇을 주는지를 답하며, 그 답은 주소 풀과 할당 모드에서 나옵니다. 어느 설정도 다른 쪽을 함축하지 않습니다. 하나는 허가이고 다른 하나는 배분입니다.
컨트롤러 설정에는 보통 관리 경로, 주소 범위, 자동 할당 사용 여부를 정하는 모드가 들어 있습니다. 다른 환경에서 네트워크 ID를 복사하면 구성원 자격은 가져오지만 그 설정은 하나도 따라오지 않습니다.
그래서 기기가 구성원 목록에서는 정상으로 보이는데 할당된 주소 열은 비어 있는 경우가 생깁니다. 컨트롤러는 받아들였지만 줄 것이 없는 것입니다. 두 진술 모두 동시에 참입니다.
| Layer | What it decides | Where it is configured |
|---|---|---|
| Membership | Whether the node may join | Member authorization on the network |
| Pool | Which addresses exist to hand out | Network address range |
| Assignment mode | Whether they are handed out automatically | Network v4/v6 assignment settings |
구성원의 실제 상태 읽기
컨트롤러의 의도가 아니라 클라이언트가 실제로 받은 것을 물어보세요. 단순 목록은 상태와 주소 열을 보여 주고, JSON 형식은 클라이언트가 적용한 네트워크 설정을 관리 주소와 경로까지 포함해 보여 줍니다.
zerotier-cli listnetworks
zerotier-cli -j listnetworks | jq '.networks[] | {nwid, status, assignedAddresses}'
같은 네트워크 ID에 대한 두 출력을 비교하세요. 운영체제 자체 목록에 나타나는 물리 어댑터가 아닙니다. 빈 주소 집합으로 OK를 보고하는 행은 연결 장애가 아니라 할당 공백을 확인해 줍니다. 잘못된 행을 읽는 것이 이 실수의 나머지 절반입니다.
ACCESS_DENIED 상태는 승인을 가리킵니다, 그리고 그것은 다른 수리입니다. 명령이 로컬 인증 토큰을 아예 읽지 못한다면 문제는 컨트롤러의 거부가 아니라 로컬 권한이며, 고칠 곳은 지금 앉아 있는 기기입니다.
클라이언트가 컨트롤러가 보낸 것을 무시할 때
클라이언트에는 관리 설정을 적용할지 정하는 자체 설정이 있습니다. 관리 주소, 관리 경로 또는 기본 경로 처리를 끄는 프로필은 네트워크가 보낸 것을 버리며, 구성원 목록은 컨트롤러 쪽에서 여전히 올바르게 보입니다.
그 플래그는 로컬 노드에만 영향을 줍니다. 바꿔도 다른 구성원이 받는 것은 달라지지 않고, 한 번도 정의되지 않은 풀도 고쳐지지 않습니다.
따라서 진단은 두 갈래입니다. 컨트롤러에 줄 주소가 없거나, 클라이언트가 받은 주소를 거부한 경우입니다. 둘은 서로 다른 기기에서 서로 다른 수리로 이어집니다. JSON 출력은 둘을 구분합니다. 주소가 네트워크 설정에 없거나, 있지만 클라이언트의 적용 상태에 빠져 있기 때문입니다.
주소를 지어내는 대신 고칠 것
임의의 고정 주소를 입력하는 것은 유혹적인 세 번째 선택이며 최악입니다. 무작위 주소는 다른 노드와 충돌할 수 있고, 네트워크가 전파하는 경로 밖에 있을 수 있으며, 방화벽 규칙이 다르게 다루는 범위에 들어갈 수 있습니다. 또한 다음에 네트워크를 보는 사람에게서 빠진 풀을 가려 버립니다. 대신 할당을 고치고, 컨트롤러와 클라이언트가 결과에 합의하게 하세요.
관리자에게 네트워크가 무엇을 주어야 하는지 물어보고, 풀이 의도한 범위를 덮는지, 할당 모드가 켜져 있는지 확인하세요. 변경 후에는 다시 가입하세요. 클라이언트가 스스로 곧바로 새 설정에 도달하리라 기대하지 마세요.
주소가 나타나면 정말로 필요했던 것을 시험하세요. 피어, 서비스, 또는 게이트웨이 뒤의 서브넷입니다. 구성원 뒤의 LAN에 닿으려면 구성원 자격을 넘는 라우팅과 전달이 필요하고, 일반 인터넷 접속에는 출구 노드가 필요합니다. 즉 동작하는 주소는 그 시험의 끝이 아니라 시작입니다.