SEUOJ 网络故障排查日志

本文最后更新于 2025年5月30日 下午

SEUOJ 网络问题调试日志

现象

公网域名配置解析到校园网 IP,校园网中一台路由器下,使用 NAT 再搭了一个内网。使用 NAT 转发将内网中的服务映射到校园网 IP 的对应端口上。

校园网中(一台特定机器),使用域名 oj.m5d431.cn10.208.96.251:5283 均能访问 SEUOJ,但是使用域名 oj.seucpc.com 不能访问。

内网中,使用域名 oj.seucpc.comoj.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
Thu May 15 12:22:47 2025 daemon.warn dnsmasq[1]: possible DNS-rebind attack detected: oj.m5d431.cn

这指示了潜在的 DNS-rebind 攻击可能性,进一步查阅资料得知域名绑定到内网时,dnsmasq 可能会拒绝 DNS 查询

配置好 rebind 白名单后,无需再手动配置 DNS 也能正常解析。

某个契机

去修打印机的时候用 xk 的电脑,很惊奇的发现他的电脑能够使用 oj.seucpc.comoj.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 做劫持,所以大概知道了为啥手动搞的解析无效。

经验教训

  • 怀疑哪里出问题,就去看哪里的日志
  • 调试网路的时候先关代理,这样可以减少代理对结果分析的影响。

SEUOJ 网络故障排查日志
http://ippclub.github.io/SEUOJ 网络故障排查日志/
发布于
2025年5月17日
更新于
2025年5月30日
许可协议