【備忘録】centOS7 で tcpdump する
centOS7 で tcpdump がうまく開始されないと問合せを受け、
色々試してみたところ勉強になったので、備忘録として残しておきたいと思います。
題材: うまくいかないコマンド
$ tcpdump tcp tcpdump:
試行1: 実行権限の確認
tcpdump には root 権限が必要なので、 sudo するようにコマンドを修正
$ sudo tcpdump tcp tcpdump: NFLOG link-layer type filtering not implemented
NFLOG のフィルタは実装されてません、とのことらしい。
試行2: ネットワークの確認
インターフェイスのリストを見てみる。
>||
$ sudo tcpdump -D
1.nflog (Linux netfilter log (NFLOG) interface)
2.nfqueue (Linux netfilter queue (NFQUEUE) interface)
3.ens160
4.any (Pseudo-device that captures on all interfaces)
5.lo [Loopback]
|
あ、NFLOG が1番になってる。
試行1 のエラーから推察すると、 tcpdump で interface を指定しない場合には
リスト番号の一番小さい interface を指定する模様。
ifconfig したところ nflog は定義していないので、上記のエラーが出ている、と。
なので、-i オプションで明示的に interface を指定する。
$ sudo tcpdump -i ens160 tcp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
無事 tcpdump が開始された。
今回のまとめ: tcpdump 利用時の注意点
1. root 権限で実行する(試行1 より) 2. interface をちゃんと指定する(試行2 より)
普段はダンプしたいインターフェイスを絞った上でコマンドを作成するため
気づきませんでしたが、今回勉強になりました。
centOS6 系列で tcpdump -D の結果を比較すると、挙動の違いの理由が分かりそう
な気がしています。後日やってみよう。
(追記: 2018/05/05)
PC を新調して、 仮想で centOS6.X 系を立てたので、tcpdump -D を確認してみました。
default の状態で 1 番が eth0 に指定されていました。
eth0 は WAN に抜ける interface として利用しているので、centOS6.X 系列ではtcpdump 対象として
インターネットとの通信を重要視しているということなんですかね。
[root@CentOS conf]# tcpdump -D 1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.eth1 5.usbmon1 (USB bus number 1) 6.any (Pseudo-device that captures on all interfaces) 7.lo
オプションなしで tcpdump も実行できました。
[root@CentOS conf]# tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes