분석기가 패킷에 잘못된 체크섬이 있다고 표시하고, 내려받은 파일이 잘못되어 보이기 때문에 두 관찰이 VPN의 손상이라는 하나의 이야기로 합쳐진다. 그러나 이것은 서로 다른 지점에서 수행된 서로 다른 측정이다. 하나는 네트워크 어댑터가 작업을 끝내기 전에 캡처 메커니즘이 본 것을 설명하고, 다른 하나는 애플리케이션이 저장한 바이트를 설명한다. 둘 중 무엇이 실제로 바뀌었는지 밝히는 것이 진단의 전부다.

캡처가 어댑터에 대해 어디에 있는가

패킷 캡처는 여러 변환이 있는 경로의 한 지점에서 찍은 스냅숏이다. 호스트 스택과 전선 사이에는 세그멘테이션, 체크섬 계산, 수신 시 병합이 있다. 캡처 지점은 그 순간의 상태를 보여 주며, 이는 전선의 최종 프레임과 거의 일치하지 않는다. 그것을 전선 자체인 것처럼 읽는 것이 바로 자리 표시자 필드가 고발로 바뀌는 방식이다.

그러므로 의심스러운 필드에 대한 유용한 질문은 그것이 잘못되어 보이는지가 아니라 어디에서 관찰되었는지이다. 캡처 인터페이스, 분석기 버전, 패킷 계층을 발견 내용 옆에 적어라. 이 셋이 없으면 체크섬 표시는 전혀 해석할 수 없다.

전송 오프로드가 추적에 하는 일

전송 체크섬 오프로드가 켜져 있으면 어댑터는 호스트가 패킷을 큐에 넣은 뒤에 체크섬을 계산해 필드를 채운다. 그래서 호스트 측 캡처에는 자리 표시자가 기록되고, 분석기는 전선이 결코 실어 나르지 않은 체크섬을 보고한다. 세그멘테이션 오프로드도 비슷한 인공물을 만든다. 호스트가 나중에 여러 프레임이 되는 큰 버퍼 하나를 어댑터에 넘길 수 있기 때문이다.

Wireshark의 오프로딩 참고 자료는 두 효과를 모두 설명하며 부분 체크섬을 인식하는 것이 분석기 버전과 패킷 유형에 달려 있다고 지적한다. 그래서 오래된 캡처 도구와 새로운 도구가 같은 추적을 두고 둘 다 올바르게 읽으면서도 의견을 달리할 수 있다.

캡슐화는 두 번째 객체를 더한다

VPN은 그림에 두 번째 패킷을 넣는다. 터널 인터페이스는 애플리케이션이 실제로 보낸 안쪽 패킷을 보여 주고, 물리 인터페이스는 그것을 나르는 바깥쪽 캡슐화 연결을 보여 준다. 안쪽 패킷에서 가져온 체크섬이나 길이는 바깥 프레임의 것이 아니며, 둘을 같은 객체를 설명하는 것처럼 비교하면 무의미해진다.

비교해야 할 때는 같은 것끼리 비교하라. 안쪽은 안쪽과, 바깥쪽은 바깥쪽과, 경로의 같은 지점에서. 맞지 않는 필드 쌍은 서로 다른 두 객체를 측정했다는 것만 증명한다. 각 추적이 어느 인터페이스에서 왔는지 적어라. 깨끗해 보이는 터널 캡처는 어댑터가 무엇을 내보냈는지에 대해 아무 말도 하지 않는다.

해시로 파일 무결성을 증명하라

파일 자체에 대해서는 재현 가능한 원본과 저장된 결과의 내용 해시를 계산하고 다이제스트를 비교하라. 이것은 패킷별 표시와는 다른 질문에 답하며, 사용자가 실제로 신경 쓰는 객체에 대해 답한다.

sha256sum payload.bin
sha256sum /srv/transfer/payload.bin
cmp -l payload.bin /srv/transfer/payload.bin | head

다이제스트가 같으면 그 전송에 대한 손상 문제는 닫힌다. 다르면 더 좁은 질문이 열린다. 바이트가 갈라지는 가장 이른 단계를 찾고, 무언가가 의도적으로 파일을 변환했는지 확인하라. 부분 저장, 다시 인코딩된 첨부 파일, 예상한 파일 이름으로 저장된 오류 페이지는 모두 네트워크 결함 없이 바이트를 바꾼다.

어댑터 경로를 영구적으로 만들지 않고 국소화하라

하나의 독이나 어댑터를 따르는 재현 가능한 문제에서는 VPN 프로필, 애플리케이션, 시험 객체, 목적지를 고정하고 지원되는 대체 인터페이스로 전송을 반복하라. 어댑터에 따라 달라지는 결과는 결함을 그 경로로 좁힌다. 아직 드라이버 설정을 특정하지도, 모델 전체의 결함을 증명하지도 않는다.

오프로드를 전역으로 끄는 것은 유혹적인 시험이자 나쁜 기본값이다. 호스트 전체 설정은 실험 범위를 훨씬 넘는 트래픽에 영향을 주고 실제 성능 비용을 낳을 수 있으므로, 그런 변경은 일시적인 것으로 다루고 기록한 뒤 되돌려라. 다른 기계에서 빌려온 우회책을 유지하기 전에 제조사가 지원하는 진단을 사용하라.

보고서는 세 결과 중 무엇이 바뀌었는지 밝혀야 한다. 분석기의 패킷 해석인지, 애플리케이션의 완성된 바이트인지, 아니면 한 어댑터 경로의 재현성인지. 이들은 서로 다른 세 가지 다음 행동으로 이어지며, 그중 하나만 암호화에 관한 것이다.

관련 글