LEMON

记录站

0%

Linux常用网络工具

Linux 常用网络工具

网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,查看 linux 的服务器信息等。下面让我们看看在 Linux 下的网络和监控命令的使用。

一、ping

ping 将数据包发向用户指定地址。当包被接收,目标机器发送返回数据包。

主要有两个作用:

  • 用来确认网络连接是畅通的。
  • 用来查看连接的速度信息。

如果 ping www.baidu.com 它将返回它的 ip 地址 。你可以通过 ctrl+C 来停止命令。

7wwuJY

补充:-c 参数可以定义 ping 的次数,脚本中的网络判断用得比较多,比如 ping -c 4 www.baidu.com就是 ping 百度四次;而在 windows 下,则使用-n 参数来定义 ping 次数,如 ping -n 4 www.baidu.com

6nYq0G

二、ifconfig

查看用户网络配置。它显示当前网络设备配置。对于需要接收或者发送数据错误查找,这个工具极为好用。

ifconfig 列出当前节点的所有网络设备

vpQfo7

列出指定的网卡信息

vBcj89

Ps 在Windows下 用的 ipconfig

PehFAC

三、telnet

通过 telnet 协议连接目标主机,如果 telnet 连接可以在任一端口上完成即代表着两台主机间的连接良好。

1
telnet hostname port – 使用指定的端口 telnet 主机名。这通常用来测试主机是否在线或者网络是否正常。

fFkXYW

Ps 此命令在 Windows 下同样适用。

四、ethtool

ethtool 允许你查看和更改网卡的许多设置(不包括 Wi-Fi 网卡)。你可以管理许多高级设置,包括 tx/rx、校验及网络唤醒功能。

1
2
3
ethtool -i <网卡设备>    # 显示一个特定网卡的驱动信息,检查软件兼容性时尤其有用

ethtool -p <网卡设备> # 启动一个适配器的指定行为,比如让适配器的 LED 灯闪烁,以帮助你在多个适配器或接口中标识接口名称

五、nslookup

查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。

主要是下面的几个用法:

1、直接查询域名情况

1
格式:nslookup domain [dns-server]  # 如果没有指定dns服务器,就采用系统默认的dns服务器。

tVvU5s

MbRqco

2、查询其他记录类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
格式:nslookup -qt = type domain [dns-server]

参数:
A -->地址记录
AAAA -->地址记录
AFSDB Andrew -->文件系统数据库服务器记录
ATMA -->ATM地址记录
CNAME -->别名记录
HINHO -->硬件配置记录,包括CPU、操作系统信息
ISDN -->域名对应的ISDN号码
MB -->存放指定邮箱的服务器
MG -->邮件组记录
MINFO -->邮件组和邮箱的信息记录
MR -->改名的邮箱记录
MX -->邮件服务器记录
NS --> 名字服务器记录
PTR ->反向记录
RP -->负责人记录
RT -->路由穿透记录
SRV -->TCP服务器信息记录
TXT -->域名对应的文本信息
X25 -->域名对应的X.25地址记录

六、route

1、概述

route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

在Linux系统中, 设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中, 局域网中有一个网关, 能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。

要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;要想永久保存,可以保存到配置文件。

linux 默认只支持一条默认路由,当重新启动网口时,会把其他默认路由去掉,只剩下一条该网口生成的默认路由。当然可以通过 route 命令手动添加多条默认路由,如果多条路由一样,则选择最开始找到的路由(排在前面的路由)。

2、route命令详解

2.1 命令格式

1
2
3
4
5
6
route [-CFvnee]

route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N]
[mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]
route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
route [-V] [--version] [-h] [--help]

2.2 常用选项参数

选项

参数 说明
-C 显示路由缓存
-F 显示发送信息
-v 显示详细的处理信息
-n 不解析名字
-ee 使用更详细的资讯来显示
-V 显示版本信息
-net 到一个网络的路由表
-host 到一个主机的路由表

参数

参数 说明
add 增加路由记录
del 删除路由记录
target 目的网络或目的主机
gw 设置默认网关。gateway 的简写,后续接的是 IP 的数值
mss 设置TCP的最大区块长度(MSS),单位MB
window 指定通过路由表的TCP连接的TCP窗口大小
de 如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
reject 设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达

2.3 常用命令格式

添加和删除路由

1
2
3
4
5
6
7
8
route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]

增加 (add) 与删除 (del) 路由的相关参数:
(a) -net :表示后面接的路由为一个网域。
(b) -host :表示后面接的为连接到单部主机的路由。
(c) netmask :与网域有关,可以设定 netmask 决定网域的大小。
(d) gw :gateway 的简写,后续接的是 IP 的数值,与 dev 不同。
(e) dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等。

查询路由信息

1
2
3
4
route -nee

(a) -n:不要使用通讯协定或主机名称,直接使用 IP 或 port number。
(b) -ee:使用更详细的资讯来显示。

添加/删除默认网关路由

1
2
3
4
5
6
7
route {add | del } default gw {IP-ADDRESS} {INTERFACE-NAME}

(a) IP-ADDRESS:用于指定路由器(网关)的IP地址。
(b) INTERFACE-NAME:用于指定接口名称,如eth0。

例1:route add default gw 192.168.1.1 eth0
例2:route del default gw 192.168.1.1 eth0

添加/删除到指定网络的路由规则

1
route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}(a) NETWORK-ADDRESS:用于指定网络地址。(b) NETMASK:用于指定子网掩码。(c) INTERFACE-NAME:用于指定接口名称,如eth0。例1:route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0例2:route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0

添加/删除路由到指定网络为不可达

1
2
3
4
5
6
7
8
## 设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。
route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} reject

(a) NETWORK-ADDRESS:用于指定网络地址。
(b) NETMASK:用于指定子网掩码。

例1:route add -net 10.0.0.0 netmask 255.0.0.0 reject
例2:route del -net 10.0.0.0 netmask 255.0.0.0 reject

2.4 输出详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 ens32
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

## 这里会发现后两个169.254.0.0的路由,这个地址原来是windows下的机器dhcp获取ip失效的时候,预设的一个ip地址段,可能是linux照搬来了吧.其实那个地址存在也无所谓,不能在互联网上用的,过修改/etc/sysconfig/network,在文件结尾添加
NOZEROCONF=yes重启网络服务就行了

[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32
字段 说明
Destination 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关
Gateway 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关。如果没有就显示星号(*)
Genmask Destination字段的网络掩码, Destination 是主机时需要设为 255.255.255.255, 是默认路由时会设置为 0.0.0.0
Flags 标记:U 该路由可以使用】,【R 恢复动态路由产生的表项】,【D 该路由是由改变路由(redirect)报文创建的】,【M 该路由已被改变路由报文修改】,【**!** 这个路由将不会被接受】,【G 该路由是到一个网关 (路由器)。如果没有设置该标志,说明目的地 是直接相连的】
Metric 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的
Ref 路由项引用次数
Use 此路由项被路由软件查找的次数
Iface 网卡名字,例如 ens32

3、实例分析

3.1 路由选择分析

当TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:

(1) TCP/IP使用需要通信的目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项。

(2) 当计算完路由表中所有的路由项后:

  • TCP/IP选择记录下的路由项中的最长匹配路由(网络掩码中具有最多 “1” 位的路由项)来和此目的IP地址进行通信。
  • 如果存在多个最长匹配路由,那么选择具有最低跃点数的路由项。
  • 如果存在多个具有最低跃点数的最长匹配路由,那么:均根据最长匹配路由所对应的网络接口在网络连接的高级设置中的绑定优先级来决定(一般有线(eth0) > 无线 (wlan0) > 移动信号(4G))。
  • 如果优先级一致,则选择最开始找到的最长匹配路由。(排在前面的路由)

3.2 验证分析

(1) 验证:traceroute www.baidu.com

通过路由表可以知道这个数据包到底是在那个路由网关出去的,我这里显示的是1.1这个路由网关出去的

1
2
3
4
5
6
7
8
9
10
[root@host01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.886 ms 1.509 ms 1.547 ms

[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

(2) 删除1.1这个路由网关,验证这个数据包还能否出去

重新添加路由后,我们通过路由表可以知道有两条相同默认路由可以选择,由于先找到192.168.1.1 网关路由,所以最后选择了 192.168.1.1 网关。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32
[root@host01 ~]#
[root@host01 ~]# route del default gw 192.168.1.1
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

[root@host01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
connect: 网络不可达

[root@host01 ~]# route add default gw 192.168.1.1
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

[root@host01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.937 ms 1.955 ms 1.907 ms

3.3 添加和删除路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32
[root@host01 ~]#
[root@host01 ~]# route del default gw 192.168.1.1
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

[root@host01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
connect: 网络不可达

[root@host01 ~]# route add default gw 192.168.1.1
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

[root@host01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.937 ms 1.955 ms 1.907 ms

3.4 默认路由网关

增加默认路由的方法!而且网关只要有一个就够了!

注意:添加网关的前提是你必须有这个网段,如果没有,时添加不了的!示例如下:

1
2
3
# 因为我没有3.0网段,所以添加网关的时候系统会提示网络不可达
[root@host01 ~]# route add default gw 192.168.3.1
SIOCADDRT: 网络不可达
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32
[root@host01 ~]#
[root@host01 ~]# route del default gw 192.168.1.1
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

[root@host01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
connect: 网络不可达

[root@host01 ~]# route add default gw 192.168.1.1
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

[root@host01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.937 ms 1.955 ms 1.907 ms

3.5 添加带metric的路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

[root@host01 ~]# route add default gw 192.168.2.222 dev ens32 metric 99
[root@host01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens34
0.0.0.0 192.168.2.222 0.0.0.0 UG 99 0 0 ens32
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32

七、tcpdump

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

1、语法选项

语法

1
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

选项

参数 说明
-a 尝试将网络和广播地址转换成名称。
-A 以ASCII格式打印出所有分组,并将链路层的头最小化。
-c <数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;
-f 用数字显示网际网络地址。
-F <表达文件> 指定内含表达方式的文件。
-i <网络界面> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-nn 将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示。(-n 不把网络地址转换成名字)
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r <数据包文件> 从指定的文件读取数据包数据。
-s <数据包大小> 设置每个数据包的大小, 0表示包不截断, 抓完整的数据包。默认的话 tcpdump 只显示部分数据包, 默认68字节。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T <数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。(一般使用 -vv 更详细显示指令执行过程。)
-X 把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示)。
-w <数据包文件> 直接将包写入文件中,并不分析和打印出来。

2、条件表达式

该表达式用于决定哪些数据包将被打印。如果不给定条件表达式,网络上所有被捕获的包都会被打印。否则,只有满足条件表达式的数据包被打印.(nt: all packets, 可理解为,所有被指定接口捕获的数据包)。

表达式由一个或多个表达元组成(nt:primitive,表达元,可理解为组成表达式的基本元素)。一个表达元通常由一个或多个修饰符(qualifiers)后跟一个名字或数字表示的id组成(nt:即 qualifiers id )。有三种不同类型的修饰符:type、dir以及 proto。

type 修饰符指定id 所代表的对象类型, id可以是名字也可以是数字.

1
2
3
4
5
可选的对象类型有: host, net, port 以及portrange(nt: host 表明id是主机, net 表明id是网络, port 表明id是端口,而portrange 表明id 是一个端口范围);

如, 'host foo', 'net 128.3', 'port 20', 'portrange 6000-6008'(nt: 分别表示主机 foo,网络 128.3, 端口 20, 端口范围 6000-6008).;

如果不指定type 修饰符, id默认的修饰符为host;

dir 修饰符描述id 所对应的传输方向, 即发往id 还是从id 接收(nt: 而id 到底指什么需要看其前面的type 修饰符)。

1
2
3
4
5
可取的方向为: src, dst, src or dst, src and dst.(nt:分别表示, id是传输源, id是传输目的, id是传输源或者传输目的, id是传输源并且是传输目的);

例如, 'src foo','dst net 128.3', 'src or dst port ftp-data'.(nt: 分别表示符合条件的数据包中, 源主机是foo, 目的网络是128.3, 源或目的端口为 ftp-data);

如果不指定dir修饰符, id 默认的修饰符为src or dst;

proto 修饰符描述id 所属的协议. 可选的协议有: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp以及 upd.

1
2
3
4
5
6
7
8
9
(nt | rt: ether, fddi, tr, 具体含义未知, 需补充. 可理解为物理以太网传输协议, 光纤分布数据网传输协议,以及用于路由跟踪的协议;

wlan, 无线局域网协议; ip,ip6 即通常的TCP/IP协议栈中所使用的ipv4以及ipv6网络层协议;

arp, rarp 即地址解析协议,反向地址解析协议;

decnet, Digital Equipment Corporation开发的, 最早用于PDP-11 机器互联的网络协议;

tcp and udp, 即通常TCP/IP协议栈中的两个传输层协议);

表达式顺序:proto > dir > type

1
2
3
4
5
对于修饰符后跟id 的格式,可理解为 type id 是对包最基本的过滤条件:即对包相关的主机,网络,端口的限制;dir 表示对包的传送方向的限制;proto表示对包相关的协议限制

表达元之间还可以通过关键字and,or 以及 not 进行连接,从而可组成比较复杂的条件表达式。比如,host foo and not port ftp and not port ftp-data (nt:其过滤条件可理解为,数据包的主机为foo,并且端口不是ftp(端口21) 和ftp-data(端口20,常用端口和名字的对应可在linux 系统中的/etc/service 文件中找到))。

为了表示方便, 同样的修饰符可以被省略, 如 tcp dst port ftp or ftp-data or domain 与以下的表达式含义相同 tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain。(nt:其过滤条件可理解为:包的协议为tcp,目的端口为ftp 或 ftp-data 或 domain(端口53) )。

3、常用示例

查看当前机器有哪些网络接口

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@k8s-master-192 ~]# tcpdump -D
1.eth0
2.docker0
3.cni0
4.nflog (Linux netfilter log (NFLOG) interface)
5.nfqueue (Linux netfilter queue (NFQUEUE) interface)
6.flannel.1
7.usbmon1 (USB bus number 1)
8.veth65a0cd7a
9.any (Pseudo-device that captures on all interfaces)
10.lo [Loopback]

# 下面所有测试中都有 -i any的选项,表示抓取所有网络接口上的包,为了让测试方便

针对指定主机抓包

1
tcpdump -i any -n -nn host 192.168.1.10 -w ./$(date +%Y%m%d%H%M%S).pcap

针对指定端口抓包

1
tcpdump -i any -n -nn port 80 -w ./$(date +%Y%m%d%H%M%S).pcap

针对主机和端口抓包,两者关系 and

1
tcpdump -i any -n -nn host 192.168.1.10 and port 80 -w ./$(date +%Y%m%d%H%M%S).pcap

针对多个端口抓包

1
tcpdump -i any -n -nn port 111 or port 443

针对多个主机抓包

1
tcpdump -i any -n -nn host www.baidu.com or www.360.com

抓取访问destination 443端口的包

1
2
3
4
tcpdump -i any -n dst port 443         # 然后做一个curl https://www.baidu.com的操作
…………
15:11:43.007067 IP 10.244.0.4.46484 > 10.96.0.1.https: Flags [.], ack 507, win 1393,length 0
…………

抓取源端口是80的包

1
tcpdump -i any -nn src port 80

抓取源或者目标端口都是80的包

1
tcpdump -i any -n -nn port 80

抓取源的端口是20-80的包

1
tcpdump -i any -n src portrange 20-80

抓取端口是20-80的包,不考虑源或目标

1
tcpdump -i any -n portrange 20-80

抓取destination为 www.baidu.com 的包

1
tcpdump -i any dst www.baidu.com        # 然后ping www.baidu.com ,以及 curl www.baidu.com

抓取destination为192.168.1.[0-255]的包

1
tcpdump -i any -n -nn dst 192.168.1     # 可以指定范围  ★★★★★ 注意用法  不是一个完整的IP地址

抓取source为192.168.. 的包

1
tcpdump -i any -n -nn src host 192.168  # 等价于 tcpdump -i any -n -nn src 192.168

抓取192.168的包(不管是source还是destination )

1
tcpdump -i any -n -nn host 192.168 

抓取包长度小于800的包

1
tcpdump -i any -n -nn less 800

抓取包长度大于800的包

1
tcpdump -i any -n -nn greater 800

只抓取tcp包

1
tcpdump -i any -n tcp

只抓取udp包

1
tcpdump -i any -n udp

只抓取icmp的包,internet控制包

1
tcpdump -i any -n icmp
-------------本文结束感谢您的阅读-------------