はじめに
tcpdumpは、マシンに出入りするネットワークパケットを検査およびキャプチャするための非常に便利なコマンドです。これは、ネットワークの問題とセキュリティの問題をトラブルシューティングするための最も一般的なネットワークユーティリティの1つです。
その名前はtcpdumpですが、UDP、ARP、またはICMPを含む非TCPトラフィックを検査するために使用できます。
このチュートリアルでは、Linuxシステムでtcpdumpコマンドを使用する方法を説明します。
tcpdumpをインストールする
デフォルトでは、tcpdumpはほとんどのLinuxディストリビューションにインストールされています。 tcpdumpがインストールされているかどうかを確認するには、次のコマンドを実行します。
$ tcpdump --version
出力:
まだインストールされていない場合は、実行してみましょう:
$ sudo apt update
$ sudo apt install tcpdump
ネットワークインターフェースでパケットをキャプチャする
オプションを指定せずにtcpdumpを実行すると、コンピューター上のすべてのネットワークインターフェイス上のすべてのパケットがキャプチャされます。
$ sudo tcpdump
Ctrl+Cを押して停止する必要があります。
tcpdumpコマンドでパケットを検査できるすべてのネットワークインターフェイスを一覧表示するには、次のコマンドを実行します。
$ sudo tcpdump -D
出力:
特定のネットワークインターフェイスでパケットをキャプチャし、パケットを6に制限する場合は、次のコマンドを実行します。
$ sudo tcpdump -i eth0 -c 6
出力:
特定のホストでネットワークパケットをキャプチャする
特定のホストからパケットをキャプチャします。次のコマンドを実行するだけです。
$ sudo tcpdump -n host 172.19.11.101 -c 5
特定のポートでネットワークパケットをキャプチャする
特定のポートのネットワークパケットのみをフィルタリングする場合は、-nportオプションを指定してtcpdumpコマンドを実行してみましょう。
$ sudo tcpdump -n port 22
送信元と宛先からネットワークパケットをキャプチャする
特定の送信元からのネットワークパケットのみをフィルタリングする場合は、srcオプションを指定してtcpdumpコマンドを実行してみましょう。
$ sudo tcpdump src 172.19.11.210
特定の宛先へのネットワークパケットのみをキャプチャするために、dstオプションを指定してtcpdumpコマンドを実行します。
$ sudo tcpdump dst 172.19.11.210
多くのフィルターを組み合わせてネットワークパケットをキャプチャする
tcpdumpコマンドを実行するときに多くのフィルターを組み合わせるには、次の演算子を使用できます:and(&&)、または(||)、(!)ではありません。たとえば、次のコマンドは、ポート22を介して送信元172.19.11.210から送信されるすべてのパケットをキャプチャします。
$ sudo tcpdump src 172.19.11.210 && -n port 22 -c 5
プロトコルでネットワークをフィルタリングする
特定のプロトコルのネットワークパケットをキャプチャするには、コマンドオプションとしてプロトコル名を指定しましょう。例:
$ sudo tcpdump -n udp
結論
Linuxシステムのネットワークのトラブルシューティングと分析にtcpdumpコマンドを使用する方法の詳細についてはすでに説明しました。
ご不明な点がございましたら、お気軽にお問い合わせください。読んでいただきありがとうございます。