tcpdump が "(tcp-syn) != 0" のパケットは多くキャプチャしますが、 "tcp[tcpflags] & (tcp-syn) != 0" のパケットはキャプチャしない理由

tcpdump が

私のコンピュータと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パケットにのみ適用されるため、「ハンドシェイク」はキャプチャされません。 2番目はキャプチャしますが、ポート1194(TCPとUDP)を指すすべてのエントリでキャプチャされます。

おすすめ記事