
1.1 明确你要排查的是“CDN 对外是否提供 80 端口”还是“从某处到 CDN 的网络链路在 80 端口被阻断”。
1.2 本文假设你有一台可以执行网络命令的机器(Linux/Mac/WSL),并准备好:curl、telnet/nc、traceroute/mtr、nmap、tcpdump/wireshark、ss/netstat,以及对 CDN 控制面板的访问权限。
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.1 查询解析到的 IP:dig +short example.cdn.com 或 nslookup example.cdn.com,记录 IPv4/IPv6。
3.2 确认 CDN 是否有针对 80 的特殊配置(有些 CDN 只对 443 开放),在 CDN 控制面板查看“端口/协议/监听端口”设置或文档。
4.1 使用 traceroute 查看走向:traceroute -n example.cdn.com(Linux)或 traceroute example.cdn.com。注意是否在某一跳开始出现星号或突然中断。
4.2 更精准使用 mtr:mtr -rw example.cdn.com,观察丢包率和延迟突变。如果在某跳丢包高且后续也高,说明链路问题或中间设备限流/丢包。
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.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.1 本地服务器防火墙:iptables -L -n 或 nft list ruleset,确认没有 DROP/REJECT 针对 80 的规则。
7.2 云环境安全组(AWS/Azure/GCP):确认入站规则允许 0.0.0.0/0(或需要的网段)访问 80。负载均衡器需配置监听 80 并转发到后端。
8.1 在客户端或靠近链路的一端抓包:tcpdump -i eth0 host
8.2 在服务器端抓包以确认是否收到 SYN:tcpdump -i any dst host <服务器IP> and tcp port 80。若服务器未收到 SYN,说明中间网络或 CDN 边缘丢弃。若收到但服务器发 RST,则是服务端未监听。
9.1 MTU 导致的数据包被丢:使用 ping -M do -s 1472
9.2 中间设备(WAF/防火墙)可能对 80 做深度包检测并丢弃或重置。观察抓包中是否有 RST 来自中间设备 IP,从而定位到哪台设备在中断。
答:不一定。Connection timed out 表示 TCP SYN 发送后没有收到响应,可能的原因包括:CDN 未在 80 监听、防火墙/ISP 层面屏蔽、路由中某跳丢包、或者客户端网络策略阻止外部 80 端口。应结合 traceroute/tcptraceroute 与抓包判断 SYN 是否走到边缘或源站。
答:如果服务端返回 RST,说明服务器或负载均衡没在该端口接受连接。登录服务器检查监听(ss/netstat),检查 web 服务配置、SELinux 状态与 iptables 规则;云环境需确认负载均衡监听与后端端口映射,必要时开启 80 或创建 HTTP 到 HTTPS 的重定向策略。
答:步骤是:1)在不同网络(手机移动网络、家宽、公司内网)做相同测试,若所有网络都无法访问 80,倾向 CDN 或源站未监听;2)用 tcpdump 在靠近源端的机器抓包看是否收到 SYN,若收到但未处理是服务端问题;3)用 traceroute/tcptraceroute 看是否某跳对 80 特殊处理;4)在 CDN 控制台查看监听端口及端口映射。综合这些结果即可判断是 CDN 配置还是链路阻断。