기기 두 대, OpenVPN 인증서 하나: 재연결 루프
반 분마다 다시 시작되는 터널은 보통 같은 클라이언트 인증서를 가진 기기 두 대 때문입니다. 로그와 분리, 폐기 단계를 살펴봅니다.
반 분마다 올라왔다가 다시 시작되는 터널은 보통 암호나 MTU 문제가 아닙니다. 하나의 신원이 두 번 쓰이는 것입니다. 서버는 익숙한 공통 이름을 보고 새 세션을 가장 최신으로 받아들이며, 오래된 기기는 자기가 대체되었음을 알게 됩니다. 클라이언트 쪽에서는 유휴 시간 초과와 재시작처럼 보이기 때문에 조사가 그토록 자주 엉뚱한 곳에서 시작됩니다.
재시작 간격에서 시작하기
간격은 무엇보다 먼저 단서입니다. ping-restart 창과 맞는 일정한 리듬은 경로 고장이 그렇게 규칙적인 경우가 드물기 때문에 경로 고장이 아니라 교체되는 세션을 가리킵니다. 재시작 사이의 정확한 간격과 클라이언트 로그의 사유 줄을 적어 둡니다. 시간 초과 뒤의 재시작은 실패한 핸드셰이크와는 다른 이야기를 합니다.
두 번째 기기와 비교해 재시작이 언제 시작되었는지 확인합니다. 새 노트북, 휴대전화, 예비 기기로 복사한 프로필이 흔한 방아쇠이며, 시점은 보통 누군가 그것을 설정한 날과 맞습니다.
간격과 사유를 적어 둡니다. 둘 다 증거이고, 둘 다 값싸게 모을 수 있습니다.
서버가 두 번째 로그인에 대해 무엇이라고 했는지 읽기
직접 관리하는 서버에서는 로그가 공통 이름을 적고 두 번째 연결이 들어오는 것을 보여 줍니다. duplicate-cn이 없으면 그 도착은 같은 이름의 기존 세션을 대체하며, 메시지는 보통 그것을 분명히 말합니다. duplicate-cn이 있으면 두 세션이 함께 존재하고 증상이 달라집니다: 클라이언트는 연결을 유지하지만 클라이언트별 설정 한 벌과 하나의 폐기 결정을 공유합니다. 대체는 순서에서만 보이므로 두 기록을 함께 읽습니다.
호스팅 서비스에서는 서버 로그가 아예 없을 수 있습니다. 그때의 단서는 시점입니다: 다른 기기가 연결될 때마다 끊기는 안정된 터널이고, 클라이언트 로그에는 시간 초과 외에 아무것도 없습니다.
원격 호스트 이름만이 아니라 두 프로필의 인증서와 키 블록을 비교합니다. 복사한 프로필은 보통 파일 이름만 다릅니다.
서버 쪽에서 신원 나누기
이 서버에 서명하는 CA를 통해 기기마다 인증서 하나를 발급합니다. Easy-RSA에서는 기기마다 별도의 클라이언트 이름이 필요하고, 프로필은 그 인증서와 키로 만들어집니다. 공통 이름이 기기의 신원이 되며, 그것이 바로 서버에 빠져 있던 것입니다. 사람이 아니라 기기 이름을 붙여야 교체할 때 새 이름이 생깁니다.
공유 제어 채널 키는 별개의 것입니다. tls-crypt나 tls-auth는 모든 클라이언트의 제어 채널을 보호하며 공유되도록 만들어졌습니다. 그것은 클라이언트 신원이 아니며, 바꾼다고 중복된 인증서가 고쳐지지 않습니다.
인증서와 키, 클라이언트별 설정 파일을 같은 공통 이름 아래에 두지 않으면 다음 연결에서 대응이 깨집니다. 거기가 어긋나면 인증은 통과하지만 아무것도 받지 못하는 클라이언트가 됩니다.
분리 후에도 주소와 설정을 맞춰 두기
고정 주소는 충돌의 두 번째 경로를 만듭니다. 서버가 ifconfig-pool-persist나 클라이언트별 파일로 그것을 할당한다면, 그 기록은 여전히 옛 이름을 가리킵니다. 인증서를 나눈 뒤에도 두 기기가 같은 터널 주소를 받을 수 있고, 그 고장은 원래 루프와 다르게 보입니다.
인증서와 같은 시점에 대응을 갱신하고, 그다음 두 기기를 다시 연결해 할당된 주소를 비교합니다. 중복 주소는 깨끗한 재연결이 아니라 간헐적 손실로 나타납니다.
기기마다 달라야 하는 설정은 공유 템플릿이 아니라 그 기기 자신의 파일로 보냅니다. 공유 템플릿은 다음 중복을 알아채기도 어렵게 만듭니다.
옛 신원을 제대로 폐기하기
하드웨어를 폐기하거나 잃어버렸을 때는 옛 기기에서 프로필을 지우는 대신 인증서를 폐기합니다. 폐기는 새 CRL을 만들고, 서버는 crl-verify가 가리키는 곳에 그 파일이 필요합니다. 그 지시문이 있는 상태에서 CRL이 없거나 읽히지 않으면 서버가 모든 클라이언트를 거부하므로, 갱신할 때마다 알려진 계정 하나를 시험합니다.
각 인증서를 사람이나 기기에 연결하고 발급일과 폐기일을 함께 적은 목록을 유지합니다. 그 목록은 파일 이름을 읽지 않고도 누가 아직 접근 권한이 있는지 답해 주고, 다음에 복사된 프로필이 루프를 다시 시작하지 못하게 합니다.