把测试环境和线上环境做服务器IP检测对照,核心不是比较两个IP是否相同,而是确认同一份代码、同一套配置在两类机器上解析到的地址、返回内容和响应行为是否一致。测试环境通常指向内网或预发布IP,线上环境指向对外提供服务的IP,两者本就不该相同;真正需要对照的是“预期指向”和“实际指向”是否吻合。第一次接触这个问题,建议先明确一个起点:列出每个环境应当使用的IP清单,再逐个用解析和连接测试去核对。
“服务器IP”在不同环节含义不同,对照前要先确定层次,否则容易得出错误结论。
如果测试环境和线上对照时混用了不同层次,比如拿测试机的内网IP去和线上CDN节点IP比较,结论没有意义。正确做法是同一层次对同一层次。
下面这套流程可以直接在两类环境各跑一遍,把结果并排记录。
nslookup 域名 或 dig 域名,记录返回的地址。若测试环境用hosts覆盖,用 cat /etc/hosts 查看覆盖项。curl -v 访问目标地址,观察实际连接的IP和端口,确认是否与预期一致。ss -lntp 或 netstat -lntp,查看服务绑定地址。每一步都要记录“预期值”和“实测值”,差异项单独标出。例如假设预期线上解析到203.0.113.10,实测却返回198.51.100.20,就需要判断是DNS未生效、被CDN接管,还是配置写错。
测试环境与线上IP不同是常态,关键看差异是否在预期内。
判断依据是“预期清单”,不是“两边必须一样”。清单里写明了每个环境该指向哪里,实测偏离清单才需要处理。
发现偏离后,按原因分别处理:DNS记录问题就修正解析并等待生效;hosts覆盖问题就清理测试机覆盖项;监听地址问题就调整服务绑定配置;代理转发问题就核对转发头字段设置。
处理完成后必须复查,且复查要在两类环境分别进行。复查项包括:解析结果是否回到预期清单、连接是否到达正确目标、监听地址是否符合设计、日志字段是否能正确还原真实来源。复查时注意DNS缓存,必要时用指定DNS服务器查询,避免读到本地缓存。只有两类环境的实测值都回到各自预期清单,对照才算完成。
下一步:把你当前测试环境和线上环境的预期IP清单写出来,然后按上面的解析、连通、监听、日志四项各跑一次,把差异项列成表格,再决定改哪一处配置。