今天浩道跟大家分享linux网络运维中常见的命令,掌握好这些命令,在排查故障时将会游刃有余!
tcpdump和ethereal可以用来获取和分析网络通讯活动,他们都是使用libpcap库来捕获网络封包的。
在混杂模式下他们可以监控网络适配器的所有通讯活动并捕获网卡所接收的所有帧。
要想设置网络接口为混杂模式并执行这些命令来捕获所有的网络封包,需要具有超级用户的权限。
你可以使用这些工具来探究网络相关问题。你可以发现TCP/IP重发、窗口大小的缩放、名字解析的问题、网络配置错误等。
注意这些工具只能监控网络适配器所接收到的帧,并不能监控到整个网络的通讯情况。
参数介绍:
-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-wresult.cap
03、抓取所有的经过eth0网卡的网络包,并存到 result.cap 文件中。
tcpdump-ieth0-wresult.cap
04、抓取源地址是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdumpsrchost192.168.1.100-wresult.cap
05、抓取地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdumphost192.168.1.100-wresult.cap
06、抓取目的地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。
tcpdumpdesthost192.168.1.100-wresult.cap
07、抓取主机地址为192.168.1.100的数据包
tcpdump-ieth0-vnnhost192.168.1.100
08、抓取包含192.168.1.0/24网段的数据包
tcpdump-ieth0-vnnnet192.168.1.0/24
09、抓取网卡eth0上所有包含端口22的数据包
tcpdump-ieth0-vnnport22
10、抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:
tcpdumpudp-ieth0-vnn
11、抓取经过eth0网卡的源ip是192.168.1.100数据包,src参数表示源。
tcpdump-ieth0-vnnsrchost192.168.1.100
12、抓取经过eth0网卡目的ip是192.168.1.100数据包,dst参数表示目的。
tcpdump-ieth0-vnndsthost192.168.1.100
13、抓取源端口是22的数据包
tcpdump-ieth0-vnnsrcport22
14、抓取源ip是192.168.1.100且目的ip端口是22的数据包
tcpdump-ieth0-vnnsrchost192.168.1.100anddstport22
15、抓取源ip是192.168.1.100或者包含端口是22的数据包
tcpdump-ieth0-vnnsrchost192.168.1.100orport22
16、抓取源ip是192.168.1.100且端口不是22的数据包
tcpdump-ieth0-vnnsrchost192.168.1.100andnotport22
17、抓取源ip是192.168.1.100且目的端口是22,或源ip是192.168.1.102且目的端口是80的数据包。
tcpdump-ieth0-vnn(srchost192.168.1.100anddstport22)or(srchost192.168.1.102anddstport80)
18、把抓取的数据包记录存到/tmp/result文件中,当抓取100个数据包后就退出程序。
tcpdump–ieth0-vnn-w/tmp/result-c100
19、从/tmp/result记录中读取tcp协议的数据包
tcpdump-ieth0tcp-vnn-r/tmp/result
20、想要截获所有192.168.1.100的主机收到的和发出的所有的数据包:
tcpdumphost192.168.1.100
21、如果想要获取主机192.168.1.100除了和主机192.168.1.101之外所有主机通信的ip包,使用命令:
tcpdumpiphost192.168.1.100and!192.168.1.101
22、如果想要获取主机192.168.1.100接收或发出的 telnet 包,使用如下命令:
tcpdumptcpport23host192.168.1.100
#查看http请求的header
tcpdump-s1024-l-A-nhost192.168.9.56
tcpdump-s1024-l-Asrc192.168.9.56ordst192.168.9.56
sudotcpdump-A-s1492dstport80
#本地网络中IP地址为192.168.0.5的主机现在与外界通信的情况
sudotcpdump-ieth0srchost192.168.0.5
#查看网卡eth0的http请求的tcp包
tcpdump-ieth0porthttp
tcpdump-ieth0porthttporportsmtporportimaporportpop3-l-A|egrep-i'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass|user'
#查看tcp,upd,icmp非ssh的包
tcpdump-n-vtcporudporicmpandnotport22
#查看http请求的request包
sudotcpdump-ieth0port80-w-
#过滤http响应的gethost头信息
sudotcpdump-ien1-n-s0-w-|grep-a-o-E"GET/.*|Host:.*"
#DNS查询请求响应包
sudotcpdump-ien0'udpport53'
#nmap-sP指定使用Pingecho进行扫描/24查看目的网络有多少主机处于运行状态
nmap-sP192.168.0.1
nmap-sP192.168.0.0/24
nmap-Owww.baidu.com
#Netstat主要用于Linux/Unix主机察看自身的网络状况,如开启的端口、在为哪些用户服务以及服务的状态
netstat-a
netstat-nlp
#netcat扫描机器开放的端口
nc-z-v-n172.31.100.721-25
#netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。
nc-v172.31.100.721
#输出网络的路由表
route
#显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。
uptime
#监控eth1的网卡的流量
iftop-ieth1
#以位元组(bytes即字节)为单位显示流量(预设是位元bits):
iftop-B
#直接显示IP,不进行DNS反解:
iftop-n
#直接显示连接埠编号,不显示服务名称:
iftop-N
#显示某个网段进出封包流量
iftop-F192.168.1.0/24or192.168.1.0/255.255.255.0
#网络流量实时监控工具之nload,查看网卡eth0的流量
nload-neth0
#查看各个网卡的流量
nload-h
#IPTraf是一个网络监控工具,功能比nload更强大,可以监控所有的流量,IP流量,按协议分的流量,还可以设置过滤器
iptraf
#查看网络接口当前配置与接口命名:
ifconfig
#打开(up)或关闭(down)适配器
ifconfig<网络名>
#为适配器分配IP地址:
ifconfig<网络名>
#为适配器分配第二个IP地址:
ifconfig<网络名:实例数>
#显示某个网络适配器的驱动信息,适用于查询软件兼容性的情况:
ethtool-ieth0
#显示网络数据:
ethtool-S
#设置适配器连接速度(Mbps)
ethtoolspeed<10|100|1000>
#iwconfig 查基本的Wi-Fi网络设置,如SSID、channel和加密等细节。此外还可以修改一些高级设置,包括接收敏感度,RTS/CTS,碎片,以及重试数
#显示当前无线设置,包括接口名称:
iwconfig
#设置ESSID(扩展服务设置识别器)或网络名:
iwconfig<接口名>essid<网络名>
#wget
wget-S--spiderhttp://osswin.sourceforge.net/2>&1|grepMod
#查看mac地址
cat/sys/class/net/*/address
#查看eth0的ip
ifconfigeth0|awk'/inetaddr/{split($2,A,":");printA[2]}'
#curl查看页面对应的domailname
curl-shttp://en.m.wikipedia.org/wiki/List_of_Internet_top-level_domains|sed-n'/<trvalign="top">/{s/<[^>]*>//g;p}'
#talnet
telnetlocalhost6666
#查看所有的网络接口
awk'{print$1}'/proc/net/dev|grep:|sed"s/:.*//g"
#查看DNSserver版本好
nslookup-q=txt-class=CHAOSversion.bindNS.PHX5.NEARLYFREESPEECH.NET
审核编辑 :李倩
-
适配器
+关注
关注
8文章
1928浏览量
67881 -
Linux
+关注
关注
87文章
11217浏览量
208827 -
网络通讯
+关注
关注
0文章
74浏览量
11245
原文标题:掌握这些linux网络排查命令,故障排查不求人!
文章出处:【微信号:浩道linux,微信公众号:浩道linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论