tcpdump가 "(tcp-syn) != 0"인 패킷은 많이 캡처하지만 "tcp[tcpflags] & (tcp-syn) != 0"인 패킷은 캡처하지 않는 이유

tcpdump가 "(tcp-syn) != 0"인 패킷은 많이 캡처하지만 "tcp[tcpflags] & (tcp-syn) != 0"인 패킷은 캡처하지 않는 이유

내 컴퓨터와 VPN 서버 간 UDP 연결의 초기 핸드셰이크를 캡처하고 싶습니다. 이를 위해 사용하고 있지만 tcpdump이유를 이해하지 못합니다.

tcpdump dst port 1194 and "tcp[tcpflags] & (tcp-syn) != 0"

그동안 아무것도 캡처하지 않습니다

tcpdump dst port 1194 and "(tcp-syn) != 0" 

핸드셰이크를 시작하는 첫 번째 SYN 패킷만 캡처해야 하는 경우 연결 중에 여러 패킷을 캡처합니다.

tcp[tcpflags]그것은 무엇을 위해 사용됩니까?

답변1

  1. tcp[tcpflags]현재 캡처된 TCP 패킷에 TCP 플래그(비트)를 저장하는 변수입니다. tcp-synTCP SYN 패킷에 해당하는 비트를 제외하고는 상수이며 다른 모든 위치는 0입니다. 그러므로:

    tcpdump dst port 1194 and "(tcp-syn) != 0" 
    

    동등하다

    tcpdump dst port 1194 and 1 = 1
    
  2. UDP 프로토콜은 더 간단하며 이러한 플래그가 없습니다. UDP 트래픽에는 SYN, ACK 등이 없습니다. 따라서 UDP 패킷의 내용을 검사하지 않으면 실제 핸드셰이크를 캡처할 수 없습니다.

  3. VPN 통신이 UDP를 통해 실행되는 경우. 그러면 첫 번째 규칙은 TCP 패킷에만 적용되므로 "핸드셰이크"를 캡처하지 않습니다. 두 번째는 이를 캡처하지만 포트 1194(TCP 및 UDP)를 가리키는 모든 항목과 함께 캡처됩니다.

관련 정보