SEUOJ 网络故障排查日志
本文最后更新于 2025年5月30日 下午
SEUOJ 网络问题调试日志
现象
公网域名配置解析到校园网 IP,校园网中一台路由器下,使用 NAT 再搭了一个内网。使用 NAT 转发将内网中的服务映射到校园网 IP 的对应端口上。
校园网中(一台特定机器),使用域名 oj.m5d431.cn
和 10.208.96.251:5283
均能访问 SEUOJ,但是使用域名 oj.seucpc.com
不能访问。
内网中,使用域名 oj.seucpc.com
和 oj.m5d431.cn
均能访问。
初步排查
之前再内网环境中 DNS 解析有一些问题,pan.seu.edu.cn
被解析到了错误的地方,一直未查明原因。手动在 openwrt 上配置好解析后,暂时能够正常访问。
oj.seucpc.com
出现了相同的问题,没有手动配置域名解析则内网无法使用域名访问。但是校园网可以使用域名访问内网中的服务。
我重新配置了 oj.seucpc.com
的手动解析,仍然无法访问,但是 oj.m5d431.cn
配置手动解析后可以访问。
NGINX 日志和抓包分析
校园网机器尝试 oj.seucpc.com
访问。
查看 nginx 日志,同时在内网服务器上进行了 tcpdump 抓包,访问 oj.seucpc.com
时没有任何流量经过。
怀疑是路由器网关出现问题。
dnsmasq 日志分析
DNS 解析出错的问题一直没有解决,我决定深挖一下,在 grok 的提示下我打开了路由器上 dnsmasq 的日志。有时候找不到日志文件可以用 logread | grep xxx
来翻。
dnsmasq 日志显示出现了:
1 |
|
这指示了潜在的 DNS-rebind 攻击可能性,进一步查阅资料得知域名绑定到内网时,dnsmasq 可能会拒绝 DNS 查询。
配置好 rebind 白名单后,无需再手动配置 DNS 也能正常解析。
某个契机
去修打印机的时候用 xk 的电脑,很惊奇的发现他的电脑能够使用 oj.seucpc.com
和 oj.m5d431.cn
访问,我给他配置上了路由器上的代理,于是两个都不能访问了。
这指示内网代理有一些潜在问题,以及我的机子有潜在问题。
一键测试脚本
每次都需要 curl 和 nslookup 非常麻烦,让 AI 写了一个一键测试脚本同时测两个域名,在内网和校园网上都跑脚本。
CFW 日志分析
解决内网 DNS 解析后,校园网机器仍然无法访问,关 CFW 后又可以了,直接看 CFW 的日志,发现 oj.seucpc.com
的流量走了代理,哦豁。
最终分析
oj.seucpc.com
解析到内网 IP,我的机子使用了代理规则,这个流量走了代理,代理访问内网当然直接 502 了。oj.seucpc.cn
在代理规则下走直连,所以没问题。- 路由器 dnsmasq 解析到内网IP时直接被拒绝了,要么配置域名白名单,要么配置手动解析。
- openclash 对 DNS 解析进行了劫持,因此使用 openclash 的 http 代理也被拒绝解析 DNS 到内网 IP,并且手动配置的解析无效。
回顾
- 第一个关键点是发现了 DNS 解析不手动配置会出现异常,这引导我解决了 dnsmasq 的解析拒绝问题。
- 第二个关键点是发现 xk 的电脑能正常用
oj.seucpc.com
,我开始有点怀疑是不是我机子的问题,于是。 - 第三个关键点是,搜索引擎查找时无意了解到 openclash 等会对 DNS 做劫持,所以大概知道了为啥手动搞的解析无效。
经验教训
- 怀疑哪里出问题,就去看哪里的日志。
- 调试网路的时候先关代理,这样可以减少代理对结果分析的影响。