Linux网络命令是运维、开发人员排查网络故障、配置网络参数、监控网络状态的核心工具。本文将分类详解网络信息查看、连通性测试、路由与网关、端口与进程、文件传输等高频命令模块,包含完整语法、常用参数、实操案例和场景说明。
一、网络信息查看命令
该类命令用于查看本机网卡、IP地址、MAC地址、网络连接状态等基础信息,是网络排查的第一步。
1、ip命令
ip 是Linux通用网络管理命令,功能覆盖ifconfig、route、arp等旧命令,功能全面、效率更高。
基本语法
选项 (Options):控制输出的格式或行为(如 -4 仅显示 IPv4,-s 显示统计信息等)。
对象 (Object):指定要管理的网络实体,常用的有 link(网卡硬件)、addr(IP地址)、route(路由)、neigh(ARP邻居)、rule(策略路由)等。
命令 (Command):对对象执行的操作,如 show(查看)、add(添加)、del(删除)、set(设置状态)等。
常用对象及操作详解
1、管理网络接口
link 对象主要处理网卡的物理层和数据链路层属性,如启用/禁用网卡、修改 MAC 地址、MTU等。
查看所有网卡状态:
查看带统计信息的网卡状态(包含收发数据包、错误、丢包情况):
ip -s link show# 人性化单位显示ip -s -h link show
启用或禁用网卡:
# 启用 ens33 网卡ip link set ens33 up# 禁用 ens33 网卡ip link set ens33 down
修改 MAC 地址(需先禁用网卡):
ip link set dev ens33 downip link set dev ens33 address 00:11:22:33:44:55ip link set dev ens33 up
修改 MTU(最大传输单元):
ip link set dev ens33 mtu 9000
2 管理 IP 地址 (ip addr)
addr 对象用于管理网络接口的 IP 地址配置,替代了 ifconfig 的大部分功能。
查看所有 IP 地址信息:
ip addr show# 常用简写ip a# 仅查看 IPv4ip -4 a# 仅查看 IPv6ip -6 a
查看特定网卡的 IP:
添加 IP 地址:
# 给 ens33 添加 IP 192.168.1.10,子网掩码 /24ip addr add 192.168.1.10/24 dev ens33
删除 IP 地址:
ip addr del 192.168.1.10/24 dev ens33
清空网卡所有 IP:
3 管理路由表 (ip route)
route 对象用于查看和操作内核路由表,替代了传统的 route 命令。
查看路由表:
添加默认网关:
# 设置默认网关为 192.168.1.1,通过 ens33 接口ip route add default via 192.168.1.1 dev ens33
添加静态路由:
# 访问 10.0.0.0/8 网段时,通过网关 192.168.1.1ip route add 10.0.0.0/8 via 192.168.1.1 dev ens33
删除路由:
删除默认网关
2.hostname 命令
hostname 是 Linux 系统中用于显示或设置系统主机名称(Hostname)的核心命令。主机名是计算机在网络中的唯一标识,类似于人的名字,用于在本地终端提示符中显示以及在网络通信中识别设备。
基本语法
1、不带参数:直接执行 hostname 将显示当前系统的主机名。
2、设置主机名:后面跟上字符串即可临时修改主机名(需 root 权限)。
示例演示
假设主机名为 web01,域名为 example.com,IP 为 192.168.1.10:
# 显示完整主机名hostnameweb01.example.com# 显示短主机名hostname -sweb01# 显示 FQDNhostname -fweb01.example.com# 显示域名hostname -dexample.com# 显示所有 IP 地址hostname -I192.168.1.10 10.0.0.5
二、网络连通测试命令
1.ping命令
ping 是 Linux 系统中最基础且最常用的网络诊断工具,主要用于测试主机之间的连通性、测量网络延迟以及检查丢包率。
基本语法
目标主机:可以是 IP 地址(如 8.8.8.8)或域名(如 www.baidu.com)。
常用参数详解
1、控制发包数量(-c)
指定发送多少个数据包后自动停止,避免无限运行。
# 发送 4 个包后停止ping -c 4 8.8.8.8
2、控制发包间隔(-i)
设置每次发送数据包之间的时间间隔(单位:秒)。默认值为 1 秒。
# 每 0.5 秒发送一个包(普通用户最小间隔通常受限制,root用户可设更小)sudo ping -i 0.5 192.168.1.1# 每 3 秒发送一个包ping -i 3 www.baidu.com
3、设置数据包大小 (-s)
指定发送的 ICMP 数据载荷大小(单位:字节)。默认通常为 56 字节(加上 8 字节 ICMP 头,总共 64 字节)。
# 发送载荷为 1000 字节的数据包(总包大小 1008 字节)ping -s 1000 192.168.1.1# 测试 MTU(最大传输单元),以太网标准 MTU 为 1500,扣除 28 字节头部,最大载荷为 1472ping -s 1472 www.baidu.com
4、设置超时时间 (-W)
设置等待每个回复的超时时间(单位:秒)。如果超过该时间未收到回复,则判定该包丢失。
# 如果 2 秒内没收到回复,就判定超时ping -W 2 10.0.0.99
5、指定网卡/源 IP (-I)
在多网卡的服务器上,指定从哪个网络接口或源 IP 发出 ping 包。
# 指定从 eth0 网卡发出ping -I eth0 192.168.1.1# 指定源 IP 为 10.0.0.5ping -I 10.0.0.5 8.8.8.8
2.raceroute 路由追踪命令
在网络故障排查中,ping 只能告诉我们“通不通”和“快不快”,但无法揭示数据包在传输过程中经历了什么。为了解决这个问题,我们需要两位更高级的“侦探”:Traceroute(路由追踪)和 MTR(My Traceroute)。
大多数 Linux 发行版未预装 traceroute,需手动安装:
# Debian/Ubuntusudo apt install traceroute# CentOS/RHEL/Fedorasudo yum install traceroute# 或sudo dnf install traceroute
常用参数与语法
参数 | 说明 | 示例 |
(无) | 默认使用 UDP 协议探测 | traceroute www.baidu.com
|
-n
| 禁用 DNS 解析,直接显示 IP,加快输出速度 | traceroute -n 8.8.8.8
|
-I
| 使用 ICMP Echo 协议探测(类似 ping),适合允许 Ping 的环境 | traceroute -I google.com
|
-T
| 使用 TCP SYN 协议探测,可绕过部分防火墙限制 | traceroute -T -p 443 github.com
|
-m
| 设置最大跳数(默认 30) | traceroute -m 15 example.com
|
-q
| 设置每跳发送的探测包数量(默认 3) | traceroute -q 5 8.8.8.8
|
-w
| 设置等待响应的超时时间(秒) | traceroute -w 2 192.168.1.1
|
-p
| 指定目标端口(配合 -T 或 UDP 使用) | traceroute -T -p 80 www.example.com
|
命令典型输出如下:
1 192.168.1.1 (192.168.1.1) 0.151 ms 0.094 ms 0.146 ms 2 221.201.88.1 (221.201.88.1) 5.867 ms 7.588 ms 5.178 ms 3 * * * 4 218.25.158.149 (218.25.158.149) 6.546 ms 6.230 ms 8.297 ms
列 1:跳数(Hop)。
列 2:路由器的主机名和 IP 地址。
列 3-5:三次探测的往返时间(RTT,单位毫秒)。
* * *:表示该跳路由器未响应(可能是防火墙丢弃了 ICMP/UDP 包,或网络拥塞导致超时)。
3.dig域名解析命令
dig(Domain Information Groper)是 Linux 和 Unix 系统中最强大、最灵活的 DNS 查询工具。它由 BIND 软件包提供,被网络工程师和系统管理员视为 DNS 故障排查的“瑞士军刀”。
基本语法
dig [@server] [domain] [type] [options]
@server:指定要查询的 DNS 服务器 IP 或域名。如果不指定,则使用系统默认的 DNS(/etc/resolv.conf 中的 nameserver)。
domain:要查询的域名。
type:要查询的记录类型(如 A, MX, NS, AAAA, CNAME, TXT, SOA 等)。默认为 A 记录。
options:以 + 开头的各种控制选项。
输出解读
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.baidu.com;; global options: +cmd +comment +stats;; QUESTION SECTION:;www.baidu.com. IN A;; ANSWER SECTION:www.baidu.com. 1200 IN CNAME www.a.shifen.com.www.a.shifen.com. 1200 IN A 180.101.49.11www.a.shifen.com. 1200 IN A 180.101.49.12;; AUTHORITY SECTION:shifen.com. 86400 IN NS ns1.shifen.com.shifen.com. 86400 IN NS ns2.shifen.com.;; ADDITIONAL SECTION:ns1.shifen.com. 86400 IN A 220.181.57.216;; Query time: 25 msec;; SERVER: 8.8.8.8#53(8.8.8.8);; WHEN: Thu Aug 06 19:54:50 CST 2026;; MSG SIZE rcvd: 105
各部分含义:
1、Header (头部信息):
第一行显示 dig 版本和查询命令。
global options:显示当前生效的全局选项。
2、QUESTION SECTION (问题部分):
确认你向 DNS 服务器发送了什么请求。
www.baidu.com. IN A:询问 www.baidu.com 的 IPv4 地址(A 记录)。
3、ANSWER SECTION (答案部分):核心区域
包含 DNS 服务器返回的具体记录。
www.baidu.com. 1200 IN CNAME www.a.shifen.com.:表示 www.baidu.com 是一个别名,指向 www.a.shifen.com,TTL(缓存时间)为 1200 秒。
www.a.shifen.com. 1200 IN A 180.101.49.11:最终解析出的 IP 地址。
4、AUTHORITY SECTION (权威部分):
列出负责该域名的权威 DNS 服务器(NS 记录)。如果答案部分没有直接给出 IP,这里会告诉你可以去问哪些服务器。
5、ADDITIONAL SECTION (附加部分):
提供额外有帮助的信息,通常是权威服务器的 IP 地址( glue record),以便客户端可以直接联系它们,无需再次查询。
6、Stats (统计信息):
Query time:查询耗时(毫秒)。
SERVER:实际响应请求的 DNS 服务器 IP 和端口。
WHEN:查询时间。
MSG SIZE:接收到的数据包大小。
三、路由与网关管理命令
1.ip route 命令
ip route 是 Linux 系统中用于查看、添加、删除和修改内核路由表的核心命令。旨在替代传统的 route 和 ifconfig 命令,提供更强大、更灵活的网络管理功能。通过该命令,管理员可以精确控制数据包的转发路径,配置静态路由、默认网关以及策略路由。
基本语法
ip route [操作] [目标网段] [参数]
操作:show (查看), add (添加), del (删除), change (修改), replace (替换).
目标网段:可以是单个 IP、CIDR 格式的子网(如 192.168.1.0/24)或 default(默认路由)。
关键参数:
via <网关IP>:指定下一跳网关地址。
dev <接口名>:指定出站网络接口(如 eth0, ens33)。
src <源IP>:指定发送数据包时使用的源 IP 地址。
metric <值>:设置路由度量值,影响路由选择。
table <表ID/名称>:指定操作哪张路由表(用于策略路由)。
常用操作详解
1、查看路由表
输出示例:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 10.0.0.0/8 via 192.168.1.254 dev eth0
2、查询特定目标的确切路径
此命令非常实用,它会模拟内核的路由查找过程,告诉你如果发送数据包到目标 IP,系统会选择哪条路由、哪个接口和哪个源 IP。
输出示例:
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000 cache
四、端口与网络进程命令
1.netstat 命令
netstat是 Linux 和 Windows 系统中用于监控 TCP/IP 网络状态的核心命令行工具。它能够显示活动的网络连接、路由表、接口统计信息以及协议统计数据。
基本语法
核心参数:
-a (all):显示所有连接和监听端口。
-n (numeric):以数字形式显示地址和端口,不进行 DNS 解析(提高速度)。
-t (tcp):仅显示 TCP 连接。
-u (udp):仅显示 UDP 连接。
-l (listening):仅显示处于监听(LISTEN)状态的套接字。
-p (program):显示建立连接的进程 ID (PID) 和程序名称(需要 root/sudo 权限)。
-r (route):显示内核路由表。
-s (statistics):显示网络统计信息(如丢包、错误数)。
-i (interfaces):显示网络接口列表。
-c (continuous):持续输出网络状态(类似 top 命令,需配合时间间隔使用,如 netstat -c 5 每5秒刷新)。
无论在哪种系统下,netstat 的核心输出通常包含以下列:
Proto:协议类型(tcp, udp, tcp6, udp6)。
Local Address:本地 IP 地址和端口号。
0.0.0.0:80 或 *:80 表示监听所有接口。
127.0.0.1:3306 表示仅监听本地回环。
Foreign Address:远程 IP 地址和端口号。
0.0.0.0:* 或 *:* 表示未连接特定远程主机(监听状态)。
State:连接状态(仅 TCP 有效)。
LISTEN:正在监听请求。
ESTABLISHED:连接已建立,正在通信。
TIME_WAIT:连接已关闭,等待足够时间确保远程接收确认。
CLOSE_WAIT:远程已关闭,等待本地应用程序关闭连接。
SYN_SENT / SYN_RECV:连接建立过程中的状态。
PID/Program name (Linux -p / Windows -o/-b):占用该连接的进程 ID 和名称。
2.lsof 端口进程排查
lsof是 Linux系统中用于列出当前系统打开文件的强大工具。在 Unix设计哲学中,“一切皆文件”,因此网络连接、硬件设备、管道、目录等都被视为文件。lsof 能揭示进程与这些“文件”之间的关联,是排查端口占用、文件被锁、磁盘空间未释放等问题的核心利器。
基本语法
常用参数详解
参数 | 含义 | 示例 |
-i
| 网络相关:列出所有网络连接(TCP/UDP)。 | lsof -i
|
-i :
| 指定端口号。 | lsof -i :80
|
-i @
| 指定远程主机。 | lsof -i @192.168.1.5
|
-i
| 指定协议(tcp/udp)。 | lsof -i tcp
|
-p
| 指定进程 ID。 | lsof -p 1234
|
-u
| 指定用户名。 | lsof -u root
|
-c
| 指定命令名称前缀。 | lsof -c nginx
|
+D
| 递归搜索目录下被打开的文件。 | lsof +D /var/log
|
-t
| 精简模式:只输出 PID,便于脚本处理。 | lsof -t -i :80
|
-n
| 不解析域名:加快显示速度,避免 DNS 延迟。 | lsof -n -i
|
-P
| 不解析端口名:显示数字端口而非服务名(如 80 而非 http)。 | lsof -P -i
|
输出结果解读
执行 lsof -i :80 的典型输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 1234 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)nginx 1235 www 6u IPv4 12346 0t0 TCP 192.168.1.100:80->10.0.0.5:54321 (ESTABLISHED)
各列含义:
COMMAND:进程的命令名称。
PID:进程 ID。
USER:进程所有者。
FD:文件描述符。
cwd:当前工作目录。
rtd:根目录。
txt:程序代码段。
mem:内存映射文件。
0u, 1u, 2u:标准输入、输出、错误。
6u:普通文件描述符,u 表示读写模式(r读, w写)。
TYPE:文件类型。
nIPv4/IPv6:网络套接字。
nDIR:目录。
nREG:常规文件。
nCHR:字符设备。
nFIFO:命名管道。
DEVICE:设备号。
SIZE/OFF:文件大小或偏移量。
NODE:inode 节点号。
NAME:文件名、网络地址或状态。
对于网络连接,格式为 本地IP:端口->远程IP:端口 (状态)。
状态包括 LISTEN, ESTABLISHED, TIME_WAIT 等。
五、文件传输与远程连接命令
1.wget命令
wget是 Linux系统中最常用的非交互式网络下载工具。它支持 HTTP、HTTPS 和 FTP 协议,能够在网络不稳定时自动重试和断点续传,甚至可以在用户退出终端后继续在后台运行。由于其无需图形界面即可工作的特性,wget 是服务器环境、脚本自动化和远程管理中的首选下载工具。
基本语法
URL:要下载的文件的完整地址。
选项:控制下载行为的各种参数。
最简单的用法:
wget https://example.com/file.zip
执行上述命令后,文件将下载到当前目录,文件名与 URL 中的文件名一致。
常用参数详解
1、文件保存与控制
参数 | 含义 | 示例/说明 |
-O <文件名>
| 指定输出文件名 | wget -O mydata.zip https://example.com/data.zip无论 URL 中的文件名是什么,保存为 mydata.zip。注意是大写字母 O。
|
-P <目录>
| 指定保存目录 | wget -P /tmp/downloads https://example.com/file.txt文件将保存在 /tmp/downloads/ 目录下。
|
-nc
| 不覆盖已存在文件 | --no-clobber如果本地已有同名文件,则跳过下载,避免覆盖重要数据。
|
-c
| 断点续传 | --continue如果下载中断,再次运行该命令将从上次中断的位置继续下载,而非重新开始。
|
2、网络与重试控制
参数 | 含义 | 示例/说明 |
-t <次数> | 设置重试次数 | wget -t 5 https://example.com/file默认重试 20 次。设为 0 表示无限重试,直到成功。 |
-T <秒> | 设置超时时间 | wget -T 10 https://example.com/file连接或读取超时时间为 10 秒。 |
-w <秒> | 等待间隔 | wget -w 5 https://example.com/file每次重试之间等待 5 秒,避免对服务器造成过大压力。 |
--limit-rate=<速度> | 限速下载 | wget --limit-rate=1m https://example.com/bigfile限制下载速度为 1MB/s,节省带宽。 |
3、后台与静默模式
参数 | 含义 | 示例/说明 |
-b | 后台运行 | wget -b https://example.com/largefile.iso下载进程转入后台,日志默认写入当前目录的wget-log 文件。 |
-q | 静默模式 | wget -q https://example.com/file不输出任何信息,适合脚本中只关心退出码的场景。 |
-nv | 非详细模式 | wget -nv https://example.com/file比默认模式输出更少,但仍显示关键错误信息。 |
案例 1:下载大文件并支持断点续传
如果网络不稳定,下载一个大文件时中断了,只需再次运行相同的命令(加上 -c):
wget -c https://releases.ubuntu.com/24.04/ubuntu-24.04-desktop-amd64.iso
案例 2:后台下载大型数据集
下载一个巨大的数据集,不想让 SSH 会话阻塞:
wget -b https://example.com/dataset.tar.gz# 查看进度tail -f wget-log
2.curl命令
curl是一个功能强大的命令行数据传输工具,支持 HTTP、HTTPS、FTP、SFTP、SMTP、POP3 等多种网络协议。与专注于文件下载的 wget 不同,curl 更侧重于数据交互和协议调试,是开发人员测试 API、运维人员排查网络问题以及自动化脚本中不可或缺的工具。
基本语法
最简单的用法:
默认发起 GET 请求,并将响应内容直接输出到标准输出(终端屏幕)。
常用参数详解
1、请求方法与数据传递
参数 | 含义 | 示例/说明 |
-X <METHOD> | 指定 HTTP 方法 | curl -X POST https://api.example.com/login默认为 GET,可指定 POST, PUT, DELETE, PATCH 等。 |
-d <data> | 发送 POST 数据 | curl -X POST -d "username=admin&password=123" https://api.example.com/login默认 Content-Type 为 application/x-www-form-urlencoded。 |
--data-binary | 发送二进制数据 | 用于发送非文本数据,防止 curl 去除换行符等处理。 |
-F <field>=<value> | 模拟表单上传 | curl -F "file=@photo.jpg" https://upload.example.com自动设置 Content-Type 为 multipart/form-data,@ 符号表示读取本地文件。 |
-G | 强制 GET 请求 | 如果使用了-d 但想将其作为 URL 参数发送,可配合 -G使用。 |
2、头部设置与用户代理
参数 | 含义 | 示例/说明 |
-H <header> | 自定义请求头 | curl -H "Content-Type: application/json" -H "Authorization: Bearer token" https://api.example.com可多次使用以添加多个头部。 |
-A <agent> | 设置 User-Agent | curl -A "Mozilla/5.0" https://example.com伪装成浏览器,避免被服务器拒绝访问。 |
-e <referer> | 设置 Referer | curl -e "https://google.com" https://example.com模拟来源页面。 |
案例 1:测试 RESTful API (POST JSON)
curl -X POST https://api.example.com/users \ -H "Content-Type: application/json" \ -d '{"name": "Alice", "email": "alice@example.com"}' \ -v
-v 帮助查看服务器返回的状态码和头部信息,便于调试。
案例 2:下载文件并支持断点续传
curl -C - -O https://releases.ubuntu.com/24.04/ubuntu-24.04.iso