tcpdump
티씨피덤프
는 명령줄에서 패킷을 선택·요약 표시하거나 파일로 저장하는 도구다. 캡처 위치와 필터가 수집할 수 있는 범위를 결정하므로 보이지 않는 패킷이 곧 존재하지 않는 패킷은 아니다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 서버·가상 인터페이스에서 실제로 도착하는 트래픽을 확인한다.
- 조건에 맞는 패킷만 수집하여 분석량을 제한한다.
- 을 저장해 와 탐지 엔진에서 같은 증거를 재검토한다.
02어떤 순서로 동작하나
- 관측 지점 선택
실제 트래픽이 지나는 인터페이스와 캡처 권한을 확인한다. ·브리지·터널에서는 관측 위치마다 헤더와 주소가 다를 수 있다.
- 캡처 조건 적용
호스트·포트·프로토콜 조건을 캡처 필터 문법으로 지정한다. 셸의 괄호 해석과 필터 표현을 구분한다.
- 패킷 기록
요약 출력 또는 으로 저장하며 수집 길이와 손실 통계를 함께 확인한다. 화면의 한 줄은 애플리케이션 메시지 하나와 일치하지 않을 수 있다.
- 흐름 대조
패킷의 방향·시각· 플래그·순서와 서버 로그를 연결한다. 재조립이 필요한 내용은 전체 흐름을 분석할 수 있는 도구로 다시 읽는다.
03먼저 알아둘 용어와 구성요소
- 패킷 캡처와 필터 기능을 제공하는 라이브러리.
- 프로토콜·호스트·포트 등의 조건으로 캡처 대상을 고르는 식.
- 패킷과 캡처 시각 등을 보관하는 파일 형식.
- 한 패킷에서 저장하는 최대 바이트 수.
- 연결 수립과 수신 확인에서 사용하는 플래그.
- 수집 전에 어떤 패킷을 받을지 선택하는 조건.
- 이미 캡처한 자료의 표시 범위를 제한하는 조건으로 도구별 문법이 다르다.
SSH TCP 연결의 SYN부터 FIN까지 상대 번호 추적하기
패킷 목록의 플래그·Len·Seq·Ack를 이용해 연결 상태와 다음 기대 바이트를 계산한다.
실습 구성과 전제
- 자신의 정상 SSH 연결을 저장한 또는 제공된 실습 캡처를 사용한다.
- 의 상대 순서 번호 사용 여부를 확인하고 같은 .stream만 비교한다.
연결 수립에서 SYN의 번호 소비를 읽는다
- 클라이언트 SYN은 Seq=0, 서버 SYN/ACK은 Ack=1, 클라이언트 ACK는 Ack=1로 보인다. SYN은 데이터 길이가 0이어도 순서 공간 한 칸을 소비한다.
- 출발지 임시 포트와 서버 22번 포트의 방향을 고정해야 Seq와 Ack의 소유자를 바꾸어 읽지 않는다.
원본 크기로 보기 ↗- 세 줄은 SYN→SYN, ACK→ACK이고 모두 Len=0이다.
- 임시 포트와 22번 포트가 반대 방향으로 오가며 Ack가 1로 증가한다.
확인 기준상대 번호 기준의 0·1과 실제 와이어의 절대 번호를 혼동하지 않는다.
종료 요청 두 개를 각 방향의 상태로 읽는다
- FIN도 순서 공간 한 칸을 소비한다. 한 방향의 FIN을 확인해도 상대 방향 전송이 바로 끝났다고 볼 수 없으므로 양쪽 FIN과 ACK를 추적한다.
- 종료와 SSH 애플리케이션의 종료 원인은 다른 정보다. 이유는 SSH 로그나 사용자 동작으로 보완한다.
원본 크기로 보기 ↗- 서버 방향 FIN,PSH,ACK에 이어 Ack=1165가 보이고 반대 방향 FIN에는 Ack=938이 대응한다.
- 첫 FIN의 Seq=1164와 다른 방향 FIN의 Seq=937이 각각 한 칸 뒤에서 확인된다.
확인 기준FIN의 +1을 데이터 1바이트 전송으로 잘못 계산하지 않는다.
이상 표시를 다른 증거로 확인한다
- 재전송·중복 ACK 표시는 캡처 관찰을 바탕으로 한 분석 결과다. 누락 캡처·비대칭 경로·오프로딩 때문에 실제 네트워크 손실과 다를 수 있다.
- Stream별로 앞뒤 패킷과 ACK 진전을 확인하고, 캡처 위치와 드롭 카운터를 함께 기록한다.
texttcp.stream == 0 tcp.flags.syn == 1 || tcp.flags.fin == 1 || tcp.flags.reset == 1각 줄은 별개의 표시 필터 예시. stream 번호는 분석할 연결에 맞춘다.
확인 기준경고 색상만으로 장애 원인을 확정하지 않는다.
실습에서 확인한 동작 원리
- SYN과 FIN은 각각 순서 공간 한 칸을 사용한다.
- 패킷 분석 경고와 실제 원인은 추가 증거로 구분한다.
인라인 후보 인터페이스에서 수신과 전달을 따로 검증하기
센서 인터페이스에 패킷이 들어오는 것과 다른 인터페이스로 전달되는 것을 구분한다.
실습 구성과 전제
- 격리 의 관리 인터페이스와 시험용 데이터 인터페이스를 분리한다.
- 주소가 없는 인터페이스에서도 L2 프레임은 캡처될 수 있지만 전달 기능은 별도로 구성해야 한다.
관리 경로와 데이터 경로를 구분한다
- ip a에서 인터페이스 이름·링크 상태·주소를 확인한다. 두 시험 포트가 UP이라고 해서 브리지나 전달 경로가 자동으로 구성되는 것은 아니다.
- 관리 접속을 유지할 별도 경로가 있어야 데이터 경로 시험 실패 시 장비를 복구할 수 있다.
shellip -br link ip -br address인터페이스 상태와 주소를 변경하지 않는 조회 명령이다.
원본 크기로 보기 ↗- ens160에는 IPv4 주소가 보이고 ens224·ens256은 별도 인터페이스로 표시된다.
- 데이터 후보 포트의 UP·LOWER_UP과 주소 설정은 다른 필드다. 링크 상태만으로 패킷 전달을 증명할 수 없다.
확인 기준시험 포트를 케이블·가상 스위치 연결도와 맞춘다.
수신 패킷을 확인한다
- 입력 측에서 등 정상 시험 트래픽이 보이는지 확인한다. 출력 측에서도 같은 사건의 프레임이 보이는지 별도 캡처해야 전달을 증명할 수 있다.
- 반복 요청만 보이면 응답 부재·경로 단절·주소 오류가 후보가 된다. 규칙이 막았다고 단정하지 않는다.
shelltcpdump -ni ens224 -c 10 'arp or icmp' tcpdump -ni ens256 -c 10 'arp or icmp'실습 데이터 인터페이스에서 같은 정상 트래픽을 별도로 관찰한다.
원본 크기로 보기 ↗- tcpdump -i ens224가 실행되고 Ethernet 링크 타입과 반복 ARP Request가 보인다.
- 캡처는 한 인터페이스의 수신 증거다. ens256으로 전달됐다는 정보는 이 화면에 없다.
확인 기준수신·전달·응답을 세 지점에서 분리해 판정한다.
탐지 모드와 차단 모드를 검증한다
- 미러 포트의 는 복제본을 보기 때문에 원래 패킷을 직접 멈추지 않는다. 는 실제 경로에 위치하고 지원하는 캡처·전달 방식으로 동작해야 한다.
- 정상 표본이 통과하는 기준선을 먼저 만든 뒤 허가된 시험 표본의 탐지·차단·복구를 비교한다.
확인 기준경보 발생, 패킷 드롭, 클라이언트 결과가 서로 대응해야 차단 성공이라고 쓴다.
실습에서 확인한 동작 원리
- 패킷 수신과 전달은 서로 다른 검증 항목이다.
- 인터페이스 상태나 경보만으로 차단 효과를 확정할 수 없다.
04예제로 따라가기
- 가상 연결의 [S]와 [S.] 출력은 각각 SYN과 를 나타내며 순서와 ACK 값으로 연결 단계를 대조할 수 있다.
- 통신은 의 3단계 연결 수립을 거치지 않으므로 같은 패턴을 기대하면 안 된다.
- 짧은 으로 저장된 에서는 헤더는 보이지만 뒷부분의 본문이나 인증 정보는 캡처에 없을 수 있다.
05혼동하기 쉬운 점과 확인 기준
- 캡처 필터와 표시 필터의 문법을 섞으면 원하는 자료가 수집되지 않거나 잘못 표시된다.
- NIC Offload·가상화·캡처 손실 때문에 보이는 체크섬·크기·순서 이상을 실제 회선 장애와 즉시 동일시하지 않는다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.