Nodekey 삭제 후 노드 실행

안녕하세요.

cn-pn을 구성하여 테스트시, pn에서 생성한 노드키를 /data/폴더에서 삭제하고 kspnd restart해도 피어를맺고 정상적으로 블록싱킹을 하는데, 이 피어링은 static-nodes.json에서 정보를 불러와 피어를 맺기때문에 정상적을 동작하는 것인가요?

예상 시나리오라면 data폴더에서 노드키를 삭제하고 모듈을 재시작 했을 때 안될꺼라 생각했는데 잘 동작해서, 정확히 노드키가 없을 경우 동작에대한 프로세스가 어떤지 궁금합니다.
관련해서 답변 부탁 드려도 될까용?

안녕하세요.
Klaytn 개발팀의 Aidan입니다.

말씀주신 시나리오에서 NODEKEY 없을 때의 동작과 static-nodes.json을 사용하는 부분을 나누어 적겠습니다.

NODEKEY가 없이 Klaytn 노드가 실행되는 경우에는 새로운 NODEKEY를 임의로 생성합니다.
노드 실행 후에 NODEKEY 경로(default path: ${DATA_DIR}/NODEKEY)를 확인해보시면 새로운 NODEKEY가 생성된 것을 확인하실 수 있습니다. NODEKEY가 변경되었으므로 kni의 값도 변경될 것입니다. 말씀주신 시나리오에서는 PN의 kni가 변경되었을 것입니다.

static-node.json은 해당 노드가 연결하고자하는 노드의 kni 값을 저장하고 있습니다. 노드가 시작될 때, 파일에 저장된 노드로 연결을 시도합니다. 위 시나리오에서는 CN의 kni 값이 저장되어 있을 것이고, PN 입장에서는 연결하고자 하는 CN 노드의 정보가 변경되지 않았기에 정상적으로 연결에 성공했을 것입니다.

위 내용으로 인해서 테스트하신 시나리오 결과는 정상적인 상황이라고 판단됩니다.
혹시 답변이 충분하지 않으시거나 추가적인 의문점이 있으시면 댓글 남겨주세요 ㅎㅎ

친절한답변 감사합니다!
동일한 서버를 올리고 nodekey 없이 static-nodes.json만 data폴더안에 있으면 추가로 생성하는 PN서버는 정상적인 동작이 가능하다고 볼 수 있을까요?
static-nodes.json 정보가 유출되었을 경우 해당 json만으로 서버구동이 가능하며, 이러한 문제를 막기위해선 방화벽 정책으로만 제한할수밖에 없을지 궁금합니다

NODEKEY 없이 실행하여도 NODEKEY를 생성해서 정상적으로 동작합니다. 다만, (기존 NODEKEY를 삭제했다면) 기존에 그 노드와는 kni 값이 달라지므로 다른 Klaytn 노드에서는 기존의 것과 별개의 노드라고 판단할 것입니다. 다시 한번 말씀드리지만 NODEKEY 값은 "해당 노드의 kni 값"과 연관성이 있으며, static-nodes.json에 입력된 값은 "해당 노드가 연결하고자 하는 다른 노드의 kni 값"입니다.

만약 CN 등 Klaytn 노드에 외부 노드가 연결하려는 것을 막기 위해서는 방화벽 설정이 가장 권장되어 집니다. 그 외에도 노드 실행 시에 --netrestrict {value} 옵션(Restricts network communication to the given IP network (CIDR masks))을 사용하면 해당 IP 대역에서만 연결을 허용할 수 있습니다. 물론, 방화벽 설정하는 것이 더 근본적으로 접근을 차단하는 방법입니다.

1 Like