# Linux下网络管理常用工具

# ip

Ip工具可以查看当台主机的一些基本信息。

## 场景

* **查看基本信息:**查看网络接口、mtu等。
    
* **查看docker虚拟网络相关信息**。
    

# Ping

ping 是 Linux 下一个非常常用且基础的网络工具，用于测试网络连接的可达性。

## 场景

* **测试网络连通性:** 判断本机是否能够到达目标主机。分别ping lo地址、本机对外地址、gateway地址、公网地址，可以一步一步的进行问题的排查。
    
* **测量网络性能:** 查看RTT、丢包等信息，即数据包从发送到接收到回复所花费的时间。
    
* **域名解析验证:** 当使用域名作为目标时，ping 命令会先解析域名为 IP 地址，可以间接验证 DNS 解析是否正常。
    
* **压测:ping** 可以使用-f 进行Flood ping，可以配合-s(设置package size)来进行简单的对目标主机的压测。
    

# Dig

Dig是 Linux 命令行下用于查询 DNS信息的强大工具。dig 允许用户直接与 DNS 服务器交互，查询各种 DNS 记录，并显示从服务器返回的详细信息。

## 场景

* **检查域名是否能够被解析:**这是dig最基本的功能，通过查询 A、AAAA、CNAME 等记录，可以确认域名是否在 DNS 系统中存在并指向正确的 IP 地址或别名。
    
* **查看DNS解析信息:**包括DNS解析时长、最大超时时间等。
    
* **检查指定的 DNS 服务器是否正常工作:**可以通过指定不同的 DNS 服务器进行查询，判断特定的 DNS 服务器是否响应查询或返回正确的结果。
    
* **检查DNS 记录是否正确传播:**在 DNS 记录更新后，可以使用 dig 查询不同的 DNS 服务器，检查新的记录是否已经在全球范围内生效。
    
* **查看DNS解析过程:**DNS 缓存问题可能导致用户无法访问某些网站。使用 dig 的 +trace 选项可以帮助跟踪 DNS 解析过程，查找可能的缓存问题。
    
* **查看DNS策略是否生效:**dig baidu.com的时候可以发现有两个ip地址，可以通过dig来查看DNS 配置策略状态。
    

# nmap

namp是一个网络扫描工具，主要用于发现网络上的主机、探测开放的端口、识别运行的服务以及操作系统类型等。

## 场景

* **端口扫描:**扫描主机的端口，查看是否开放，可以指定全连接或半连接扫描。
    
* **网段范围的主机探测:**本质上是ping命令，但是可以指定范围，通过ip ranges来进行主机的存活探测。
    
* **Flood Testing:**基本原理同ping。
    
* **暴力破解测试:**不细说。
    
* **检测远程主机OS信息(估测)：**原理是根据一些网络协议信息进行os版本的推测。
    

# netstat & ss

## netstat

netstat 用于显示 Linux 系统上的网络连接、路由表、接口统计信息、伪装连接、多播成员关系等。它提供了一个实时的网络活动快照，对于监控网络状态、诊断网络问题以及了解系统上的网络配置非常有用。

## ss

ss 是另一个用于显示 Linux 系统上的套接字统计信息的命令行工具。它被认为是 netstat 的现代替代品，能够显示更多的 TCP 和套接字信息。两个工具在功能上有一些重叠。

## **场景**

* **查看所有活动的网络连接:**显示所有 TCP 和 UDP 连接，以及正在监听的端口;查找占用特定端口的服务。
    
* **查看套接字相关信息:**包括 TCP 窗口大小、拥塞控制算法等。
    

# traceroute

traceroute 是一个网络诊断工具，用于跟踪数据包从计算机到目标主机所经过的路由（路径）。

## 场景

* **诊断网络连接问题:**无法访问某个网站或服务时，traceroute 可以帮助确定问题出在本地网络、ISP 网络还是目标服务器的网络路径上。
    
* **识别网络瓶颈:**观察每个跃点的延迟，可以找到网络中可能导致速度缓慢的瓶颈节点。
    

# speedtest-cli

一个简单的网络测试工具，可以快速获取最近的网络测试节点并且测试网速。

# Vnstat

Vnstat 是一个轻量级的命令行网络流量监控工具。它在后台运行，记录网络接口的接收和发送数据量，并提供各种报告，记录网络的历史使用情况。

## 场景

* **网卡流量监控:**基于proc，针对网卡的流量监控，可以分时进行查询，还可以导出图片进行分析。
    

# nethogs

类似于 top 命令，但专注于按进程实时显示网络带宽使用情况。它可以让你看到哪个进程正在消耗最多的上传和下载带宽。缺点就是不能够查询一些内核级别的进程的通信信息。

## 场景

* **网卡实时流量监控:**针对网卡的实时流量监控，可以达到进程级别。
    

# iftop

实时监控网络接口的带宽使用情况，但它按网络连接（主机对）显示流量，并尝试解析主机名。可以查看哪些主机之间正在进行大量的网络通信。

* **实时流量监控:**针对主机级别的实时流量监控，和nethogs有点类似。
    

# wireshark

一个强大的网络分析可视化工具。

* **详细分析网络协议:** 可以深入分析 TCP/IP 协议栈的各个层次，查看每个数据包的详细头部信息和数据内容。
    
* **性能分析:** 分析网络延迟、丢包、重传等性能指标，帮助优化网络性能。
    

# tcpdump

一个命令行抓包工具。它可以捕获指定接口上的网络数据包，并将数据包信息输出到终端或保存到文件中。

* **作为数据源:** tcpdump 的一个常用的用处就是将dump下的数据导入到wireshark中进行详细分析。tcpdump可以快速抓取数据包。
    
* **数据分析:**可以进行一些简单的数据分析，当然可视化方面还是wireshark比较好。
    

# bcc

BCC 是一个围绕 eBPF 构建的强大工具包，里面有很多关于网络抓包的工具。

没有接触过，皓哥这里有详细的介绍：[https://coolshell.cn/articles/22320.html](https://coolshell.cn/articles/22320.html)

# Reference

* Nmap:[https://www.recordedfuture.com/threat-intelligence-101/tools-and-techniques/nmap-command](https://www.recordedfuture.com/threat-intelligence-101/tools-and-techniques/nmap-commands)
    
* traceroute:[https://support.microsoft.com/en-us/topic/how-to-use-tracert-to-troubleshoot-tcp-ip-problems-in-windows-e643d72b-2f4f-cdd6-09a0-fd2989c7ca8e](https://support.microsoft.com/en-us/topic/how-to-use-tracert-to-troubleshoot-tcp-ip-problems-in-windows-e643d72b-2f4f-cdd6-09a0-fd2989c7ca8e)
    
* tcpdump:[https://www.modb.pro/db/634018](https://www.modb.pro/db/634018)
    
* bcc:[https://www.cnblogs.com/charlieroro/p/13265252.html#bcc%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7](https://www.cnblogs.com/charlieroro/p/13265252.html#bcc%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7)
    
* Vnstat:[https://cgking.gitbook.io/linux/linux/vnstat-tong-ji-fu-wu-qi-wang-ka-liu-liang](https://cgking.gitbook.io/linux/linux/vnstat-tong-ji-fu-wu-qi-wang-ka-liu-liang)
