搜集一些常用的网络命令工具,以供查阅备忘,命令选项和说明写得并不齐全还请见谅。
推荐访问:

  1. Linux命令大全_菜鸟教程
  2. windows命令|Microsoft Learn

命令速览

Linux和Windows命令存在差异的书写为 Linux command [Windows command],没有特殊说明时,命令详解均为Linux环境下的指令,Windows下选项操作以及特性会特别标明。

  1. ping 测试工具双端通信是否正常
  2. ip 强化网络工具
    • ifconfig [ipconfig] 检查设备网络配置
    • arp 地址转换协议
  3. traceroute [tracert] 从A主机跟踪到任意B主机之间的路由
  4. netstat 显示网络状态
  5. nslookup 域名解析查询工具

1. ping

ping 命令用于检测与另一主机之间的网络连接。执行ping指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

语法

ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

常用参数

  • -c <次数> 设置要求回应的次数(ping -c 4 0.0.0.0)
  • -i <秒> 指定收发信息的间隔时间,单位秒(ping -i 3 0.0.0.0)
  • -t <存活数> 指定存活数值TTL的大小

Windows下特性

  • Windows Ping默认发包4次,使用-t选项持续Ping目标主机
  • ping -h直接查看中文说明(不是我偷懒)

2. ip

ip 命令是 Linux 加强版的的网络配置工具,用于代替 ifconfig 命令。所以我们不再着重介绍ifconfig的相关特性。

ip命令非常强大,建议参看Linux ip命令_菜鸟教程或者使用man ip深入学习ip命令用法。

ip 语法

ip [ OPTIONS ] OBJECT { COMMAND | help }

常用参数

OBJECT为常用对象,常用取值包括:

  • link:网络设备(查看、修改网卡配置)
  • addr/address:当前设备上IP或IPv6网络连接配置信息(ip addr命令替代了ifconfig的作用)
  • addrlabel:协议地址选择的标签配置
  • route:路由表条目(ip route命令替代了arp的作用)
  • rule:路由策略数据库中的规则

OPTIONS为常用选项,常用取值包括:

  • -V:显示命令的版本信息;
  • -s:输出更详细的信息;
  • -4:指定使用的网络层协议是IPv4协议;
  • -6:指定使用的网络层协议是IPv6协议;
  • -0:输出信息每条记录输出一行,即使内容较多也不换行显示;
  • -r:显示主机时,不使用IP地址,而使用主机的域名。
  • help 为该命令的帮助信息。

ip 常用方法

除了ip addrip route这样高频率的查询命令外,ip指令也可用于修改设备网络配置,下面列举一些常用的配置方法。

  • 启用或禁用网络接口
ip link set <interface> up
ip link set <interface> down
# <interface>为网卡名称,此命令用于开启或关闭指定网络接口
  • 更改接口名称
ip link set <old_interface_name> name <new_interface_name>
  • 配置IP地址
# 配置静态IP
ip addr add <ip_address>/<subnet_mask> dev <interface>
#删除IP地址
ip addr del <ip_address>/<subnet_mask> dev <interface>
  • 添加默认网关
# 用网关的 IP 地址替换 <gateway_ip>,以设置默认路由。
ip route add default via <gateway_ip>
  • 配置路由
# 添加静态路由:用目标网络和下一跳的 IP 地址替换 <destination_network> 和 <next_hop>。
ip route add <destination_network> via <next_hop>
#删除路由
ip route del <destination_network> via <next_hop>

ip addr输出解读

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:8c:1f:d3 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 10.33.4.109/24 brd 10.33.4.255 scope global dynamic noprefixroute ens33
       valid_lft 4813sec preferred_lft 4813sec
    inet6 fe80::20c:29ff:fe8c:1fd3/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

这段输出是 ip addr 命令的结果,这段输出显示了计算机上两个网络接口的信息:一个是回环接口(lo),另一个是物理网络接口(ens33),并列出了 IP 地址、MAC 地址、状态等相关信息。

  1. lo (Loopback):

    • 这是回环接口,通常用于本地主机通信。
    • IP 地址:127.0.0.1,它是回环地址,用于本地主机通信。
    • inet6:IPv6 的回环地址为 ::1
    • MTU(最大传输单元):65536。
    • 状态(state):UP 表示接口启用,LOWER_UP 表示链路层也启用。
    • 本地链路(link/loopback)的 MAC 地址是全零,因为回环不涉及物理链路。
  2. ens33:

    • 这是一个物理网络接口,通常用于连接到网络的通信。
    • IP 地址:10.33.4.109,这是该接口的 IPv4 地址。
    • 子网掩码:/24,表示子网掩码为 255.255.255.0。
    • 广播地址:10.33.4.255,这是该子网的广播地址。
    • inet6:IPv6 的本地链路地址为 fe80::20c:29ff:fe8c:1fd3/64
    • MTU:1500。
    • 状态:UP 表示接口启用,LOWER_UP 表示链路层也启用。
    • MAC 地址:00:0c:29:8c:1f:d3,这是该接口的物理地址。
    • altname:enp2s1,可能是接口的备用名称。

Windows ipconfig的特性

明人不说暗话,拥有ip命令后linux下ifconfig就没啥价值了,现在很多发行版也不再预装net-tools作为系统网络工具。但windows下ipconfig命令的使用频率仍然非常高,所以在此简介一些选项:

  • /all 显示更详细的网络配置信息(相当于ip -s addr
  • /? 获取系统命令帮助
  • /flushdns 清除DNS解析程序缓存

3. traceroute [tracert]

traceroute [tracert]命令用于追踪数据包到目标主机之间的路径信息,它通过发送 ICMP 或 UDP 数据包,以及逐跳递增的 TTL(生存时间)字段来实现这一目标。

语法

traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

常用参数

  • -f<存活数值> 设置第一个检测数据包的存活数值TTL的大小
  • -i<interface> 使用指定的网络设备送出数据包
  • -m<存活数值> 设置检测数据包的最大存活数值TTL的大小
  • -U 使用UDP发送到特定端口进行跟踪(而不是为每个探测递增端口),默认端口是53
  • -q<请求次数> 设置每跳的探测数据包数。默认值为 3

traceroute baidu.com输出解读

部分近源ip已做替换处理

$ traceroute baidu.com
traceroute to baidu.com (110.242.68.66), 30 hops max, 60 byte packets
 1  ip_a (host_a)  1.123 ms  1.531 ms  1.848 ms
 2  ip_b (host_b)  1.197 ms  1.175 ms  1.898 ms
 3  * * *
 4  * * *
 5  ip_c (host_c)  1.603 ms  1.578 ms  1.554 ms
 6  ip_d (host_d)  9.265 ms ip_e (host_e)  16.287 ms ip_f (host_f)  10.733 ms
 7  * 219.158.23.9 (219.158.23.9)  23.306 ms *
 8  110.242.66.170 (110.242.66.170)  31.708 ms 110.242.66.174 (110.242.66.174)  30.076 ms 110.242.66.170 (110.242.66.170)  31.965 ms
 9  221.194.45.134 (221.194.45.134)  26.214 ms 221.194.45.130 (221.194.45.130)  34.597 ms 221.194.45.134 (221.194.45.134)  32.256 ms

首先,traceroute 命令发送了 30 个最大跃点数的探测数据包,每个数据包大小为 60 字节。
从用户所在的网络(ip_a)出发,前两个跃点分别是:

  1. 跃点 1:ip_a,响应时间分别为 1.123 毫秒、1.531 毫秒和 1.848 毫秒。
  2. 跃点 2:ip_b,响应时间分别为 1.197 毫秒、1.175 毫秒和 1.898 毫秒。
  3. 从跃点 3 开始,数据包似乎丢失,因为响应时间一直为“*”,这意味着在这些跃点之间可能存在丢包现象。
  4. 跃点 6 表示经过了一个跃点,响应时间为 9.265 毫秒,然后是两个连续的跃点,分别是ip_e 和 ip_f,响应时间分别为 16.287 毫秒和 10.733 毫秒。
  5. 跃点 7 表示另一个跃点,响应时间为 23.306 毫秒。然后又是一段空旷的跃点,响应时间为“*”。
  6. 最后三个跃点分别是:
    跃点 8:110.242.66.170,响应时间分别为 31.708 毫秒、30.076 毫秒和 31.965 毫秒。
    跃点 9:221.194.45.134,响应时间分别为 26.214 毫秒、34.597 毫秒和 32.256 毫秒。

整个查询过程中,最远端的百度服务器(110.242.68.66)在跃点 8 和跃点 9 之间。

Windows tracert特性

实话实说,这个我感觉Windows下的tracert还要好用些,它的输出显示更规整,在抵达目的主机后便停止输出,而linux下traceroute要接着显示输出到30跳全部结束,以至于满屏幕的星号。

4. netstat

用于检查和显示计算机网络相关的状态信息。

语法

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

常用参数

  • -r 显示路由表信息
  • -a 显示所有连线中的Socket
  • -c 持续列出网络状态
  • -t --tcp 显示TCP传输协议的连线状况
  • -u --udp 显示UDP传输协议的连线状况
  • -n 直接使用IP地址,而不通过域名服务器
  • -p --programs 显示正在使用Socket的程序识别码和程序名称
  • -g --groups 显示多重广播功能群组组员名单
  • -s 显示网络工作信息统计表
  • -l --listening 显示监控中的服务器的Socket

netstatgrep筛选信息举例

netstat 命令常常与管道符 (|) 和 grep 命令一起使用,以便筛选和搜索网络信息,特别是在复杂的网络环境中或需要精确查找特定连接或端口时。以下是一些示例:

  1. 查找特定端口的监听状态netstat -tuln | grep 80
    显示所有监听状态的TCP端口,然后使用 grep 过滤出包含 "80" 的行,从而找到所有监听端口为 80 的连接,通常用于查找 Web 服务器端口。

  2. 查找特定进程的网络连接netstat -tanp | grep "firefox"
    显示所有TCP和UDP连接,然后使用 grep 过滤出包含 "firefox" 的行,以查找与 Firefox 浏览器关联的网络连接。这对于确定某个特定应用程序的网络活动非常有用。

  3. 查找特定IP地址的连接netstat -tuln | grep "192.168.1.100"
    显示所有监听状态的TCP和UDP端口,然后使用 grep 过滤出包含 "192.168.1.100" 的行,从而找到与特定IP地址相关的连接。

  4. 查找特定状态的连接netstat -tuln | grep "ESTABLISHED"
    显示所有监听状态的TCP和UDP端口,然后使用 grep 过滤出包含 "ESTABLISHED" 的行,从而找到所有处于已建立连接状态的连接。

  5. 查找使用特定协议的连接netstat -tuln | grep "UDP"
    这将显示所有监听状态的TCP和UDP端口,然后使用 grep 过滤出包含 "UDP" 的行,从而找到所有UDP连接。

Windows netstat特性

  • -b 显示每个网络连接的关联进程的 PID 和程序名称
  • -e 显示网络接口的统计信息,如数据包的传入和传出数量

5. nslookup

用于查询域名系统 (DNS) 的信息,包括域名解析、IP 地址查找以及反向域名解析。

语法

nslookup [-option] [name | -] [server]

直接输入nslookup会进入交互模式,即进入nslookup的交互命令行,在交互模式和普通命令模式下使用有些许的区别。
[server] 手动指定DNS服务器。

常见参数

  • -type=<查询类型>-querytype=<查询类型> 指定查询类型,如 A(IP 地址)、MX(邮件服务器记录)、NS(域名服务器记录)等。
  • -server=<DNS 服务器>:指定要查询的 DNS 服务器。默认情况下,会使用本地 DNS 服务器。
  • -timeout=<超时时间>:指定查询的超时时间,以秒为单位。
  • -class=<查询类别>:指定查询的类别,通常为 IN(Internet)

交互模式下可使用setexit等指令:

$ nslookup #进入交互命令行
> set type=txt #设置类型为TXT记录
> example.com #查询域名
> exit #退出交互式命令行