web-dev-qa-db-ja.com

tcpdumpでIPとポート番号を表示し、ホスト名とプロトコルを表示しないようにする方法

IPとポート番号を確認したいテストにtcpdumpを使用していますが、tcpdumpの出力は次のようになります。

IP pl1snu.koren.kr.http > kitch.pl.sophia.inria.fr.dnp: Flags [P.], seq 54:72, ack 1, win 5792, length 18

httpのホスト名とプロトコルだけが表示されます。80であることは簡単にわかりますが、dnpでは検索する必要があります。

iPアドレスとポート番号を表示するが、ホスト名とプロトコルを表示しないようにするにはどうすればよいですか。ありがとう

37
misteryes

tcpdumpコマンドラインに-nを追加します。

tcpdumpのマンページ から。

-n Don't convert addresses (i.e., Host addresses, port numbers, etc.) to names.

また、Fedora(そしておそらく他の派生物:RHEL、CentOSなど)では、別のものを含めるためにオリジナルのtcpdumpバージョンに パッチが適用されています 。ポート番号を削除するためのオプション-nnのマンページ から:

-n     Don't convert Host addresses to names.   This  can  be  used  to
              avoid DNS lookups.

-nn    Don't convert protocol and port numbers etc. to names either.
36
heavyd

-nnパラメータを使います。

-nn:ホスト名やポート名を解決しないでください。

以下のように実行してください。

tcpdump -nn 
5
ATMc

-nはホスト名に対してのみ機能しますが、ポート番号に対しては機能しません。 -nnは両方のためのトリックをします。これはFedora 20 gnu/linux上でtcpdumpバージョン4.5.1を実行しています。 @ ATMcの下落した回答が唯一の正解です。低いカルマのため、残念ながらそれを支持することも下にコメントを書くこともできません。

2
Adam Kurkiewicz

私は最善のアプローチがだと思います:

Sudo tcpdump -ni any

テストする手順

  1. コンソールを開き、次のように入力します。

    Sudo nc -l -p 6666
    
  2. 別のコンソールを開き、次のように入力します。

    Sudo tcpdump -ni any
    

    出力が冗長すぎる場合は、それを除外することができます(| grep -v "patter1n|pattern2"

  3. 3番目のコンソールを開き、次のように入力します。

    telnet localhost 6666
    

期待される出力:

10:37:13.770997 IP 127.0.0.1.56920 > 127.0.0.1.443: Flags [S], seq 2822288041, win 43690, options [mss 65495,sackOK,TS val 1028779 ecr 0,nop,wscale 7], length 0

あなたがSudo tcpdump -i anyを使うならば、あなたはこのような何かを見るでしょう:

10:38:22.106022 IP localhost.56924 > localhost.https: Flags [S], seq 3147104744, win 43690, options [mss 65495,sackOK,TS val 1045863 ecr 0,nop,wscale 7], length 0
1
Javier