当前位置: 首页 > article >正文

Linux 网络维护相关命令简介

目录

  • 零. 概要
  • 一. ping
  • 二. ip命令
    • 2.1 ip address
    • 2.2 ip route
    • 2.3 ip neighbour
  • 三. traceroute
  • 四. DNS查询
    • 4.1 nslookup
    • 4.2 dig
  • 五. ss 查看网络连接状态


零. 概要

⏹在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 showifconfig
启用/禁用接口ip link set dev eth0 up/downifconfig eth0 up/down
查看 IP 地址ip addr showifconfig
添加 IP 地址ip addr add 192.168.1.1/24 dev eth0ifconfig eth0 192.168.1.1 netmask 255.255.255.0
删除 IP 地址ip addr del 192.168.1.1/24 dev eth0不支持直接删除
查看路由表ip route showroute -n
添加/删除路由ip route add/del ...route add/del ...
查看套接字信息ss -tulnnetstat -tuln
查看 ARP 表ip neigh showarp -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强制使用 IPv4ping -4 www.example.com
-6强制使用 IPv6ping -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的命令行工具。

特性nslookupdig
复杂度简单,适合快速查询功能强大,适合高级用户
输出详细信息较少,仅限查询结果输出完整的 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

http://www.kler.cn/a/448159.html

相关文章:

  • 飞牛 fnos 使用docker部署 bili-sync:打造自动化 B 站资源下载器,与主流媒体服务器无缝衔接
  • 常用的缓存技术都有哪些
  • 基于Spring Boot的找律师系统
  • OceanBase 数据库分布式与集中式 能力
  • lambda初探(一)
  • SQL语句练习
  • 从入门到实战:基于 UniApp 的全场景开发实践
  • SMMU软件指南SMMU编程之命令队列
  • 数字逻辑(五)——用二进制来表示音频和视频
  • 微服务详细教程之nacos和sentinel实战
  • 机器学习(三)-多项式线性回归
  • 深入了解Java在人工智能领域的最新应用
  • 关系型数据库的完整性和一致性
  • C++初阶—类与对象(下篇)
  • 基于Socket实现客户端和服务端的Tcp通信(C#)
  • 18个AI变现案例分享,每一个都可以作为副业赚睡后收入!
  • Vue.js前端框架教程9:Vue插槽slot用法
  • Java基础复习(二):面向对象编程
  • Apache POI练习代码
  • cocos creator制作2dTop-down游戏(虚拟摇杆、地图加载)
  • UI自动化-八大元素定位方法
  • 如何利用Python爬虫获得1688商品详情
  • 基于单片机的程控电源显示控制电路设计
  • 抓包之使用wireshark抓http2的包
  • R语言读取hallmarks的gmt文档的不同姿势整理
  • 【大语言模型】ACL2024论文-33 Johnny 如何说服大型语言模型越狱:通过人性化 LLMs 重新思考挑战 AI 安全性的说服技巧