本文将Linux中使用到的网络问题定位工具进行了初步汇总。
  1. linux nc命令

    NetCat是网络工具中的“瑞士军刀”,短小精悍、功能实用,简单、可靠。可通过TCP或UDP协议传输读写数据。也是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。

  2. 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。

  3. 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
    很好用,这个工具除了用于网络问题诊断也是网络渗透工具。

  4. 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

  5. tracepath

    tracepath命令用来追踪并显示报文到达目的主机所经过的路由信息。
    例如:tracepath www.baidu.com

  6. traceroute

    traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
    traceroute有不同的实现版本:常规的traceroute(基于UDP和ICMP)和tcptraceroute(基于TCP)

  7. mtr

    Mtr是 Linux中的网络连通性判断工具,结合了ping, traceroute,nslookup 的相关特性。
    第一列:显示的是IP地址和本机域名
    第二列:是显示的每个对应IP的丢包率
    第三列:发送数据包的数量
    第四列:显示的最近一次的返回时延
    第五列:是平均值 这个应该是发送ping包的平均时延
    第六列:是最好或者说时延最短的
    第七列:是最差或者说时延最常的
    第八列:是标准偏差

  8. dropwatch

    dropwatch可以明确定位到Linux主机网络层丢包点在哪,对网络来讲可以自证清白。

  9. 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。

  10. iptraf

iptraf是一个基于ncurses的IP局域网监控器,用来生成包括TCP信息、UDP计数、ICMP和OSPF信息、以太网负载信息、节点状态信息、IP校验和错误等等统计数据。如果不加任何命令行选项运行iptraf命令,程序将进入一种交互模式。
  1. 参考
思科CoPP

https://www.cisco.com/c/en/us/about/security-center/copp-best-practices.html