本文将Linux中使用到的网络问题定位工具进行了初步汇总。
-
linux nc命令
NetCat是网络工具中的“瑞士军刀”,短小精悍、功能实用,简单、可靠。可通过TCP或UDP协议传输读写数据。也是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。
-
Tcpdump命令
常用的关键字有如下:
type: host, net, port, portrange
direction: src, dst, src or dst, src and dst
protocol: ether, ip, arp, tcp, udp, wlan
组合条件:
and
or
not
具体的可以帮助手册,此处不展开了。
例如抓取目标端口tcp协议端口80:
tcpdump -i eth0 tcp dst port 80
显示包的内容参数-vvx。 -
Nmap
nmap是一款非常实用的扫描工具
扫描特定主机:#nmap 192.168.1.2
扫描整个子网:#nmap 192.168.1.1/24
扫描多个目标:#nmap 192.168.1.2 192.168.1.5
扫描一个范围内主机:#nmap 192.168.1.1-100
向目标发送两个ping数据包:#nmap -sn -PE --send-ip 192.168.1.1
其中-sn表示Ping Scan
其中-PE/PP/PM表示ICMP echo, timestamp, and netmask request discovery probes
很好用,这个工具除了用于网络问题诊断也是网络渗透工具。 -
Netstat
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等。
常用参数如下:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
列出所有端口 netstat -a
列出所有 tcp 端口 netstat -at
列出所有 udp 端口 netstat -au
显示所有端口的统计信息 netstat -s
显示核心路由信息 netstat -r
找出程序运行的端口netstat -ap | grep ssh -
tracepath
tracepath命令用来追踪并显示报文到达目的主机所经过的路由信息。
例如:tracepath www.baidu.com -
traceroute
traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
traceroute有不同的实现版本:常规的traceroute(基于UDP和ICMP)和tcptraceroute(基于TCP) -
mtr
Mtr是 Linux中的网络连通性判断工具,结合了ping, traceroute,nslookup 的相关特性。
第一列:显示的是IP地址和本机域名
第二列:是显示的每个对应IP的丢包率
第三列:发送数据包的数量
第四列:显示的最近一次的返回时延
第五列:是平均值 这个应该是发送ping包的平均时延
第六列:是最好或者说时延最短的
第七列:是最差或者说时延最常的
第八列:是标准偏差 -
dropwatch
dropwatch可以明确定位到Linux主机网络层丢包点在哪,对网络来讲可以自证清白。
-
socat
socat是一个多功能的网络工具,名字来由是“Socket CAT”,可以看作是netcat的N倍加强版。
echo hello | socat - udp4-datagram:11.142.172.96:5060
可以直接发送UDP包
如果往本地UDP端口发送数据可以使用以下命令:
echo -n “hello” > /dev/udp/192.168.1.81/5060
往本地192.168.1.81的5060端口发送数据包hello。
如果往远程UDP端口发送数据,可以使用以下命令:
echo “hello” | socat - udp4-datagram:192.168.1.80:5060
意思是往192.168.1.80的5060端口发送数据包hello。 -
iptraf
iptraf是一个基于ncurses的IP局域网监控器,用来生成包括TCP信息、UDP计数、ICMP和OSPF信息、以太网负载信息、节点状态信息、IP校验和错误等等统计数据。
如果不加任何命令行选项运行iptraf命令,程序将进入一种交互模式。
- 参考
思科CoPP
https://www.cisco.com/c/en/us/about/security-center/copp-best-practices.html