Linux 网络维护相关命令简介

发布于:2025-02-11 ⋅ 阅读:(70) ⋅ 点赞:(0)


零. 概要

⏹在Linux系统中有2套用于网络管理的工具集

  • net-tools
    • 早期网络管理的主要工具集,缺乏对 IPv6、网络命名空间等现代特性的支持,可能存在与新内核不兼容的问题。
    • 在新版的Ubuntu系统中已经不再默认安装,安装命令:sudo apt install net-tools
    • 适合处理简单网络任务,或用于维护旧系统。
  • iproute2
    • 现代网络管理标准:支持新特性,如网络命名空间(namespace)、多路径路由等。
    • 工具整合:单个工具(如 ip)涵盖多个功能(如管理 IP 地址、路由、链路等)。
    • 性能优越:直接与内核交互,效率高。
    • 跨协议支持:支持 IPv4、IPv6、SCTP、DCCP 等。
    • Ubuntu系统内置

⏹两套工具集对比

功能 iproute2 命令 net-tools 命令
查看接口信息 ip link show ifconfig
启用/禁用接口 ip link set dev eth0 up/down ifconfig eth0 up/down
查看 IP 地址 ip addr show ifconfig
添加 IP 地址 ip addr add 192.168.1.1/24 dev eth0 ifconfig eth0 192.168.1.1 netmask 255.255.255.0
删除 IP 地址 ip addr del 192.168.1.1/24 dev eth0 不支持直接删除
查看路由表 ip route show route -n
添加/删除路由 ip route add/del ... route add/del ...
查看套接字信息 ss -tuln netstat -tuln
查看 ARP 表 ip neigh show arp -a

⇓⇓⇓下图来源于网络工程师波哥⇓⇓⇓

在这里插入图片描述


一. ping

⏹测试网络连通性

  • ping 会连续发送 ICMP 数据包,直到被手动中断(通常按 Ctrl+C)。
  • 默认每秒发送一个数据包,显示结果包括往返时间(RTT)、数据包丢失率等信息。
ping www.example.com
选项 功能 示例
-c <次数> 指定发送数据包的数量 ping -c 5 www.example.com
-i <间隔> 设置每次发送数据包的时间间隔(默认 1 秒) ping -i 0.5 www.example.com
-w <时间> 设置最大等待时间(秒) ping -w 10 www.example.com
-s <大小> 指定 ICMP 数据包的大小(字节) ping -s 128 www.example.com
-t <值> 设置 IP 数据包的 TTL(Time to Live) ping -t 64 www.example.com
-4 强制使用 IPv4 ping -4 www.example.com
-6 强制使用 IPv6 ping -6 www.example.com

💥注意事项
一些服务器为了安全性可能禁用了 ICMP 协议(不响应 ping 请求),但这并不一定说明网络有问题。


二. ip命令

⏹在 Linux 系统中,ip 命令是 iproute2 工具集中最重要的网络管理工具之一,用于查看和管理网络接口、地址、路由等网络配置。
它功能强大,已经取代了许多传统的网络命令(如 ifconfig、route、arp 等)。

⏹基本用法

  • OPTIONS:命令的全局选项(如 -4、-6,表示 IPv4 或 IPv6)
  • OBJECT:操作的网络对象(如 addr、link、route)
  • COMMAND:对象的具体操作(如 add、del、show)
ip [OPTIONS] OBJECT {COMMAND | help}

2.1 ip address

⏹查看所有接口的IP地址

# 完整写法
ip address show
# 简写
ip addr

⏹简洁的查看模式 → ip -br addr

  • 第1列:接口名称
    • lo:这是回环接口(loopback interface),用于本地通信,通常仅限于 127.0.0.1 地址。
    • ens33:这是物理或虚拟网络接口的名称,具体名字因系统和网络适配器配置而异。这里指的是一块以太网接口。
  • 第2列:接口状态
    • UNKNOWN:接口的状态未知,通常这是回环接口的默认状态。
    • UP:接口处于激活状态,能够发送和接收网络流量。
  • 第3列:IP 地址信息
    • ⭕IPv4 地址

      • 127.0.0.1/8:lo 的 IPv4 地址,是本地回环地址,子网掩码为 /8(即子网范围为 127.0.0.0 至 127.255.255.255)。
      • 192.168.118.136/24:ens33 的 IPv4 地址,是局域网中的地址,子网掩码为 /24(即子网范围为 192.168.118.0 至 192.168.118.255)。
    • ⭕IPv6 地址

      • ::1/128:lo 的 IPv6 地址,是本地回环地址,子网掩码为 /128,即只包含自身。
      • fe80::20c:29ff:fe86:f265/64:ens33 的 IPv6 链路本地地址(link-local address),作用域是当前链接,子网掩码为 /64
    • ⭕metric

      • metric 是路由表中用于决定路径优先级的一个值。它在网络中主要用于路由选择。
        多个路由指向同一个目标时,metric 值较低的路由优先被选择。
      • 仅部分接口包含
      • metric 100:网络接口的优先级,值越小优先级越高(通常用于路由选择时)。
apluser@ubuntu24-01:~$ ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128
ens33            UP             192.168.118.136/24 metric 100 fe80::20c:29ff:fe86:f265/64

⏹仅显示 IPv4 地址

ip -4 addr

⏹仅显示 IPv6 地址

ip -6 addr

2.2 ip route

ip route 是 Linux 系统中用于查看和管理路由表的命令。路由表决定了网络流量如何被发送到目标地址。通过 ip route,可以

  • 查看当前的路由信息
  • 添加或修改路由规则
  • 以及优化网络连接。

⏹基本概念

  • 路由表
    • 路由表存储了从主机到不同网络的路径。
    • 每条路由记录包含目标网络、网关(下一跳)、子网掩码、网络接口等信息。
  • 默认网关
    • 如果目标地址不在任何已知的子网中,流量会被发送到默认网关。

⏹用法示例

  • 默认路由:将未知目标的流量发送到网关 192.168.118.2。
  • 子网路由:通过本地子网 192.168.118.0/24 内的设备时,直接通过接口 ens33 发送,无需网关。
  • 网关路由:网关 192.168.118.2 是通过 ens33 接口直接访问的设备。

主机当前网络配置正常,主要通过网关 192.168.118.2 和外部通信,同时能与 192.168.118.0/24 子网中的其他设备直接通信。

apluser@ubuntu24-01:~$ ip route show
default via 192.168.118.2 dev ens33 proto dhcp src 192.168.118.136 metric 100
192.168.118.0/24 dev ens33 proto kernel scope link src 192.168.118.136 metric 100
192.168.118.2 dev ens33 proto dhcp scope link src 192.168.118.136 metric 100

  • default:表示默认路由,当目标地址无法匹配其他更具体的路由时,流量将使用此路由。
  • via 192.168.118.2:表示流量会通过网关(网关 IP 地址是 192.168.118.2)发送。
  • dev ens33:指定通过网络接口 ens33 发送数据。
  • proto dhcp:表示这条路由是通过 DHCP 动态分配的。
  • src 192.168.118.136:表示默认使用源地址(本机的IP地址) 192.168.118.136
  • metric 100:表示路由的优先级,数值越小优先级越高。这里 100 是一个默认的路由优先级值。
  • 👉这是系统的默认路由,所有不匹配其他路由表规则的流量会通过网关 192.168.118.2,从接口 ens33 发出。👈
default via 192.168.118.2 dev ens33 proto dhcp src 192.168.118.136 metric 100
  • 192.168.118.0/24:表示这是一个子网路由,负责 192.168.118.0192.168.118.255 之间的地址。
  • dev ens33:数据包通过 ens33 接口发送。
  • proto kernel:表示这是由内核自动添加的路由。
  • scope link:路由的作用域是本地链路(即只能到达本地子网中的设备)。
  • src 192.168.118.136:本接口的源地址是 192.168.118.136
  • metric 100:路由优先级是 100。
  • 👉这是本地子网的路由,流量目标是同一子网的设备时,直接通过 ens33 接口发送,不需要经过网关。👈
192.168.118.0/24 dev ens33 proto kernel scope link src 192.168.118.136 metric 100
  • 192.168.118.2:表示这是到网关 192.168.118.2 的路由。
  • dev ens33:通过 ens33 接口发送数据。
  • proto dhcp:这条路由由 DHCP 动态配置。
  • scope link:作用域是本地链路。
  • src 192.168.118.136:使用 192.168.118.136 作为源地址。
  • metric 100:路由优先级是 100。
  • 👉这是到网关设备 192.168.118.2 的路由,通过接口 ens33 发出数据。👈
192.168.118.2 dev ens33 proto dhcp scope link src 192.168.118.136 metric 100

2.3 ip neighbour

ip neighbour命令用于显示当前网络接口的邻居表(ARP 表或 NDP 表),它列出了本机网络接口与其直接连接的设备之间的映射关系,同时显示了与这些网络设备的通信状态。
例如:

  • IP 地址
  • 设备接口
  • 硬件地址(MAC 地址)
  • 网络邻居条目的状态

ip neighbour 是现代系统中管理邻居条目的工具,替代了传统的 arp 命令。

⏹示例

apluser@ubuntu24-01:~$ ip neighbour
192.168.118.2 dev ens33 lladdr 00:50:56:ea:9e:5f STALE
192.168.118.1 dev ens33 lladdr 00:50:56:c0:00:08 REACHABLE
192.168.118.254 dev ens33 lladdr 00:50:56:ec:2c:8b STALE
  • 192.168.118.2:网络邻居设备的 IP 地址。
  • dev ens33:表示邻居设备是通过网络接口 ens33 访问的。
  • lladdr 00:50:56:ea:9e:5f:邻居设备的硬件地址(MAC 地址)。
  • STALE:表示邻居状态为“陈旧”,系统已经知道该设备的 MAC 地址,但最近没有与其通信。如果需要时,系统会重新验证它。
192.168.118.2 dev ens33 lladdr 00:50:56:ea:9e:5f STALE
  • 192.168.118.1:邻居设备的 IP 地址。
  • dev ens33:通过接口 ens33 访问。
  • lladdr 00:50:56:c0:00:08:设备的 MAC 地址。
  • REACHABLE:表示邻居设备是可达的,最近系统已经成功与其通信。
192.168.118.1 dev ens33 lladdr 00:50:56:c0:00:08 REACHABLE

三. traceroute

traceroute 是一个网络诊断工具,用于显示从本地主机到目标主机之间的路径及经过的所有中间节点(路由器或设备)。
该命令会显示中间的路由器或网关,并提供每一跳的延迟信息,是排查网络问题和了解网络路径的重要工具。

  • -I:使用 ICMP Echo 请求(类似 ping),代替默认的 UDP 数据包。
  • 如果 traceroute 显示 *,可能是以下原因
    • 路由器禁用了 ICMP 响应。
    • 数据包被防火墙阻拦。
    • TTL 已到达但没有返回响应。
    • 遇到防火墙阻拦时,可以尝试 -T 使用 TCP 探测。
root@ubuntu24-01:~# traceroute -I www.baidu.com
traceroute to www.baidu.com (119.63.197.151), 30 hops max, 60 byte packets
 1  _gateway (192.168.118.2)  0.079 ms  0.046 ms *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  119.63.197.151 (119.63.197.151)  7.820 ms  7.796 ms  7.772 ms

四. DNS查询

nslookupdig是linux系统中用于查询DNS的命令行工具。

特性 nslookup dig
复杂度 简单,适合快速查询 功能强大,适合高级用户
输出详细信息 较少,仅限查询结果 输出完整的 DNS 消息结构
记录类型支持 支持,但不如 dig 强大 支持多种记录类型和自定义查询
脚本支持 较弱,输出格式固定 较强,支持自定义输出
可用性 默认内置于 Windows 和 Unix 通常需要额外安装(如 bind-utils

4.1 nslookup

  • nslookup 是一个命令行工具,用于查询域名系统(DNS)记录。
  • 允许你检查域名到 IP 地址的解析、IP 地址到域名的反向解析,以及其他 DNS 信息。
apluser@ubuntu24-01:~$ nslookup www.google.com
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   www.google.com
Address: 142.250.199.100
Name:   www.google.com
Address: 2404:6800:4004:823::2004

4.2 dig

dig(Domain Information Groper)是一个功能更强大的工具,用于查询 DNS 信息。它能显示更多详细信息,比如

  • DNS 消息头、
  • TTL、
  • 查询时间

是网络管理员的首选工具。

⏹dig命令示例

apluser@ubuntu24-01:~$ dig www.google.com

; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44293
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.google.com.                        IN      A

;; ANSWER SECTION:
www.google.com.         5       IN      A       172.217.31.132

;; AUTHORITY SECTION:
google.com.             5       IN      NS      ns1.google.com.
google.com.             5       IN      NS      ns3.google.com.
google.com.             5       IN      NS      ns2.google.com.
google.com.             5       IN      NS      ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         5       IN      AAAA    2001:4860:4802:32::a
ns2.google.com.         5       IN      AAAA    2001:4860:4802:34::a
ns3.google.com.         5       IN      AAAA    2001:4860:4802:36::a
ns4.google.com.         5       IN      AAAA    2001:4860:4802:38::a
ns1.google.com.         5       IN      A       216.239.32.10
ns2.google.com.         5       IN      A       216.239.34.10
ns3.google.com.         5       IN      A       216.239.36.10
ns4.google.com.         5       IN      A       216.239.38.10

;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Dec 22 11:40:12 UTC 2024
;; MSG SIZE  rcvd: 307

⏹只想获取查询结果而忽略其他信息

apluser@ubuntu24-01:~$ dig +short www.google.com
142.251.42.132

五. ss 查看网络连接状态

ss 是 Linux 系统上一个强大的命令行工具,用于显示套接字统计信息。
它的功能类似于传统的 netstat,但性能更高,且支持更多功能。
ssiproute2 工具包的一部分,适用于查看网络连接状态、套接字信息和网络统计数据。

  • -l:仅显示监听的套接字。
  • -t:显示 TCP 连接。
apluser@ubuntu24-01:~$ ss -lt
State     Recv-Q     Send-Q     Local Address:Port        Peer Address:Port   Process
LISTEN    0          4096       127.0.0.53%lo:domain           0.0.0.0:*
LISTEN    0          4096          127.0.0.54:domain           0.0.0.0:*
LISTEN    0          4096                   *:ssh                    *:*
apluser@ubuntu24-01:~$

⏹仅显示状态为已建立的 TCP 连接

ss -t state ESTABLISHED

⏹配合 watch 命令实时监控

watch -n 1 ss -t state ESTABLISHED

⏹显示所有源端口为 80 的 TCP 连接

  • sport(source port):表示源端口。
ss -t sport = :80

⏹显示所有目标端口为 443 的 TCP 连接

  • dport(destination port):表示目标端口。
ss -t dport = :443

网站公告

今日签到

点亮在社区的每一天
去签到