아이덴티티가 실행 중인 인터페이스에서 사라지고 변경은 끝난 것처럼 보입니다. 서비스가 다시 시작되면 그것은 돌아옵니다. WireGuard가 명령을 무시한 것처럼 읽히지만, 실제로 일어난 일은 더 단순합니다. 부팅 시의 설정에 그 peer가 아직 들어 있는 것입니다.

그 목록을 유지하는 상태는 둘입니다. 취소가 진짜가 되는 것은 둘 다 그것을 잃을 때뿐입니다.

wg set이 실제로 바꾸는 것

명령 wg set wg0 peer <public-key> remove은 커널 안의 실행 중 인터페이스를 편집합니다. 디스크에는 아무것도 쓰지 않습니다. 설정 파일, NetworkManager 프로파일, 라우터의 저장된 상태는 그대로입니다. 이것은 설계이며 결함이 아닙니다.

이 분리는 의도된 것입니다. 도구는 인터페이스의 주인이 누구인지 알 방법이 없기 때문입니다. 실행 중 명령은 다른 무언가가 관리하는 인터페이스에 대해서도 안전해야 합니다. 영구 사본이 어디에 있는지 추측할 수 없습니다. 결과는 간단합니다. 실행 중 삭제는 구조상 일시적입니다.

그래서 peer는 다음 재시작에 돌아오고, 원래의 허용된 프리픽스와 함께 돌아옵니다. 그것을 지나는 경로도 모두 다시 만들어집니다. 취소했다고 여긴 아이덴티티가 다시 불러온 뒤 예전 목적지에 도달할 수 있는 것입니다. 실행 중 출력에는 아무 경고도 없었습니다.

파일을 편집하기 전에 기록하는 쪽을 찾으십시오

인터페이스에는 주인이 있습니다. 파일을 읽는 wg-quick, 프로파일을 적용하는 NetworkManager, 라우터 자체의 인터페이스 설정, 시작할 때 인터페이스를 다시 만드는 컨테이너 진입점일 수 있습니다. 주인이 절대 읽지 않는 파일을 편집하면 영구적인 변화가 전혀 생기지 않습니다.

실행 중인 인터페이스에서 시작해 공개 키를 식별하십시오. 이름과 주소는 키 자체보다 약한 식별자이기 때문입니다. 그다음 그 목록을 주인이 실제로 읽는 저장된 설정과 비교하십시오.

wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard

실행 중인 인터페이스의 peer 목록과 파일 내용이 서로 다르다면 그것이 진단의 전부입니다. 부팅 시에는 저장된 설정이 이기고 실행 중 상태는 집니다. 둘 중 하나를 바꾸기 전에 비교하십시오.

SaveConfig의 함정

wg-quick에는 파일을 손으로 편집하는 사람을 잡는 꼬임이 하나 있습니다. SaveConfig가 켜져 있으면 문서화된 종료 동작이 현재 실행 중 상태를 설정 파일 위에 다시 씁니다.

이것은 영속성의 방향을 뒤집습니다. 파일에서 peer를 지우고 나면 서비스가 멈춥니다. 실행 중 상태가 편집 위에 다시 쓰여 방금 지운 peer를 복원합니다.

따라서 순서가 중요합니다. 인터페이스가 내려간 상태에서 파일을 편집하거나, 편집 전에 SaveConfig를 끄고, 그다음 인터페이스를 다시 올려 무엇이 적재되었는지 확인하십시오. 인터페이스가 올라간 채로 하는 손 편집은 종료 시 쓰기와의 경쟁입니다.

두 상태를 모두 바꾸고 다시 불러오십시오

실행 중에는 키로 peer를 제거합니다. 저장된 설정에서는 같은 블록을 주인이 지원하는 작업으로 제거하십시오. 주변을 편집해서 처리하는 것이 아닙니다.

그다음 peer가 무엇을 실어 날랐는지 검토하십시오. 취소된 아이덴티티에 속했던 라우팅된 네트워크는 의도적으로 재할당하거나 제거해야 하며, 다음에 편집되는 peer가 조용히 물려받게 해서는 안 됩니다.

게이트웨이가 관리 접근까지 함께 나른다면 복구 경로를 열어 두십시오. 잘못된 peer를 제거하는 재시작은 스스로 만든 장애입니다. 잘못된 경로를 제거하는 재시작도 마찬가지입니다.

통과하는 테스트의 모습

서비스를 다시 불러오거나 재시작한 다음 peer 목록을 다시 읽으십시오. 예전 키는 없어야 하고, 유지하려던 peer는 여전히 있고 동작해야 합니다.

wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers

상황이 허락한다면 예전 아이덴티티가 더 이상 예전 자원에 닿지 못함을 확인하십시오. 재시작 전의 정돈된 인터페이스 목록은 테스트의 절반입니다. 나머지 절반은 그 뒤에 아이덴티티가 아직 무엇을 할 수 있는가입니다.

어떤 관리자가 peer를 계속 복원한다면 저수준 삭제를 반복하지 마십시오. 그 기록자가 읽는 목록을 고치십시오. 그때까지는 재시작할 때마다 아이덴티티에게 다시 나타나라는 초대를 보내는 셈입니다.

관련 글