network Roadmap
网络 / DNS / 代理专题
网络 / DNS / 代理排障专题:聚合 curl -v 抓包、DNS 解析失败、HTTP/HTTPS 代理与 socks5h、SSL 证书链、端口连通性和 HTTP 502/504 等链路问题的完整排查方法与命令组合。
网络问题先区分本机、代理、DNS、服务端和中间层五个位置,用 dig、curl -v、openssl s_client 拆开解析、TCP、TLS 和 HTTP,避免在错误位置反复改配置或关闭证书校验掩盖问题。
Troubleshooting Path
推荐排障路线图
- 01
先区分 DNS、TCP 和 HTTP 层
用 dig/nslookup、curl -v、openssl s_client 拆开解析、连接、TLS 和响应。
- 02
再确认代理和环境变量
检查 HTTP_PROXY、HTTPS_PROXY、NO_PROXY,以及 socks5 和 socks5h 的 DNS 差异。
- 03
继续验证证书和中间层
排查证书过期、证书链、公司代理 CA、网关和反向代理超时。
- 04
最后回到服务端日志
确认服务端是否收到请求,避免只在客户端反复尝试。
Common Issues
高频问题入口
Before You Change
执行前检查
- 先保存 curl -v 输出
- 代理排障时明确是否需要代理 DNS
- 证书问题先查过期和链路
- 涉及公司代理 CA 时不要直接关闭校验作为长期方案
Start Here
优先阅读
搜索引擎常用排障命令
Elasticsearch、Logstash、Kibana 排障命令速查,ES 用 _cluster/health、_cat/shards、_cluster/allocation/explain 查集群与分片,_cat/allocation 看磁盘水位,_cat/thread_pool/search 判断慢查询瓶颈,Logstash 用 _node/stats/pipelines 看 event 流转。
排障Certbot 证书自动续期失败排查
Certbot 自动续期 Let's Encrypt 证书失败时,用 certbot renew --dry-run 复现真实错误,覆盖 80 端口 HTTP-01 验证不通、Nginx 未放行 .well-known/acme-challenge、DNS TXT 记录未生效和 certbot.timer 未触发等常见根因。
排障Docker 容器网络不通排查
Docker 容器之间 ping/curl 不通、DNS 无法解析容器名或访问不了宿主机服务时,用 docker network inspect 查看网络成员,确认容器是否在同一自定义 network,Docker 内置 DNS 只在自定义网络生效,宿主机访问用 host.docker.internal。
排障hosts 文件修改不生效排查
修改 /etc/hosts 或 Windows hosts 文件后域名解析未生效时,用 getent hosts 或 ping 验证系统是否读取,Linux 重启 nscd/systemd-resolved、Windows 执行 ipconfig /flushdns 刷新缓存,浏览器可能启用 DoH 绕过 hosts 需要单独关闭。
Cheatsheets
相关速查表
curl 调试 HTTP 速查表
curl 调试 HTTP 常用命令一页速查:GET/POST 基础请求、-v/-I/-w 调试详情、-x 代理与 --connect-timeout 超时重试、-u/-F/-o 认证上传下载,接口排障、抓包验证和监控探测直接对照。
速查OpenSSL 证书与加密速查表
OpenSSL 常用命令一页速查:证书查看与生成、CSR 和自签名证书、私钥处理、TLS 连接测试和常见加密操作等 30+ 高频操作,含参数说明与典型排障场景示例。
速查HTTP 状态码速查表
HTTP 状态码一页速查:1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务端错误的完整列表,含含义说明和常见排障场景,适合接口调试和 Nginx 排障。
Latest Updates
最近更新
All Runbooks
全部相关内容
Certbot 证书自动续期失败排查
Certbot 自动续期 Let's Encrypt 证书失败时,用 certbot renew --dry-run 复现真实错误,覆盖 80 端口 HTTP-01 验证不通、Nginx 未放行 .well-known/acme-challenge、DNS TXT 记录未生效和 certbot.timer 未触发等常见根因。
排障curl 使用代理连接超时排查
curl -x 通过 HTTP/SOCKS5 代理访问超时或 Failed to connect to proxy 时,用 curl -v 定位卡在代理还是目标站,区分 http 与 socks5/socks5h 协议、代理端 DNS 解析和 NO_PROXY 环境变量是否排除了目标域名。
排障DNS 解析失败排查:NXDOMAIN、SERVFAIL 和超时
域名解析出现 NXDOMAIN、SERVFAIL、Temporary failure in name resolution 或解析慢时,用 dig、dig @1.1.1.1、dig +trace、resolvectl status 交叉对比本机解析器、公共 DNS 和权威 DNS,快速定位问题出在哪一层。
排障Docker 容器网络不通排查
Docker 容器之间 ping/curl 不通、DNS 无法解析容器名或访问不了宿主机服务时,用 docker network inspect 查看网络成员,确认容器是否在同一自定义 network,Docker 内置 DNS 只在自定义网络生效,宿主机访问用 host.docker.internal。
排障Git SSL certificate problem 解决方法
Git clone/pull 报 SSL certificate problem: unable to get local issuer certificate 时,用 GIT_CURL_VERBOSE=1 打印真实证书链,确认是否走了公司代理,把代理 CA 加入 http.sslCAInfo 或系统信任,避免直接关闭 sslVerify。
排障hosts 文件修改不生效排查
修改 /etc/hosts 或 Windows hosts 文件后域名解析未生效时,用 getent hosts 或 ping 验证系统是否读取,Linux 重启 nscd/systemd-resolved、Windows 执行 ipconfig /flushdns 刷新缓存,浏览器可能启用 DoH 绕过 hosts 需要单独关闭。
排障Kubernetes Service 访问不通排查
Kubernetes Service 通过 ClusterIP/NodePort 访问不通时,先 kubectl get endpoints 看是否为空——空则是 selector 与 Pod labels 不匹配,有值再核对 targetPort、Pod readiness 和 NetworkPolicy,最后用 busybox nslookup 验证集群 DNS 是否解析 svc.cluster.local。
排障Linux 查看 TCP 连接数与状态
Linux 服务器需要统计 TCP 连接总数、状态分布或排查 TIME_WAIT/CLOSE_WAIT 堆积时,用 ss -s 看总览,ss -tan 按状态分组统计,netstat 和 /proc/net/tcp 交叉验证,ss 从 netlink 读取比 netstat 更快也更全。
排障HTTPS 混合内容(Mixed Content)排查
HTTPS 页面加载 http:// 资源被浏览器提示 Mixed Content blocked 时,用 F12 Console 定位被阻止的 script/stylesheet/image,区分 active/passive 混合内容并逐个改成 https 或相对协议,也可在 Nginx 加 CSP upgrade-insecure-requests 兜底。
排障Nginx HTTPS 证书过期与链不完整排查
浏览器提示 NET::ERR_CERT_DATE_INVALID、curl 返回 SSL certificate problem: certificate has expired 时,用 openssl s_client -connect 查线上实际证书 dates,再对比服务器文件、确认 ssl_certificate 指向 fullchain.pem 且 certbot 续期后 reload 了 Nginx。
排障Nginx 反向代理 WebSocket 配置与排障
Nginx 反向代理 WebSocket 出现 1006 异常关闭、连接建立后很快断开或收不到消息时,必须设置 proxy_http_version 1.1、透传 Upgrade 与 Connection: upgrade 头,并调大 proxy_read_timeout 让长连接不被 60s idle 超时断开,握手成功会返回 101。
命令curl 调试 HTTP 请求常用命令
整理 curl -v、-I、--resolve、--connect-timeout、代理和请求耗时分析命令。
命令dig 和 nslookup 查询 DNS 命令
使用 dig 和 nslookup 查询 DNS 的常用命令,dig +short 快速拿到 A/CNAME 记录、dig @1.1.1.1 指定公共 DNS 对比结果、dig example.com MX/TXT 查特定类型、dig +trace 从根域名追踪权威 DNS,脚本排障优先用 dig。
命令Git 配置和取消代理命令
Git 配置和取消 HTTP/HTTPS/SOCKS5 代理的常用命令,git config --show-origin --get-regexp proxy 找出代理配置来自 system/global/local 哪一级,http.proxy 只影响 HTTP 仓库,SSH 仓库需要单独配置 ssh ProxyCommand 或 IdentityFile。
命令openssl 检查 HTTPS 证书命令
openssl s_client 检查线上 HTTPS 证书的常用命令,openssl s_client -connect example.com:443 -servername 触发 SNI 拿到真实证书,用 openssl x509 -noout -dates -issuer -subject 提取有效期与颁发者,-showcerts 查看完整证书链。
命令搜索引擎常用排障命令
Elasticsearch、Logstash、Kibana 排障命令速查,ES 用 _cluster/health、_cat/shards、_cluster/allocation/explain 查集群与分片,_cat/allocation 看磁盘水位,_cat/thread_pool/search 判断慢查询瓶颈,Logstash 用 _node/stats/pipelines 看 event 流转。
命令tcpdump 抓包命令
Linux tcpdump 抓包排查网络问题的常用命令,tcpdump -i eth0 -nn 不解析主机名和端口名减少延迟,port 80/host 过滤按端口或 IP 抓包,-w capture.pcap 保存文件后用 Wireshark 分析,权限不够用 sudo 或 setcap cap_net_raw。