Linux 命令实战 · 第 7 章 网络与连通性 章节摘要:服务跑起来了,连不上,是工程师最常遇到的「玄学」。本章给你一套从「本机」到「远端」再到「数据包」的三段式排查方法论。第一段是看自己: / 看本机 IP 与网卡、 / 看本机开了哪些端口、谁在监听。第二段是测连通: 测链路可达、 / 测 HTTP 可达、 / 测远程登录与传输。第三段是抓包: 直接看数据包——当一切上层工具都告诉不了你「为什么连不上」时,抓包是最后的真相。我们不讲网络协议理论(那是另一本书),而是讲每个命令在你排查链路上对应的那个环节,让你形成「连不上时该依次敲什么」的肌肉记忆。读完本章,你面对「服务起不来/超时/拒绝连接」不再瞎试,而是有条不紊地逐层定位。
章节摘要:服务跑起来了,连不上,是工程师最常遇到的「玄学」。本章给你一套从「本机」到「远端」再到「数据包」的三段式排查方法论。第一段是看自己:
ip/ifconfig看本机 IP 与网卡、ss/netstat看本机开了哪些端口、谁在监听。第二段是测连通:ping测链路可达、curl/wget测 HTTP 可达、ssh/scp测远程登录与传输。第三段是抓包:tcpdump直接看数据包——当一切上层工具都告诉不了你「为什么连不上」时,抓包是最后的真相。我们不讲网络协议理论(那是另一本书),而是讲每个命令在你排查链路上对应的那个环节,让你形成「连不上时该依次敲什么」的肌肉记忆。读完本章,你面对「服务起不来/超时/拒绝连接」不再瞎试,而是有条不紊地逐层定位。
阅读完本章,你应当能够:
ip addr/ip route(或旧的 ifconfig)查看本机的 IP 地址、网卡、路由表,理解现代发行版为什么用 ip 取代 ifconfig。ss -tlnp(或旧的 netstat)查看本机监听的端口与对应的进程,排查「端口到底开了没」。ping 测试链路连通与延迟,理解它走的是 ICMP 而非 TCP/UDP,以及为什么有些主机「ping 不通但能访问」。curl 做接口调试(自定义方法、头、体、超时、详细握手),理解它比浏览器更适合排查 HTTP 问题。wget 做文件下载,理解它与 curl 的定位差别(下载 vs 多功能)。ssh/scp/rsync 做远程登录与安全传输,理解密钥认证比密码安全在哪、known_hosts 的作用。tcpdump 抓包,读懂最基本的握手与挥手,定位「连接被谁重置」这类疑难问题。网络排查的金科玉律:自底向上、逐层验证——先确认本机网卡与端口(链路层),再测可达性(网络层),再测服务(应用层),最后才动用抓包这把「手术刀」。跳层乱试,是最常见的时间黑洞。
ip、ifconfigip addr 看 IP 与网卡、ip route 看路由表、ip link 看链路状态。讲清现代发行版用 ip(iproute2)取代 ifconfig(net-tools)的原因,以及 eth0/ens33/wlan0 等网卡命名。
ss、netstatss -tlnp 是排查「端口监听」的标准命令:TCP(-t)、监听状态(-l)、不反解端口名(-n)、显示进程(-p)。讲清它取代 netstat 的原因,以及如何用它确认「我的服务到底在不在监听」。
pingping 走 ICMP,测的是「链路可达 + 往返延迟」。讲清它的工作原理、-c 限制次数、为什么有些主机禁 ping 但服务可访问(防火墙过滤 ICMP),以及「ping 通不代表 HTTP 通」的常见误区。
curlcurl 是接口调试的瑞士军刀。重点掌握:-X 指定方法、-H 加头、-d 发体、-i 显示响应头、-v 详细握手、-o 保存到文件、--max-time 超时。讲清它如何暴露「3xx 重定向、4xx 客户端错、5xx 服务端错」。
wgetwget 的强项是大文件下载与递归镜像网站。讲清 -c 断点续传、-O 指定输出文件、-q 静默、-r 递归,以及它常用于脚本里(因为默认行为比 curl 更「下载友好」)。
ssh、scp、rsyncssh 是远程登录的事实标准。讲清密钥认证(ssh-keygen + ~/.ssh/authorized_keys)为什么比密码安全、known_hosts 防的中间人攻击、scp 一次传文件、rsync 增量同步(呼应第 4 章),以及 ssh 端口转发的进阶能力。
tcpdump当上层工具都失效,tcpdump 直接看数据包。讲清最基本的抓取(tcpdump -i eth0 port 80)、过滤表达式(host/port/and/or)、-w 存盘后用图形工具分析,并带你读懂一次完整的 TCP 三次握手在抓包里的样子。
本章遵循「自底向上、逐层验证」的排查方法论,七节恰好对应一条排查链路:
ip/ifconfig (01) ── 第1层:本机网卡与 IP │ ▼ ss/netstat (02) ── 第1层:本机端口监听了吗 │ ▼ ping (03) ── 第2层:目标链路可达吗 │ ▼ curl (04) ── 第3层:HTTP 服务通吗 │ ▼ wget (05) ── 第3层:下载场景的专用工具 │ ▼ ssh/scp/rsync (06) ── 第3层:远程登录与传输 │ ▼ tcpdump (07) ── 第4层:抓包,看数据包真相 │ ▼ 第 8 章:从"连通"上升到"服务管理与定时任务"
前两节是「本机自检」,中间四节(03-06)是「逐层向上测」,最后一节 tcpdump 是终极手段。这条链路的价值在于:遇到「连不上」,你按 01→02→03→04 的顺序敲,通常在第 2 或第 3 步就能定位问题,极少需要走到第 7 步抓包。
前置知识:
curl 的退出码极有用)lsof——lsof -i :80 与 ss 互补)本章为后续章节奠定的基础:
ssh/scp/rsync 是第 8 章(服务部署、日志拉取)的常用工具curl 是第 8 章(服务健康检查)的标准手段