网络通信故障排查命令
5.1 ifconfig 命令
ifconfig 命令是查看当前系统的网卡和IP地址信息的常用命令。包含ifconfig命令的安装包。
yum install net-tools
查看:
-s
查看精简列表:
-a
显示所有的网卡信息:
激活或者禁用网卡:
ifconfig 网卡名 up
ifconfig 网卡名 down
解绑或者绑定网卡:
# 将指定的IP地址绑定到某一个网卡
ifconfig 网卡名 add IP地址
# 从某一个网卡上解绑指定的IP地址
ifconfig 网卡名 del IP地址
5.2 ping 命令
ping命令用于侦测本机到目标主机的网络通畅度:
使用格式:
ping ip 地址
也可使用域名格式:
ping 域名
5.3 telnet 命令
5.3.1 telnet安装:
yum install telnet
5.3.2 使用
- 检测指定的IP地址和端口号的监听服务是否存在
- telnet ip 地址 端口
- 访问web服务器(支持HTTP协议)
- telnet 域名 端口
- 访问邮箱系统(支持SMTP协议 )
5.4 netstat命令
netstat用于查看网络连接状态,常见的命令选项如下:
选项 | 说明 |
---|---|
-a | 表示所有选项,不使用该选项时,netstat默认不显示LISTEN相关选项 |
-t | 表示仅显示tcp相关选项 |
-u | 仅显示udp相关选项 |
-n | 不显示别名,将能显示数字的全部转换为数字 |
-l | 仅列出处于监听(listen)状态的服务 |
-p | 显示建立相关链接的程序名 |
-r | 显示路由信息、路由表 |
-e | 显示扩展信息,列如uid等 |
-s | 按各个协议进行统计(重要) |
-c | 每隔一个固定的时间执行该netstat命令 |
详细介绍:https://linux.cn/article-2434-1.html
5.5 lsof命令
lsof(list opened filedesciptor,列出已经打开的文件描述符)命令是Linux的扩展命令
5.5.1 lsof命令的基本用法
-
安装
yum install lsof
5.5.2 lsof命令恢复被删除的文件
注意使用lsof命令恢复文件时需要注意:如果想成功恢复文件,则使用文件的进程必须处于存活状态,如果进程已退出或者杀死,就无法用这种方式恢复;使用这种方式恢复的文件后,再次用lsof命令查看时,该文件仍然时delete状态,虽然能够手工恢复,但是进程将不会再使用这个恢复的文件。
5.6 nc命令
nc(netcat)命令,用于再排查网络故障时使用。
常见用途:
- 模拟服务器程序。使用-l 选项(单词listen的首字母)在某一个IP地址和端口上开启一个监听服务,以便让其他客户端连接。
- 模拟一个客户端程序。使用nc命令模拟一个客户端程序时,直接写上IP地址(或者域名,nc命令可以自动解析域名)和端口号即可。
- 客户端:
- 服务器
- 客户端:
- nc命令不禁可以发送消息还能发送文件:
-
服务端:
nc -l IP地址 端口号 > 接收的文件名
-
客户端:
nc IP地址 端口号 > 发送的文件名
详细介绍:https://www.cnblogs.com/machangwei-8/p/10355248.html
-
5.7 tcpdump 命令
tcpdump 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
- 语法:
tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ -Q|-P in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ expression ]
- 参数介绍:
- -A 以ASCII格式打印出所有分组,并将链路层的头最小化。
- -c 在收到指定的数量的分组后,tcpdump就会停止。
- -C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size
的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。 - -d 将匹配信息包的代码以人们能够理解的汇编格式给出。
- -dd 将匹配信息包的代码以c语言程序段的格式给出。
- -ddd 将匹配信息包的代码以十进制的形式给出。
- -D 打印出系统中所有可以用tcpdump截包的网络接口。
- -e 在输出行打印出数据链路层的头部信息。
- -E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。
- -f 将外部的Internet地址以数字的形式打印出来。
- -F 从指定的文件中读取表达式,忽略命令行中给出的表达式。
- -i 指定监听的网络接口。
- -l 使标准输出变为缓冲行形式。
- -L 列出网络接口的已知数据链路。
- -m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。
- -M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。
- -n 不把网络地址转换成名字。
- -N 不输出主机名中的域名部分。例如,link.linux265.com 只输出link。
- -t 在输出的每一行不打印时间戳。
- -O 不运行分组分组匹配(packet-matching)代码优化程序。
- -P 不将网络接口设置成混杂模式。
- -q 快速输出。只输出较少的协议信息。
- -r 从指定的文件中读取包(这些包一般通过-w选项产生)。
- -S 将tcp的序列号以绝对值形式输出,而不是相对值。
- -s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。
- -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。
- -t 不在每一行中输出时间戳。
- -tt 在每一行中输出非格式化的时间戳。
- -ttt 输出本行和前面一行之间的时间差。
- -tttt 在每一行中输出由date处理的默认格式的时间戳。
- -u 输出未解码的NFS句柄。
- -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
- -vv 输出详细的报文信息。
- -w 直接将分组写入文件中,而不是不分析并打印出来。
- -x 以16进制数形式显示每一个报文 (去掉链路层报头) . 可以显示较小的完整报文, 否则只显示snaplen个字节.
- -xx 以16进制数形式显示每一个报文(包含链路层包头)。
- -X 以16进制和ASCII码形式显示每个报文(去掉链路层报头)。
- -XX 以16进制和ASCII吗形式显示每个报文(包含链路层报头)。
- -y 设置tcpdump 捕获数据链路层协议类型
- -Z 使tcpdump 放弃自己的超级权限(如果以root用户启动tcpdump, tcpdump将会有超级用户权限), 并把当前tcpdump的用户ID设置为user, 组ID设置为user首要所属组的ID
-
使用实例:
01、抓取所有网络包,并在terminal中显示抓取的结果,将包以十六进制的形式显示。tcpdump
02、抓取所有的网络包,并存到 result.cap 文件中。
tcpdump -w result.cap
03、抓取所有的经过eth0网卡的网络包,并存到result.cap 文件中。
tcpdump -i eth0 -w result.cap
04、抓取源地址是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump src host 192.168.1.100 -w result.cap
05、抓取地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump host 192.168.1.100 -w result.cap
06、抓取目的地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdump dest host 192.168.1.100 -w result.cap
07、抓取主机地址为 192.168.1.100 的数据包
tcpdump -i eth0 -vnn host 192.168.1.100
08、抓取包含192.168.1.0/24网段的数据包
tcpdump -i eth0 -vnn net 192.168.1.0/24
09、抓取网卡eth0上所有包含端口22的数据包
tcpdump -i eth0 -vnn port 22
10、抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:
tcpdump udp -i eth0 -vnn
11、抓取经过 eth0 网卡的源 ip 是 192.168.1.100 数据包,src参数表示源。
tcpdump -i eth0 -vnn src host 192.168.1.100
12、抓取经过 eth0 网卡目的 ip 是 192.168.1.100 数据包,dst参数表示目的。
tcpdump -i eth0 -vnn dst host 192.168.1.100
13、抓取源端口是22的数据包
tcpdump -i eth0 -vnn src port 22