VPN에서의 Ping 손실: 백분율보다 먼저 Echo 요청을 묶으세요
여섯 개의 요청과 세 개의 응답은 50 퍼센트 손실 주장이 아닙니다. 무엇이든 나누기 전에 에코를 출발지, 식별자, 시퀀스로 묶으세요.
한 캡처에는 Echo 요청 여섯 개와 응답 세 개가 있고, 누군가 티켓에 50 퍼센트 패킷 손실이라고 적습니다. 그 숫자는 캡처에는 맞고 터널에는 틀릴 수 있습니다. 여섯 요청은 서로 다른 전달 계약을 가진 두 개의 다른 대화에 속할 수 있습니다. 나누기 전에 묶으면 비율은 더 이상 보고서의 흥미로운 부분이 아닙니다.
단계 1: 출발지와 목적지로 스트림을 나누기
Echo 요청은 출발지와 목적지를 가지며, 그 두 필드가 어느 대화에 속하는지를 정의합니다. 게이트웨이가 생성한 프로브는 게이트웨이의 터널 주소를 사용하고, LAN 호스트를 대신해 전달된 프로브는 그 호스트의 주소를 유지합니다. 반대편에는 한쪽에만 반환 경로가 있을 수 있어, 터널과 무관한 이유로 두 그룹의 동작이 달라집니다.
무엇이든 세기 전에 캡처를 그 필드로 나누고, 목적지를 키의 일부로 유지하세요. 서로 다른 피어로 가는 두 스트림은 출발지를 공유해도 비교할 수 없습니다.
그룹을 개수와 함께 적으세요, 다음 단계가 어느 응답이 어느 그룹에 속하는지 결정하기 때문입니다. 요청 세 개에 일치하는 응답이 없는 그룹은 발견입니다. 요청 세 개와 응답 세 개가 있는 그룹은 기준선입니다.
단계 2: 식별자와 시퀀스로 일치시키기
RFC 792의 Echo 형식은 식별자와 시퀀스 번호를 가지며, 이를 응답과 요청을 짝짓는 필드로 취급합니다. 이 작업에는 둘 다 필요합니다. 시퀀스 번호만으로는 고유하지 않은데, 서로 다른 발신자나 프로세스가 하나의 캡처 창 안에서 같은 값을 재사용할 수 있기 때문입니다. 식별자는 발신자를 좁히고 시퀀스는 위치를 좁히며, 그 쌍이 함께 있어야 일치가 방어 가능해집니다.
응답은 요청의 주소 방향을 뒤집으므로, 일치는 요청-응답 쌍이지 두 개의 동일한 튜플이 아닙니다. 요청의 출발지를 응답의 목적지와, 요청의 목적지를 응답의 출발지와 비교한 다음 식별자와 시퀀스가 일치하는지 확인하세요.
긴 캡처에는 두 필드의 정당한 재사용이 있을 수 있으므로 관찰 창도 유지하세요. 창을 하나의 버스트로 자르면 그 모호함의 대부분이 사라집니다. 티켓을 읽는 누구에게나 개수를 재현 가능하게 만듭니다.
tshark -r capture.pcap -Y 'icmp.type == 8' -T fields -e frame.time -e ip.src -e ip.dst -e icmp.ident -e icmp.seq
tshark -r capture.pcap -Y 'icmp.type == 0' -T fields -e frame.time -e ip.src -e ip.dst -e icmp.ident -e icmp.seq단계 3: 같은 경계에서 튜플 비교하기
네트워크 주소 변환이 캡처 지점과 피어 사이에 있으면, 요청과 응답의 주소는 설계상 달라집니다. 하나의 경계에서 튜플을 비교하세요, 또는 차이가 반영되도록 매핑을 명시적으로 함께 다니세요. 변환 전 요청을 변환 후 응답과 섞으면 와이어에 없던 불일치가 생깁니다.
세기 시작하기 전에 경계를 정하고 보고서에 명시해 다음 사람이 묶기를 재현할 수 있게 하세요. 클라이언트 측 캡처와 서버 측 캡처는 두 개의 다른 경계입니다. 각각은 응답이 어디서 사라졌는지에 대한 다른 질문에 답합니다.
변환된 프로브 그룹은 변환 장치 자체의 상태도 물려받으며, 그것이 응답이 도착하지 않는 실제 이유일 수 있습니다. 그 너머 경로를 탓하기 전에 그 상태를 확인하세요.
tcpdump -ni any icmp and host 10.90.0.1 -c 20
tshark -r capture.pcap -Y 'icmp' -T fields -e ip.src -e ip.dst -e ip.ttl | head -20단계 4: 캡처가 증명할 수 있는 것과 없는 것 말하기
관찰된 간극은 원격 호스트가 침묵했다는 것을 증명하지 않습니다. 캡처 지점이 한 방향만 볼 수도, 필터가 응답을 버릴 수도, 창 동안 버퍼가 넘쳤을 수도 있습니다. 각각은 같은 부재와 다른 결론을 낳습니다.
그것 없이는 비율을 감사할 수 없으므로 개수 옆에 캡처 위치, 필터 식, 드롭 카운터를 기록하세요. 그 세 줄이 나중에 숫자를 방어 가능하게 만듭니다.
그다음 관찰이 확립하는 것과 시사하는 것을 하나가 아닌 두 문장으로 분리하세요. 첫 문장은 개수와 경계를 말합니다. 두 번째는 가설과 그것을 확인할 방법을 말합니다.
특정 경로가 패킷을 버리는지가 질문이라면, 명시적 출발지 주소를 가진 제어된 프로브가 혼합 트래픽의 수동 계수보다 강한 증거입니다. 같은 기기에서, 같은 시각에, 같은 피어로 보내세요. 변수를 하나 바꾸면 비교는 유지됩니다.
그룹과 다음 경계 보고하기
보고서에는 세 줄이 있습니다: 그룹 정의, 각 그룹 내에서 일치한 개수, 비교가 이루어진 경계입니다. 그러면 독자는 한 그룹은 완전히 응답했고 다른 그룹은 그렇지 않았다는 것을 알 수 있으며, 이는 무작위 손실이 아니라 경로나 권한을 가리킵니다.
묶기를 재현할 수 있도록 캡처 파일과 필터 식을 첨부하세요. 파일 없는 요약은 주장이지 결과가 아닙니다.
ping -c 5 -I 10.80.0.6 10.90.0.1
ping -c 5 -I 10.30.0.25 10.90.0.1
tshark -r capture.pcap -Y 'icmp.type == 8 || icmp.type == 0' -T fields -e ip.src -e ip.dst -e icmp.ident -e icmp.seq | sort | uniq -c | head한 그룹이 응답 다섯 개를 보이고 다른 그룹은 전혀 없다면, 발견은 한 출발지에는 작동하는 반환 경로가 있고 다른 쪽에는 없다는 것입니다. 그것은 섞인 백분율보다 훨씬 나은 티켓이며, 다음 점검을 무관한 VPN 인스턴스가 아니라 반환 경로로 향하게 합니다.