ホームページ  >  記事  >  運用・保守  >  Linuxネットワークパケットキャプチャ分析ツール

Linuxネットワークパケットキャプチャ分析ツール

Linux中文社区
Linux中文社区転載
2023-08-02 15:23:262163ブラウズ

Linuxネットワークパケットキャプチャ分析ツール
#1 . tcpdump

1. 機能

tcpdump コマンドは、指定されたネットワーク インターフェイスを通過するデータ パケットのヘッダーを一覧表示し、指定されたネットワーク インターフェイス上で送信されたデータ パケットの「ヘッダー」を完全に削除できます。ネットワークをキャプチャし、分析を提供します。ネットワーク層、プロトコル、ホスト、ネットワーク、またはポートのフィルタリングをサポートし、有用な情報の抽出に役立つ and や or、not などの論理ステートメントを提供します。

ネットワークインターフェースをプロミスキャスモードに設定する必要があるため、一般ユーザーは通常実行できませんが、root権限を持つユーザーは直接実行してネットワーク上の情報を取得できます

その他のパケット キャプチャ ツール

  • wireshark にはグラフィカル バージョンとコマンド ライン バージョンの両方があり、 tcpdump によってキャプチャされたパケットを分析できます。主な機能はデータ パケットを分析することです。

  • ngrep は、キャプチャしたパケット データをテキスト形式で直接表示します。これは、テキストを含むパケット データ (HTTP、MySQL など) の [キャプチャ] 分析に適しています。

2. コマンド オプション

tcpdump [オプション] [プロトコル] [データ フローの方向] [スコープ]

  • -a ネットワーク アドレスとブロードキャスト アドレスを名前に変換します。

  • -A すべてのグループを ASCII 形式で出力し、ヘッダーを最小化します。リンク層

  • #-b ip/arp/rarp/ipx を含むデータリンク層の選択されたプロトコルはすべてこの層にあります

  • -c データ パケットを受信する回数を指定します。つまり、指定された数のデータ パケットを受信したら tcpdump を終了します。

  • -d 人間の情報パケットのコードと一致します。 -readable 形式アセンブリ形式の出力

  • -dd 一致情報パケットのコードを C 言語プログラムセグメントの形式で出力します。

  • -ddd 一致情報パケットのコードを C 言語プログラムセグメントの形式で出力します。 10 進形式

  • -D システムで監視できるすべてのネットワーク インターフェイスを出力します。

  • -e データ リンク層のヘッダー情報を出力します。出力行

  • -f 外部インターネット アドレスを数値形式で出力します。つまり、ホスト名は表示されません。

  • -F指定されたファイルから式を読み取り、他の式を無視します。

  • -i リッスンするネットワーク インターフェイスを指定します。

  • -l 標準出力をバッファリングします。フォーム、データをファイルにエクスポートできます

  • -L ネットワーク インターフェイスの既知のデータ リンクをリストします

  • -n ネットワーク アドレスは変換しませんto names

  • -N はホスト名のドメイン名部分を出力しません。たとえば、www.baidu.com は www

  • のみを出力します。 -nn はポート名を出力しません。 変換

  • -P ネットワーク インターフェイスをプロミスキャス モードに設定しません

  • -q 高速出力。は、少ないプロトコル情報のみを出力します

  • -r 指定されたファイルからデータを読み取り、通常は -w ファイルを保存します

  • -w キャプチャしたファイルを保存します情報はファイルに保存され、解析や画面への出力は行われません。

  • -s は、デフォルトの 68 バイトではなく、最初に各グループから snaplen バイトを読み取ります。

  • -S tcp シーケンス番号を相対値ではなく絶対値として出力します。

  • -T 監視対象のパケットを指定されたメッセージ タイプに直接解析します。一般的なタイプには rpc が含まれます。 (リモート プロシージャ コール) および snmp (簡易ネットワーク管理プロトコル)

  • #-t 出力の各行にタイムスタンプを出力しません

  • - tt 各行にフォーマットされていないタイムスタンプを出力します。

  • -ttt この行と前の行との時間差を出力します。

  • -tttt タイムスタンプを出力します。各行のデータ処理のデフォルト形式

  • ##-u デコードされていない NFS ハンドルを出力
  • -v もう少し詳細な情報を出力します。たとえば、 ip パッケージには ttl およびサービス タイプ情報を含めることができます
  • -vv 信頼できるメッセージ情報を出力します

3. tcpdump 式

データ型に関するキーワード

ホストを含​​む、ポート、ネット:

host 192.168.100.1 はホストを表し、net 192.168.100.0 はネットワーク セグメントを表します。port 80 はポート番号が 80 であることを示します。データ型を指定しない場合は、デフォルトは hostです。

牛逼啊!接私活必备的 N 个开源项目!赶快收藏

データ送信方向のキーワード

src、dst、dst または src、dst、および src が含まれます。これらのキーワードは送信の方向を示します。たとえば、src 192.168.100.1 は、データ パケットの送信元アドレスが 192.168.100.1 であることを示します。 dst net 192.168.100.0 は、宛先ネットワーク アドレスが 192.168.100.0 であることを示します。デフォルトでは、ホストに対するホストの src と dst を監視します。つまり、デフォルトでは、ローカル マシンとターゲット ホストのすべてのデータを監視します。 .
プロトコル キーワード

ip、arp、rarp、udp

を含む

其他关键字

  • 运算类型:or、and、not、!

  • 辅助功能型:gateway、less、broadcast、greater

4、tcpdump 捕获方式

tcpdump [协议类型] [源或目标] [主机名称或 IP] [or/and/not/! 条件组合] [源或目标] [主机名或 IP] [or/and/not/! 条件组合] [端口] [端口号] …… [or/and/not/! 条件组合] [条件]

> tcpdump  ip dst 192.168.10.1 and src 192.168.10.10 and port 80 and host  !www.baidu.com

tcpdump

默认监听在第一块网卡,监听所有经过此网卡的数据包

Linuxネットワークパケットキャプチャ分析ツール
> tcpdump  -i  ens33

监听指定网卡 ens33 的所有传输数据包

Linuxネットワークパケットキャプチャ分析ツール
> tcpdump -i ens33 host 192.168.100.10

捕获主机 192.168.100.10 经过网卡 ens33 的所有数据包(也可以是主机名,但要求可以解析出 IP 地址)

Linuxネットワークパケットキャプチャ分析ツール

Linuxネットワークパケットキャプチャ分析ツール

  • 第一列:报文的时间

  • 第二列:网络协议 IP

  • 第三列:发送方的 ip 地址、端口号、域名,上图显示的是本机的域名,可通过 / etc/hosts 查看本机域名

  • 第四列:箭头 >, 表示数据流向

  • 第五列:接收方的 ip 地址、端口号、域名,

  • 第六列:冒号

  • 第七列:数据包内容,报文头的摘要信息,有 ttl、报文类型、标识值、序列、包的大小等信息

> tcpdump host 192.168.130.151 and  192.168.130.152or192.168.130.153192.168.130.152or192.168.130.153

捕获主机 192.168.56.209 和主机 192.168.56.210 或 192.168.56.211 的所有通信数据包

> tcpdump ip host node9 and not www.baidu.com

捕获主机 node9 与其他主机之间(不包括 www.baidu.com)通信的 ip 数据包

> tcpdump ip host node9 and ! www.baidu.com

捕获 node9 与其他所有主机的通信数据包(不包括 www.baidu.com)

> tcpdump -i ens33 src node10

捕获源主机 node10 发送的所有的经过 ens33 网卡的所有数据包

> tcpdump -i ens33 dst host www.baidu.com

捕获所有发送到主机 www.baidu.com 的数据包

监听主机 192.168.56.1 和 192.168.56.210 之间 ip 协议的 80 端口的且排除 www.baidu.com 通信的所有数据包:

> tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host ! baidu.com

也可以写成 tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host not www.baidu.com,即 not 和!都是相同的取反的意思

> tcpdump arp

监控指定主机的通信数据包与 1.9.1 方式相同

> tcpdump tcp port 22 and host 192.168.56.210

捕获主机 192.168.56.210 接收和发出的 tcp 协议的 ssh 的数据包

tcpdump udp port 53

监听本机 udp 的 53 端口的数据包,udp 是 dns 协议的端口,这也是一个 dns 域名解析的完整过程

5、常用的过滤条件

tcpdump 可以支持逻辑运算符

and: 与运算,所有的条件都需要满足,可用 “and”和 “&&” 表示
or:或运行,只要有一个条件满足就可以,可用 “or” 和“|”表示
not:取反,即取反条件,可以用 “not” 和“!”表示

> tcpdump icmp and src 192.168.100.10 -i ens33 -n

过滤 icmp 报文并且源 IP 是 192.168.100.10

多条件格式
    在使用多个过滤条件进行组合时,有可能需要用到括号,而括号在 shell 中是特殊符号,又需要使用引号将其包含。用括号的主要作用是逻辑运算符之间存在优先级,!>and > or, 为例条件能够精确所以需要对一些必要的组合括号括起来,而括号的意思相当于加减运算一样,括起来的内容作为一个整体进行逻辑运算。

过滤源地址是 192.168.100.1 并且目的地址是 192.168.20.20 的数据包或者 ARP 协议的包。另外,搜索公众号Linux就该这样学后台回复“Linux”,获取一份惊喜礼包。

Linuxネットワークパケットキャプチャ分析ツール

> tcpdump **src** host 192.168.10.10 -i ens33 -n -c 5

过滤源 IP 地址是 192.168.10.10 的包

Linuxネットワークパケットキャプチャ分析ツール

> tcpdump **dst** host 192.168.10.10 -i ens33 -n -c 5

过滤目的 IP 地址是 192.168.10.10 的包

Linuxネットワークパケットキャプチャ分析ツール

基于端口进行过滤

> tcpdump port 22 -i ens33 -n -c 5  
> 过滤端口号为 22 即 ssh 协议的
Linuxネットワークパケットキャプチャ分析ツール
>  tcpdump portrange 22-433 -i ens33 -n -c 8

过滤端口号 22-433 内的数据包

Linuxネットワークパケットキャプチャ分析ツール

二、wireshark

1、什么是 wireshark

Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是捕获网络数据包,并尽可能显示出最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换

2、安装 wireshark

Linux 中有两个版本的 wireshark,一个是 wireshark,这个版本是无图形化界面,基本命令是”tshark“。

一个是 wireshark-gnome(界面版本),这个版本只能安装在支持 GUI 功能的 Linux 的版本中。

> yum -y install wireshark // 安装无图形化版本  
> yum -y install wireshark-gnome // 安装图形化版本
Linuxネットワークパケットキャプチャ分析ツール
Linuxネットワークパケットキャプチャ分析ツール
Linuxネットワークパケットキャプチャ分析ツール

:这里的通过 yum 进行安装,需要提前做好 epel 源(即红帽操作系统额外拓展包),装上了 EPEL 之后,就相当于添加了一个第三方源。官方的 rpm repository 提供的 rpm 包也不够丰富,很多时候需要自己编译那太辛苦了,而 EPEL 可以解决官方 yum 源数据包不够丰富的情况。

安装epel源

>  yum -y install epel-release
Linuxネットワークパケットキャプチャ分析ツール

3、tshark 命令

tshark 是 wireshark 的命令行工具  
     tshark 选项 参数  
    -i:指定捕获的网卡接口,不设置默认第一个非环回口接口  
    -D:显示所有可用的网络接口列表  
    -f:指定条件表达式,与 tcpdump 相同  
    -s:设置每个抓包的大小,默认 65535,多于这个大小的数据将不会不会被截取。  
    -c:捕获指定数量的数据包后退出  
    -w:后接文件名,将抓包的结果输出到. pcap 文件中,可以借助其他网络分析工具进行分              析,也可以使用重定向 > 把解码后的输出结果以 txt 的格式输出。  
    -p:设置网络接口以非混合模式工作,即只关心和本机有关的流量  
    -r:后接文件路径,用于分析保持好的网络包文件,比如 tcpdump 的输出文件  
    -n:禁止所有地址名字解析,即禁止域名解析, 默认是允许所有  
   -N:指定对某一层的地址名字解析,如果 - n 和 - N 同时存在,则 - n 将被忽略,如果两者都不写,则会默认打开所有地址名字解析  
         m:代表数据链路层  
         n:代表网络层  
         t:代表传输层  
    -V:设置将解码结果的细节输出,否则解码结果仅显示一个 packet 一行的 summary  
    -t:设置结果的时间格式  
         ad:表示带日期的绝对时间  
         a:表示不带日期的绝对时间  
         r:表示从第一个包到现在的相对时间  
         d:表示两个相邻包之间的增量时间
tshark -f "icmp" -i ens33 -V -c 1

过滤 icmp 报文,并展开详细信息。另外,搜索公众号编程技术圈后台回复“1024”,获取一份惊喜礼包。

tshark -f "arp" -i ens33

过滤 arp 报文

Linuxネットワークパケットキャプチャ分析ツール
Linuxネットワークパケットキャプチャ分析ツール
#4. グラフィカル インターフェイス

Linuxネットワークパケットキャプチャ分析ツール
Linuxネットワークパケットキャプチャ分析ツール

Linuxネットワークパケットキャプチャ分析ツール

Linuxネットワークパケットキャプチャ分析ツール

3. Tcpdump と Wireshark は一緒に使用されます

Tcpdump は Wireshark の詳細を含まずにメッセージ情報を解析します, そのため、データは Tcpdump を通じてキャプチャおよび出力され、その後 Wireshark を通じて解析されます。出力ファイル形式は .pcap または other

です。

Linuxネットワークパケットキャプチャ分析ツール

仮想マシン上の Wireshark を読み込む

Linuxネットワークパケットキャプチャ分析ツール

Use ip.addr == [IP アドレス番号] OK フィルター無関係な IP

Linuxネットワークパケットキャプチャ分析ツール

グラフィックの読み取り

Linuxネットワークパケットキャプチャ分析ツール
##Wireshark で直接開いて表示

概要

tcpdump と Wireshark は、パケット キャプチャ機能という点では似ています。この 2 つのコマンド ライン オプションも同じですが、tcpdump にはパケットを分析する機能があります。あまり良いとは言えません。同時に、現在、多くの Linux システムには tcpdump ツールが組み込まれているため、tcpdump を使用してデータ パケットをキャプチャし、カスタマイズしたファイル (.pcap) に保存し、ファイルを抽出して Wireshark を使用して分析できます。

############## # #######

以上がLinuxネットワークパケットキャプチャ分析ツールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はLinux中文社区で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。