시도의 첫 패킷보다 먼저 시작된 캡처에서 출발하세요。 그렇지 않으면 대화의 중간을 읽게 됩니다。 이미 진행 중인 협상은 암호화된 교환과 키 갱신을 보여 주며, 둘 다 시작 부분처럼 보이지 않습니다。 시작 부분은 키 없이 해독할 수 있는 구간이므로 도달 가능성 질문에 그토록 잘 답합니다。 순서대로 네 가지 점검을 하면 새 캡처에서 어느 쪽이 말을 멈췄는지에 대한 방어 가능한 진술로 나아갈 수 있습니다。

먼저 캡처가 처음부터 시작되었는지 확인하세요

터널이 올라온 뒤 시작한 캡처에는 캡슐화된 데이터 스트림과 주기적 keepalive가 들어 있고, 둘 다 암호화되었거나 거의 비어 있습니다。 클라이언트를 다시 시작해 시도 자체를 기록하거나, 캡처가 실행되는 동안 의도적으로 새 연결을 일으키세요。 새 시도를 만들 수 없다면 노트에 그렇게 적으세요。 기록하지 않은 시작 부분은 어떤 해독으로도 되살릴 수 없습니다。

캡처를 두 끝점과 UDP 500 및 4500으로 좁혀 파일이 읽을 만한 크기로 유지하세요。 바쁜 호스트에서는 필터 없는 캡처가 협상을 무관한 트래픽 아래 묻어 버립니다。

tcpdump -i any -n -s 0 -w fresh-ike.pcap 'udp port 500 or udp port 4500'

시도가 흥미로울 때 파일을 보관하세요。 같은 캡처가 교환이 무엇이었는지, 그리고 무언가 돌아왔는지라는 두 질문에 모두 답하기 때문입니다。 시작 시각과 필터링한 끝점 쌍을 적어 라벨을 붙이세요。 이 두 사실이 없는 캡처는 주소가 바뀌고 어느 시도를 기록했는지 아무도 기억하지 못하는 일주일 뒤에는 쓸모가 없습니다。

둘째, 페이로드보다 먼저 헤더를 읽으세요

IKE 헤더는 보안 매개변수 인덱스, 교환 유형, 메시지 ID를 담고 있으며 새 협상에서는 이 값들이 두드러집니다。 개시자는 영이 아닌 SPI를 만들고, 아직 응답을 보지 못했으므로 최초 요청의 응답자 SPI는 영이며, 교환 유형은 IKE_SA_INIT, 메시지 ID는 영입니다。 그 밖의 것은 같은 협상의 이후 단계나 전혀 다른 시도에 속합니다。

이 첫 교환의 제안, 키 교환, nonce 페이로드는 평문으로 읽을 수 있습니다。 읽을 수 있다는 것이 인증되었다는 뜻은 아니며, 이 시점에 어느 쪽도 자신의 신원을 증명하지 않았습니다。

Diffie-Hellman 개인 값은 결코 회선을 지나지 않으므로 캡처로 세션 키를 도출할 수 없습니다。 인증은 다음 교환에서 이루어집니다。 첫 교환이 합의한 내용으로 보호됩니다。 어느 쪽이 진짜인지 묻는다면 이 교환은 그 질문에 답할 수 없습니다。 양쪽이 제안에 합의하고 파일에 없는 공유 비밀을 만들었다는 것만 보여 줄 수 있습니다。

셋째, 요청과 그 응답을 맞추세요

SPI 쌍, 교환 유형, 메시지 ID로 맞춘 뒤 응답 플래그를 확인하세요。 재전송은 원래 메시지 ID를 반복할 뿐 두 번째 로그인 시도가 아닙니다。 교환 대신 패킷을 세는 것이 건강한 협상을 유령 루프로 만드는 길입니다。

응답은 거절일 수도 있습니다。 쿠키 요청, 받아들일 수 없는 그룹 통지, 제안에 관한 오류입니다。 이는 정당한 응답이며 경로는 동작하지만 정책은 동작하지 않는다는 뜻입니다。 모든 응답을 성공으로 보지 말고 통지를 해독하세요。 통지가 그룹이나 제안을 지목하면 수리는 방화벽이 아니라 설정 쪽에 있습니다。

방향도 중요합니다。 응답 없는 요청과 클라이언트에 결코 도달하지 않는 응답은 다른 결함이며, 클라이언트 측 시간 초과처럼 보이는 것은 후자뿐입니다。

넷째, 4500에서 IKE를 나머지 모두와 분리하세요

4500 포트는 요약 보기에서 비슷해 보이는 세 가지를 나릅니다。 네 바이트 영 non-ESP 표식 뒤의 IKE, 표식 위치에 영이 아닌 SPI가 있는 캡슐화 ESP, 짧은 keepalive입니다。 IKE와 캡슐화 ESP를 가르는 것이 바로 그 표식이므로 트래픽을 IKE라고 부르기 전에 그 바이트를 읽으세요。 4500이라고 읽는 캡처 라벨은 포트 번호이지 프로토콜이 아닙니다。

캡슐화 ESP는 키 없이 해석할 수 없는 암호화된 페이로드이며, 그 존재는 결함이 아니라 동작하는 터널의 신호일 수 있습니다。

같은 시도에 대해 두 포트를 모두 지켜보세요。 IKE가 500에서 열렸더라도 NAT 탐지 후 4500으로 옮겨 갈 수 있기 때문입니다。 500만 필터링한 추적은 협상이 성공해 자리를 옮긴 바로 그때 조용해 보입니다。 필터를 넓히고 부재에서 어떤 결론을 내리기 전에 같은 시간 창을 다시 읽으세요。

한 관측 지점의 침묵이 뜻하는 것

클라이언트에 응답이 없다는 것은 그 지점이 관측한 것만 증명합니다。 필터링, 라우팅, 잘못된 원격 주소, 멈춘 서비스, 프로토콜 불일치는 모두 같은 빈 추적을 만듭니다。

관련 ICMP unreachable은 증거를 더하지만, 그 안에 인용된 패킷을 읽고 보낸 장치의 주소를 적으세요。

라우터의 거부는 상대가 돌려준 인증된 오류와 다른 사건이며, 서비스가 살아 있음을 증명하는 것은 후자뿐입니다。 같은 시도를 서버 로그나 승인된 관측과 연관 지어 요청이 도착했는지 응답이 나갔는지 알아보세요。 캡처는 범위를 좁히고 사적으로 유지하세요。 읽을 수 있는 핸드셰이크 필드가 파일의 나머지를 무해하게 만들지는 않습니다。 가치 있는 결과는 짝지어진 요청과 응답 하나, 또는 관측 지점을 명시한 문서화된 공백 하나입니다。

관련 글