新闻
我们更期待的是,能在与您的沟通交流中获得启迪,
因为这是我们一起经历的时代。
分类
相关文章
热门标签

技术文档教你检测cdn没80的网络链路与端口问题

2026年5月27日
cdn

1. 目标与准备:明确问题与准备工具

1.1 明确你要排查的是“CDN 对外是否提供 80 端口”还是“从某处到 CDN 的网络链路在 80 端口被阻断”。

1.2 本文假设你有一台可以执行网络命令的机器(Linux/Mac/WSL),并准备好:curl、telnet/nc、traceroute/mtr、nmap、tcpdump/wireshark、ss/netstat,以及对 CDN 控制面板的访问权限。

2. 第一步:从客户端做最基本的连接测试

2.1 使用 curl 检查 HTTP(80)与 HTTPS(443)的差异:curl -v --connect-timeout 10 http://example.cdn.com/,观察是否有 TCP 连接建立(Connected to)或立即报错(Connection refused/timeout)。

2.2 用 telnet 或 nc 检测端口连通性:telnet example.cdn.com 80 或 nc -vz example.cdn.com 80。返回 Connection refused 表示对端拒绝;timeout 表示路径被丢弃或中间设备阻塞。

3. 第二步:DNS 与 IP 判断

3.1 查询解析到的 IP:dig +short example.cdn.com 或 nslookup example.cdn.com,记录 IPv4/IPv6。

3.2 确认 CDN 是否有针对 80 的特殊配置(有些 CDN 只对 443 开放),在 CDN 控制面板查看“端口/协议/监听端口”设置或文档。

4. 第三步:路由与路径诊断(traceroute / mtr)

4.1 使用 traceroute 查看走向:traceroute -n example.cdn.com(Linux)或 traceroute example.cdn.com。注意是否在某一跳开始出现星号或突然中断。

4.2 更精准使用 mtr:mtr -rw example.cdn.com,观察丢包率和延迟突变。如果在某跳丢包高且后续也高,说明链路问题或中间设备限流/丢包。

5. 第四步:端口特定路由检测(tcptraceroute / tracepath)

5.1 tcptraceroute 可以指定端口:tcptraceroute example.cdn.com 80。若 TCP 探测到第 N 跳就被丢弃,说明 ISP 或防火墙对 80 端口过滤。

5.2 在没有 tcptraceroute 的环境,可用 hping3:hping3 -S -p 80 -c 3 example.cdn.com,观察是否收到 SYN/ACK 或 RST。

6. 第五步:服务器/边缘是否在监听 80(CDN 边缘或源站)

6.1 如果能登录到源站或边缘节点,检查监听端口:ss -tlnp | grep ':80' 或 netstat -tlnp | grep ':80'。确认有进程在监听 0.0.0.0:80 或特定 IP:80。

6.2 检查 web 服务器配置(nginx/apache):查看配置文件中是否存在 listen 80,或是否有 redirect 强制从 80 到 443。

7. 第六步:防火墙与云安全组排查

7.1 本地服务器防火墙:iptables -L -n 或 nft list ruleset,确认没有 DROP/REJECT 针对 80 的规则。

7.2 云环境安全组(AWS/Azure/GCP):确认入站规则允许 0.0.0.0/0(或需要的网段)访问 80。负载均衡器需配置监听 80 并转发到后端。

8. 第七步:抓包验证 TCP 三次握手与响应

8.1 在客户端或靠近链路的一端抓包:tcpdump -i eth0 host and tcp port 80 -w trace80.pcap。观察是否有 SYN 发出,及是否有 SYN/ACK/RST 返回。

8.2 在服务器端抓包以确认是否收到 SYN:tcpdump -i any dst host <服务器IP> and tcp port 80。若服务器未收到 SYN,说明中间网络或 CDN 边缘丢弃。若收到但服务器发 RST,则是服务端未监听。

9. 第八步:高级检查 —— MSS/MTU、TCP 重置与中间代理

9.1 MTU 导致的数据包被丢:使用 ping -M do -s 1472 逐步降低 size 检测路径 MTU。若 PMTUD 失败,大块包会丢,表现为连接建立慢或阻塞。

9.2 中间设备(WAF/防火墙)可能对 80 做深度包检测并丢弃或重置。观察抓包中是否有 RST 来自中间设备 IP,从而定位到哪台设备在中断。

10. 问:如果 curl 报 Connection timed out,是不是说明 CDN 没有开 80?

答:不一定。Connection timed out 表示 TCP SYN 发送后没有收到响应,可能的原因包括:CDN 未在 80 监听、防火墙/ISP 层面屏蔽、路由中某跳丢包、或者客户端网络策略阻止外部 80 端口。应结合 traceroute/tcptraceroute 与抓包判断 SYN 是否走到边缘或源站。

11. 问:抓包看到服务器返回 RST,我该如何处理?

答:如果服务端返回 RST,说明服务器或负载均衡没在该端口接受连接。登录服务器检查监听(ss/netstat),检查 web 服务配置、SELinux 状态与 iptables 规则;云环境需确认负载均衡监听与后端端口映射,必要时开启 80 或创建 HTTP 到 HTTPS 的重定向策略。

12. 问:如何确认是 CDN 配置问题而不是链路问题?

答:步骤是:1)在不同网络(手机移动网络、家宽、公司内网)做相同测试,若所有网络都无法访问 80,倾向 CDN 或源站未监听;2)用 tcpdump 在靠近源端的机器抓包看是否收到 SYN,若收到但未处理是服务端问题;3)用 traceroute/tcptraceroute 看是否某跳对 80 特殊处理;4)在 CDN 控制台查看监听端口及端口映射。综合这些结果即可判断是 CDN 配置还是链路阻断。