现象
用户希望所有未单独设置的子域名(如 test.example.com, app.example.com)都能自动解析到同一个 IP 地址,以便快速部署多站点或测试环境。部分用户发现配置后,原本正常的业务子域名出现解析冲突,或者新加的恶意子域名也能访问到服务器,导致安全风险。
原因
泛解析(Wildcard DNS)是指将域名解析记录的主机记录设置为 *,意味着该域名下所有未明确指定的子域名都会匹配这条记录。它简化了管理,但打破了“子域名独立控制”的原则。一旦设置,任何拼写错误的子域名、黑客生成的随机子域名(用于钓鱼或传播恶意软件)都会指向你的服务器 IP,暴露攻击面。
先自查(3 分钟)
- 登录域名管理控制台,进入「DNS 解析」页面,检查是否存在主机记录为 * 的 A 记录或 CNAME 记录。
- 使用在线 DNS 查询工具(如站长工具或 dig 命令),随机输入几个不存在的子域名(如 abc123.yourdomain.com),看是否解析到了你的服务器 IP。
- 检查服务器防火墙(如 UFW、iptables 或云安全组)是否限制了仅允许特定 IP 或端口访问,确认泛解析带来的流量是否被有效拦截。
解决步骤
如果必须使用泛解析,请确保服务器端已做好防护;如果不需要,建议移除。以下是移除泛解析并改为精准解析的步骤,以 Ubuntu 22.04 为例,其他系统逻辑相同,仅命令略有差异。
第一步:登录域名管理控制台,删除现有的泛解析记录。
# 在域名管理 -> DNS 解析 中,找到主机记录为 * 的记录,点击删除
# 此操作在网页界面完成,无需命令行
第二步:为每个实际使用的子域名添加精准的 A 记录。假设子域名为 www 和 api,IP 为 1.2.3.4。
# 在域名管理 -> DNS 解析 中,添加记录:
# 主机记录: www, 类型: A, 记录值: 1.2.3.4, TTL: 600
# 主机记录: api, 类型: A, 记录值: 1.2.3.4, TTL: 600
第三步:如果服务器运行 Nginx 或 Apache,确保配置文件中只包含这些具体的 server_name,避免 catch-all 配置。
# Nginx 配置示例 (/etc/nginx/sites-available/default)
server {
listen 80;
server_name www.yourdomain.com api.yourdomain.com;
# 其他配置...
}
第四步:重载 Nginx 配置使更改生效。
sudo nginx -t
sudo systemctl reload nginx
注意:修改 DNS 记录后,全球生效需要时间(取决于 TTL 设置,通常 10 分钟到 24 小时)。在过渡期内,旧解析可能仍有效。删除泛解析前,务必确认没有业务依赖“任意子域名”访问,否则会导致服务中断。
验证
使用 dig 命令验证特定子域名解析,以及不存在的子域名是否不再解析。
# 验证存在的子域名
dig +short www.yourdomain.com
# 期望输出: 1.2.3.4
# 验证不存在的子域名(应无输出或返回 NXDOMAIN)
dig +short randomtest123.yourdomain.com
# 期望输出: (空) 或 ;; STATUS: NXDOMAIN
在浏览器中访问未配置的子域名,确认无法访问或显示 404 错误,而不是跳转到默认站点。
预防
- 默认不使用泛解析,除非有明确的、可控的需求(如内部测试环境且服务器有严格 IP 白名单)。
- 使用 CDN 或 WAF 服务时,确认其是否支持泛解析拦截,防止恶意子域名绕过防护。
- 定期审计 DNS 记录,删除不再使用的子域名记录。
- 在 Web 服务器配置中,设置默认 server 块返回 404 或重定向到主站,而不是展示内容。
在奇异互动如何最快处理
在奇异互动会员中心,直接访问「域名管理」→「DNS 解析」,可实时查看、添加或删除泛解析记录,操作即时生效(受 TTL 限制)。若需修改服务器防火墙规则以配合精准解析,请在「云服务器详情页」通过 VNC 控制台登录服务器进行配置。如果删除泛解析后业务出现异常,或怀疑有恶意子域名攻击,请直接提交工单,并在工单中附上:1. 受影响的域名;2. 具体的子域名示例;3. 服务器公网 IP;4. 问题发生的时间段及错误日志截图。工单提交时请关联对应的域名或云服务器产品,以便工程师快速定位。

