阿克森云登录 / 注册English/中文/cn繁体/tw

第 5 课 · 网络配置与排查:ip/ss/curl/dig 四件套

Linux 基础 · L1 · 第 5 / 6 节 · 约 3 分钟

「网站打不开」可能是五层里的任何一层:本机配置、DNS 解析、路由、端口防火墙、服务本身。这一课给你四件工具(ip/ss/curl/dig)和一条固定排查顺序——从此网络问题不再靠猜。

网络排查五层顺序示意

ip:看自己是谁、路怎么走

ip -brief addr        # 本机 IP 一览(网卡/地址/状态一屏看完)
ip route              # 路由表:default via 后面是你的网关
ip -6 addr show scope global   # IPv6 地址(双栈时代必看)
# 老命令 ifconfig/route 属于 net-tools 包,新系统默认不带——ip 是现行标准

读法要点:公网 IP 常不在网卡上(云环境 NAT 映射,网卡上是内网地址)——出口公网 IP 用 curl -s ifconfig.me 问外面的人,这才是别人看到的你。

ss:谁在监听、连着谁

ss -tlnp              # 所有 TCP 监听端口与进程(t=TCP l=监听 n=数字 p=进程)
ss -ulnp              # UDP 监听(DNS 类服务看这里)
ss -tn state established | head   # 当前已建立的连接
ss -s                 # 连接统计总览

审计口径:监听地址决定暴露面——127.0.0.1:3306 是本地服务(安全),0.0.0.0:3306 是对全网开放数据库(事故预定)。ss -tlnp 的输出里每一个 0.0.0.0 或 [::] 都要能回答「为什么必须公网可达」。

dig:解析链路逐跳问

dig +short A 你的域名            # 解析到什么 IP(+short 只看答案)
dig +short AAAA 你的域名         # IPv6 解析在不在
dig 你的域名 +noall +answer      # 带 TTL 的完整应答
dig @1.1.1.1 你的域名 +short     # 指定解析器对照(排除本地缓存/污染)
dig +trace 你的域名 2>/dev/null | tail -8   # 从根开始追委派链(NS 问题定位)

curl:HTTP 层的显微镜

curl -vI https://你的域名 2>&1 | grep -E "^<|SSL|subject"   # 响应头+证书信息
curl -o /dev/null -sw "dns:%{time_namelookup} conn:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\n" https://你的域名/
# 分阶段计时:哪一段数字大,瓶颈就在哪一段(dns 大→解析慢;ttfb 大→后端慢)
curl --resolve 你的域名:443:服务器IP -sI https://你的域名/ | head -1
# 绕过 DNS 直连指定 IP 测试(验证「解析对了没」与「服务好了没」分开)

固定排查顺序:从里到外五层

层问题命令健康判据
①本机服务起了吗、端口听了吗systemctl status + ss -tlnpactive 且目标端口在监听
②防火墙端口放行了吗ufw status / nft list ruleset目标端口在白名单
③解析域名指对了吗dig +short 对照服务器 IP解析结果=出口公网 IP
④路由包能到吗、路径对吗ping / mtr 目标可达且末跳无持续丢包
⑤应用HTTP 应答正常吗curl -vI 看状态码与证书200/301 且证书有效
# 一键跑完五层的快速脚本(把 IP 与域名换成你的):
SIP=服务器IP; DOM=你的域名
systemctl is-active nginx; ss -tlnp | grep -E ":80|:443"
ufw status 2>/dev/null | grep -E "80|443" || echo "(无 ufw,查 nft/云安全组)"
dig +short A $DOM; echo "期望: $SIP"
ping -c 5 $SIP | tail -2
curl -sI --resolve $DOM:443:$SIP https://$DOM | head -1

纪律:从①往⑤查,不要跳层——「先 dig 再上机器」是新手顺序,「先看服务在不在跑」才是运维顺序;每层有明确的健康判据,查到第一个不健康的层就停下深挖。

丢包与 MTU:两个进阶读法

网络「时好时坏」的两个高频根因值得提前认识:①丢包的分段定位——用 mtr 逐跳看丢包从哪一跳开始并持续到末跳(中间跳偶发丢包多是路由器对 ICMP 限速,不必紧张;判读方法在诊断课程展开);②MTU 不匹配——特征是「ping 通、小页面能开、大文件/图片加载卡死」,因为大包被路径上某一环静默丢弃。快速验证:ping -M do -s 1472 目标IP(1472+28 字节头=1500 标准 MTU;不通就逐次减 10 找到能通过的最大值,反推路径 MTU)。修复方向:把本机网卡 MTU 调到路径允许的值(隧道/PPPoE 环境常见 1492/1400),或开启路径 MTU 发现相关的 ICMP 放行——防火墙别把 type 3 code 4 的「需要分片」消息挡掉。

IPv6 专项:双栈时代的必查项

越来越多的「解析正常但打不开」发生在 IPv6 侧:域名有 AAAA 记录、客户端优先走 v6、而服务器的 v6 路径断了——v4 用户一切正常,v6 用户全军覆没,监控还报「服务正常」(因为监控走 v4)。双栈机器的三查:ip -6 addr show scope global(有全局 v6 地址吗)、ip -6 route | head -3(有 default 路由吗)、curl -6 -sI https://ipv6.google.com | head -1(出站 v6 通吗);再加一条从外部:curl -6 -sI https://你的域名(入站 v6 通吗)。四条全通才算双栈健康——只做 v4 监控等于只看了半张网。

本节小结

  • 四件套各管一层:ip 看身份与路由、ss 看监听与连接、dig 看解析、curl 看应用;
  • 排查按「本机→防火墙→解析→路由→应用」五层顺序,每层有判据,不跳层不猜;
  • 监听地址是暴露面:127.0.0.1 是本分,0.0.0.0 要有理由。