【Linux】tcpdumpコマンド 〜 パケットキャプチャ 〜

■ はじめに

tcpdumpコマンドに関するメモ。

【1】tcpdumpコマンド

* ネットワークパケットの内容を確認するツール
 => ネットワークのキャプチャをとることができる
 => 思ってたより、構築も使い方も簡単だった。

【2】環境構築

* 今回の想定環境は、以下の通り。
* OS : CentOS7

1)インストール

# インストール
sudo yum install tcpdump

# バージョン確認
tcpdump --help

Debian系の場合

# インストール
sudo apt-get install tcpdump

【3】使い方

# w : 出力ファイル名
sudo tcpdump host 127.0.0.1 -w dump.pcap

# ssh以外をキャプチャリング(not port 22)
sudo tcpdump -w dump.pcap not port 22

 => 出力ファイルを、Wireshark(以下の関連記事を参照)で開き、ダンプファイルを調査する
https://blogs.yahoo.co.jp/dk521123/31486925.html
sudo tcpdump -i eth1 port 8080

sudo tcpdump -i any port 8080

1)オプション

オプション 説明
-i [Interface] インターフェースを指定 any を指定すると全てのインタフェース
-w [file] キャプチャ結果を書き出す

https://qiita.com/tossh/items/4cd33693965ef231bd2a
http://itpro.nikkeibp.co.jp/article/COLUMN/20140512/556024/?rt=nocnt
http://blog.livedoor.jp/sonots/archives/18239717.html

使用上の注意

* root権限で実行する
* 出力ファイルの拡張子は「.pcap」にしといたほうがいい(Wiresharkで開くために)

トラブル

トラブル内容

* tcpdumpコマンドを実行したところ、以下の「エラー内容」が表示され
   キャプチャが開始されない

エラー内容

tcpdump: WARNING: SIOCGIFADDR: nflog: No such device
tcpdump: NFLOG link-layer type filtering not implemented

解決案

https://centossrv.com/patio/centossrv.cgi?read=2898&ukey=0

より

[1] 「ip addr」を実行する

1: enoxxxxxxxx: <BROADCAST,MULTICAST,UP,LOWER_UP> ... << 「enoxxxxxxxx」をメモっとく
 ...

[2] 「sudo tcpdump -D」を実行する

1.nflog ...
2.nfqueue ...
3.enoxxxxxxxx ... << 「enoxxxxxxxx」の番号「3」をメモっとく
 ...

[3] 「-iオプション」で、手順[2]の番号を指定する(キャプチャ開始されるはず)

$ sudo tcpdump -i 3 host 127.0.0.1 -w dump.pcap
tcpdump: listening on enoxxxxxxxx, link-type EN10MB (Ethernet), capture size 65535 bytes

参考文献

http://qiita.com/tossh/items/4cd33693965ef231bd2a
https://www.softel.co.jp/blogs/tech/archives/5257

関連記事

conntrackコマンド
https://dk521123.hatenablog.com/entry/2017/07/03/233336
Wireshark ~パケットキャプチャ~
https://dk521123.hatenablog.com/entry/2013/04/18/234813