tshark linux_使用TShark在Linux命令行上使用Wireshark

tshark linux

大多数情况下,当我们连接到Internet时,我们不会想到底层的网络协议可以使一切变为可能。 现在,当您阅读本文时,计算机正在交换大量数据包并通过Internet进行传输。

要了解这些协议,您需要一个可以捕获并帮助您分析这些数据包的工具。 Wireshark是一种流行的开源图形用户界面(GUI)工具,用于分析数据包。 但是,它也为喜欢在Linux命令行上工作的人们提供了一个称为TShark的强大命令行实用程序。

要尝试本文中的示例,您需要连接到Internet。 有关TShark命令行选项或标志的任何更改,请参考相应的手册页和在线文档 。 另外,我在这些示例中使用Fedora。


   
   
   
     
     
     
     
[gaurav@testbox ~]$ cat /etc/fedora-release
Fedora release 30 (Thirty)
[gaurav@testbox ~]$

检查您的安装

首先,确保已安装必需的软件包:


   
   
   
     
     
     
     
[gaurav@testbox ~]$ rpm -qa | grep -i wireshark
wireshark-cli-3.0.1-1.fc30.x86_64
[gaurav@testbox ~]$

如果安装了Wireshark软件包,请检查是否安装了TShark实用程序,如果已安装,则检查哪个版本:


   
   
   
     
     
     
     
[gaurav@testbox ~]$ tshark -v
TShark (Wireshark) 3.0.1 (23f278e2)

Built using gcc 9.0.1 20190312 (Red Hat 9.0.1-0.10).
[gaurav@testbox ~]$

如果您以普通的非root用户身份登录,则需要sudo权限才能使用TShark实用程序。 超级用户可以跳过sudo并直接运行tshark命令。

查找可用于TShark的网络设备

在TShark可以分析数据包之前,它需要捕获这些数据包。 网络数据包通过服务器,工作站或台式机上的网络接口卡(NIC)或笔记本电脑上的WiFi卡进行处理。 首先确定用于连接互联网的NIC或WiFi卡。

要确定哪些网络设备可用于TShark,请运行以下命令。 我的笔记本电脑(用于这些示例)显示:


   
   
   
     
     
     
     
[gaurav@testbox ~]$ sudo tshark -D
Running as user "root" and group "root". This could be dangerous.
1. wlp61s0
2. lo (Loopback)
3. any
4. virbr0
5. enp0s31f6
6. bluetooth-monitor
7. nflog
8. nfqueue
[gaurav@testbox ~]$

我正在使用WiFi卡连接到家庭路由器以访问Internet。 您可以使用ifconfig -a命令查看系统上的所有网络接口。 如果未安装ifconfig命令,则可以改用较新的ip addr show命令。 接口之一应分配有一个IP地址。 对于特定的接口,可以使用ifconfig ,例如:

 ifconfig wlp61s0 

捕获一些数据包

既然您知道正在使用哪个接口连接到Internet,就可以开始使用它捕获一些数据包。 -i选项可用于捕获此特定接口上的数据包。 您将看到一堆输出,显示通过接口传输的网络数据包,但是可以使用Ctrl + C命令停止它:


   
   
   
     
     
     
     
[gaurav@testbox ~]$ sudo tshark -i wlp61s0
Running as user "root" and group "root". This could be dangerous.
Capturing on 'wlp61s0'
    1 0.000000000  192.168.1.9 → 192.168.1.1  DNS 77 Standard query 0xa02b AAAA fedoraproject.org
    2 0.000128115  192.168.1.9 → 192.168.1.1  DNS 77 Standard query 0xcc47 A fedoraproject.org
    3 0.000316195  192.168.1.9 → 192.168.1.1  DNS 77 Standard query 0xe29d A fedoraproject.org
    4 0.000616019  192.168.1.9 → 192.168.1.1  DNS 77 Standard query 0xac7c AAAA fedoraproject.org
    5 0.007963200  192.168.1.1 → 192.168.1.9  DNS 93 Standard query response 0xcc47 A fedoraproject.org A 185.141.165.254
    6 0.009171815  192.168.1.1 → 192.168.1.9  DNS 93 Standard query response 0xe29d A fedoraproject.org A 185.141.165.254
    7 0.011075350  192.168.1.1 → 192.168.1.9  DNS 322 Standard query response 0xa02b AAAA fedoraproject.org AAAA 2610:28:3090:3001:dead:beef:cafe:fed3 AAAA 2605:bc80:3010:600:dead:beef:cafe:fed9 AAAA 2604:1580:fe00:0:dead:beef:cafe:fed1 NS ns04.fedoraproject.org NS ns05.fedoraproject.org NS ns02.fedoraproject.org A 152.19.134.139 AAAA 2610:28:3090:3001:dead:beef:cafe:fed5 A 209.132.181.17 A 85.236.55.10 AAAA 2001:4178:2:1269:dead:beef:cafe:fed5
    8 0.012458151  192.168.1.1 → 192.168.1.9  DNS 322 Standard query response 0xac7c AAAA fedoraproject.org AAAA 2605:bc80:3010:600:dead:beef:cafe:fed9 AAAA 2610:28:3090:3001:dead:beef:cafe:fed3 AAAA 2604:1580:fe00:0:dead:beef:cafe:fed1 NS ns05.fedoraproject.org NS ns02.fedoraproject.org NS ns04.fedoraproject.org A 152.19.134.139 AAAA 2610:28:3090:3001:dead:beef:cafe:fed5 A 209.132.181.17 A 85.236.55.10 AAAA 2001:4178:2:1269:dead:beef:cafe:fed5
^C8 packets captured
[gaurav@testbox ~]$

查看上面的前两个数据包; 它们在行的开头用数字表示:


   
   
   
     
     
     
     
1 0.000000000  192.168.1.9 → 192.168.1.1  DNS 77 Standard query 0xa02b AAAA fedoraproject.org
2 0.000128115  192.168.1.9 → 192.168.1.1  DNS 77 Standard query 0xcc47 A fedoraproject.org

这些行在箭头的两侧包括两个IP地址-这些是交换数据包的主机。 箭头的方向指示数据包的前进方向。 因此, 192.168.1.9→192.168.1.1表示该数据包起源于主机192.168.1.9 ,这是我的笔记本电脑,并且到达目的地192.168.1.1 ,这是我的家庭路由器。 在目标IP地址之后,您会看到DNS ,它只是域名系统协议,后面是DNS查询。 以后再说。

您可以使用-c (计数)选项限制捕获并显示在屏幕上的数据包数量。 以下示例显示了捕获的10个数据包。 注意协议,您已经在上面看到了DNS,这里还有其他协议,例如NTP和TCP:


   
   
   
     
     
     
     
[gaurav@testbox ~]$ sudo tshark -i wlp61s0 -c 10
Running as user "root" and group "root". This could be dangerous.
Capturing on 'wlp61s0'
    1 0.000000000  192.168.1.9 → 10.5.26.10   NTP 90 NTP Version 4, client
    2 0.803303963  192.168.1.9 → 10.5.27.10   NTP 90 NTP Version 4, client
    3 3.524867645  192.168.1.9 → 192.168.1.1  DNS 69 Standard query 0x3837 A testbox
    4 6.227373094  192.168.1.9 → 192.168.1.1  DNS 89 Standard query 0x0814 A location.services.mozilla.com
    5 6.227395145  192.168.1.9 → 192.168.1.1  DNS 89 Standard query 0x5e1c AAAA location.services.mozilla.com
    6 6.234878912  192.168.1.1 → 192.168.1.9  DNS 105 Standard query response 0x0814 A location.services.mozilla.com A 34.253.23.107
    7 6.238110416  192.168.1.1 → 192.168.1.9  DNS 223 Standard query response 0x5e1c AAAA location.services.mozilla.com CNAME locprod1-elb-eu-west-1.prod.mozaws.net SOA ns-1260.awsdns-29.org
    8 6.238446999  192.168.1.9 → 34.253.23.107 TCP 74 35326 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=2832002333 TSecr=0 WS=128
    9 6.438833991 34.253.23.107 → 192.168.1.9  TCP 74 443 → 35326 [SYN, ACK] Seq=0 Ack=1 Win=26847 Len=0 MSS=1440 SACK_PERM=1 TSval=2056252981 TSecr=2832002333 WS=256
   10 6.438947001  192.168.1.9 → 34.253.23.107 TCP 66 35326 → 443 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=2832002533 TSecr=2056252981
10 packets captured
[gaurav@testbox ~]$

DNS协议将主机名转换为IP地址,并将IP地址转换为主机名。 有专用的DNS(或名称)服务器,您可以使用主机名或IP地址进行查询。 下面的示例使用nslookup命令来查询名称服务器,以将主机名解析为IP地址。 在继续之前,请确保已安装bind-utils软件包:


   
   
   
     
     
     
     
[gaurav@testbox ~]$ rpm -qa | grep -i bind-utils
bind-utils-9.11.5-13.P4.fc30.x86_64
[gaurav@testbox ~]$

为了查询您的名称服务器,您需要找出您的计算机正在与哪台服务器进行通信。 您可以在/etc/resolv.conf文件中找到该信息。 在我的情况下,名称服务器指向1.1.1.1 ,这是Cloudflare提供的公共DNS服务:


   
   
   
     
     
     
     
[gaurav@testbox ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 1.1.1.1
[gaurav@testbox ~]$

诸如Opensource.com这样的主机名对于人类来说很容易理解,但是机器使用

你可能感兴趣的:(网络,linux,java,大数据,python)