Linux 网络命令速查
更新时间:2026-08-28。本文是 Linux 命令速查主题第④族:网络与远程,约 30 个命令。网络排查有个固定的由浅入深顺序——先确认通不通(ping)、再确认端口开没开(nc/ss)、然后看数据到底发出去没有(tcpdump)、最后才是应用层面的问题。跳步直接抓包,往往在海量的包里迷失方向。深入原理见 网络编程原理,进阶工具见 网络进阶与压测。
一、连通性与探测
ping 走的是 ICMP(Internet Control Message Protocol,互联网控制报文协议)协议,它只能证明"网络层通"。很多云厂商和防火墙会禁掉 ICMP,这时 ping 不通不代表服务不可用——要换成测具体端口的方式。
| 命令 | 作用 | 常用示例 |
|---|---|---|
| ping | ICMP 连通性与延迟测试 | ping -c 4 example.com(发 4 个包);ping -i 0.2(每 0.2 秒一次);ping -s 1400(指定包大小,测 MTU 问题) |
| traceroute | 追踪数据包经过的每一跳路由 | traceroute example.com;traceroute -n(不解析域名,输出更快);traceroute -T -p 80 host(用 TCP SYN 探测,绕过禁 ICMP 的网络) |
| mtr | ping 与 traceroute 的结合,持续统计每跳的丢包与延迟,定位网络质量问题首选 | mtr example.com(实时);mtr -rw example.com(生成报告摘要,适合发工单) |
| nc(netcat) | TCP/UDP 的瑞士军刀:探测端口、传文件、起临时服务 | nc -zv host 80(探测 TCP 端口是否开放);nc -zvu host 53(UDP 探测);nc -l 9000(监听端口);nc host 9000 < file(传文件) |
| telnet | 明文远程登录,现在主要用来手工测端口并直接敲协议 | telnet host 80(连上后可手工发 GET / HTTP/1.0 看响应) |
判断"服务到底起没起",
nc -zv host port比 ping 可靠得多。想进一步确认是网络不通还是服务没监听,可以在服务端同时ss -tlnp | grep :端口看监听状态——两边结合就能区分"没监听"、"监听了但防火墙拦"、"监听了但绑在 127.0.0.1 上"这几种情况。
二、请求与下载
| 命令 | 作用 | 常用示例 |
|---|---|---|
| curl | 多功能传输工具,调试 HTTP 接口的事实标准 | curl -I https://x.com(只看响应头);curl -o file https://x.com/a.zip(下载);curl -X POST -d '{"k":1}' -H 'Content-Type: application/json' url;curl -sS(静默但仍报错);curl -k(忽略证书校验);curl -w '%{time_total}\n' -o /dev/null -s url(测耗时);curl -L(跟随重定向) |
| wget | 下载工具,支持递归镜像与断点续传 | wget https://x.com/a.zip;wget -c(断点续传);wget -r -np(递归镜像整站);wget -q -O - url(输出到标准输出,当 curl 用) |
| rsync | 增量同步,只传变化的部分,远程同步与备份首选 | rsync -avz src/ user@host:/dst/(归档+压缩);rsync -av --delete(删除目标多余文件,先加 -n 演练);rsync -av --exclude='node_modules' src/ dst/;rsync --bwlimit=1000(限速 KB/s) |
curl -w能把一次请求的耗时拆开看:%{time_namelookup}DNS 解析、%{time_connect}TCP 连接、%{time_starttransfer}首字节、%{time_total}总计。接口慢的时候用这一条命令就能判断慢在 DNS、连接还是服务端处理。写法:curl -w "dns:%{time_namelookup} connect:%{time_connect} ttfb:%{time_starttransfer} total:%{time_total}\n" -o /dev/null -s url。
三、远程登录与文件传输
SSH(Secure Shell,安全外壳协议)是远程管理 Linux 的标配。除了登录,它还能做端口转发、文件传输、远程执行——几乎是运维的万能通道。
| 命令 | 作用 | 常用示例 |
|---|---|---|
| ssh | 安全远程登录 | ssh user@host;ssh -p 2222 user@host(指定端口);ssh -i key.pem user@host(密钥登录);ssh user@host 'cmd'(远程执行单条命令);ssh -L 8080:localhost:80 host(本地端口转发);ssh -R 2222:localhost:22 host(反向隧道);ssh -J jump target(跳板机) |
| scp | 基于 SSH 的远程复制,简单场景够用 | scp file user@host:/path/;scp -r dir user@host:/path/(递归);scp -P 2222 ...(注意是大写 P) |
| ssh-keygen | 生成 SSH 密钥对 | ssh-keygen -t ed25519(推荐,短且安全);ssh-keygen -t rsa -b 4096;ssh-keygen -p(改私钥密码) |
| ssh-copy-id | 把公钥装到远程主机,配置免密登录 | ssh-copy-id user@host;ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host(指定公钥) |
ssh-keyscan | 收集远程主机的公钥,用于批量预置 known_hosts、避免首次连接的交互确认 | ssh-keyscan host >> ~/.ssh/known_hosts;ssh-keyscan -H host(哈希主机名) |
scp 传大文件没有进度和断点续传,换
rsync -avP更稳妥(-P显示进度且支持续传)。私钥权限必须是 600,否则 SSH 会拒绝使用并提示 "Permissions are too open",chmod 600 ~/.ssh/id_*即可。多跳环境用ssh -J jump target比把私钥转发到跳板机上安全得多。
四、套接字与端口
套接字(socket,IP + 端口 + 协议组成的通信端点)是网络编程的基本抽象。这一节命令看的是"本机现在有哪些连接在跑、谁占着哪个端口"。ss 是 netstat 的现代替代品,速度更快。
| 命令 | 作用 | 常用示例 |
|---|---|---|
| ss | 套接字统计,现代首选,比 netstat 快很多 | ss -tlnp(TCP 监听 + 进程名);ss -s(汇总统计);ss -tn state established(只看已建立连接);ss -tnp | grep :80;ss -i(显示 TCP 内部信息:拥塞窗口、RTT) |
netstat | 传统套接字统计,老系统仍在用 | netstat -tlnp;netstat -an;netstat -i(网卡统计);netstat -s(协议统计) |
| lsof | 列出打开的文件,Linux 里套接字也是文件,因此能查端口占用 | lsof -i :8080(谁占了 8080);lsof -p PID(进程打开的文件);lsof -u user;lsof -iTCP -sTCP:LISTEN(只看监听) |
nmap | 端口扫描与主机发现,安全检查与网络探测工具 | nmap -p 1-1000 host;nmap -sV host(探测服务版本);nmap -sn 192.168.1.0/24(只做主机发现) |
查"端口被谁占了"最快的一条:
ss -tlnp | grep :8080或lsof -i :8080。注意ss -p显示进程需要 root 权限,普通用户执行看不到进程名。连接数异常增长时,ss -s看总数、ss -tn state time-wait | wc -l看 TIME_WAIT 堆积——后者在高并发短连接服务上很常见。详细排查见 ss 连接分析。
五、接口与路由
ip 命令来自 iproute2 套件,已经全面取代了 ifconfig、route、arp 这一组老命令。老命令在最小化安装的系统里可能根本没装,所以优先掌握 ip。
| 命令 | 作用 | 常用示例 |
|---|---|---|
ip addr | 查看/配置 IP 地址 | ip addr(简写 ip a);ip addr add 192.168.1.10/24 dev eth0;ip addr del ... |
ip link | 查看/配置网络接口状态 | ip link(简写 ip l);ip link set eth0 up/down;ip link show eth0 |
ip route | 查看/配置路由表 | ip route(简写 ip r);ip route add default via 192.168.1.1;ip route get 8.8.8.8(查到某个 IP 会走哪条路由,排查多网卡问题时很有用) |
ip neigh | 查看/管理邻居表(即 ARP 表,IP 与 MAC 的对应关系) | ip neigh(简写 ip n);ip neigh flush dev eth0(清空,换网关后常用) |
ip -s link | 显示接口的流量统计,看丢包、错误、错包计数 | ip -s link show eth0;ip -s -s link(更详细) |
ifconfig | 传统接口配置(已废弃但仍在用) | ifconfig;ifconfig eth0;ifconfig eth0 up/down |
route | 传统路由查看 | route -n(数字形式,不解析域名) |
arp | 传统 ARP 缓存查看 | arp -a;arp -n;arp -d host(删条目) |
ethtool | 查看/调整网卡参数:速率、双工、驱动、统计 | ethtool eth0(速率/双工/是否 up);ethtool -S eth0(详细计数,查丢包);ethtool -i eth0(驱动信息);ethtool -K eth0 gro off(关闭 GRO,抓包调优时用) |
网卡显示 UP 但网络不通,先看
ip -s link里的 RX/TX 错误计数——如果是errors或dropped在涨,多半是物理层问题(网线、光模块、交换机端口)。ethtool eth0能确认协商速率:如果本该是千兆却协商成了百兆,网速慢的原因就在这。
六、DNS 与防火墙
| 命令 | 作用 | 常用示例 |
|---|---|---|
| nslookup | 域名解析查询,交互/非交互都支持 | nslookup example.com;nslookup -type=mx example.com(查邮件记录) |
| dig | 功能最全的 DNS 查询工具,排查解析问题首选 | dig example.com;dig +short example.com(只取结果);dig @8.8.8.8 example.com(指定 DNS 服务器);dig +trace example.com(从根服务器逐级追踪);dig -x 1.2.3.4(反向解析) |
host | 简版 DNS 查询,输出最简洁 | host example.com;host -a example.com(全部记录) |
getent | 从系统数据库查询(hosts、passwd、group 等),会走 /etc/hosts 和 DNS 两条路 | getent hosts example.com;getent passwd root;getent group docker |
iptables | 传统 IPv4 防火墙(新系统推荐 nftables/ufw) | iptables -L -n -v(列出规则);iptables -A INPUT -p tcp --dport 80 -j ACCEPT;iptables -t nat -L(NAT 表);iptables-save > rules.bak(备份) |
| tcpdump | 命令行抓包,网络排障的终极手段 | tcpdump -i eth0 port 80;tcpdump -i any -nn -c 100(抓 100 个包);tcpdump -w cap.pcap(写文件);tcpdump -r cap.pcap(读文件);tcpdump -i eth0 host 1.2.3.4 and port 443 |
抓包分析流程与工具对比见 tcpdump 抓包;端口占用排查见 lsof 文件句柄。抓包建议一定加
-w存文件,再拿下来用 Wireshark 或直接tcpdump -r分析——直接在生产终端里看滚动的包根本来不及读。防火墙的现代替代品见 安全加密与审计。
一句话总结
网络速查:测连通用 ping/mtr,测端口用 nc -zv,发请求用 curl(-w 拆耗时),远程用 ssh/scp/rsync,查端口占用用 ss/lsof,配网络用 ip addr/link/route/neigh,查网卡用 ethtool,查 DNS 用 dig/getent,看真实流量用 tcpdump——30 个命令覆盖从"通不通"到"包里是什么"的排查全流程。