泛域名解析听着专业性很强,拆解开来理解其实并不复杂。假设你注册了example.com这个域名,正常情况下访问www.example.com可以打开网站,但如果在浏览器地址栏输入abc.example.com,或是随便填一个xyz123.example.com,这类子域名原本不存在,访问时自然无法加载页面。泛域名解析的作用就是添加一条星号主机记录,让所有没有单独配置过的子域名,统一指向同一个服务器IP。
这套功能的核心就是星号记录。你进到DNS管理后台,新建一条主机记录为星号的A记录,配置*.example.com指向你的服务器IP,之后所有未手动设置的子域名请求都会匹配这条记录。不过这里有一条优先级规则需要记住,如果你单独给www.example.com配置了一条独立记录并指向别的IP,访问www子域名时就会优先读取这条精确记录,星号规则不会生效。只有那些完全没有做过任何配置的子域名请求,才会被星号记录捕获。

不少人会去B站找相关实操教程,同时也想弄清楚这项技术的实际用途。
在B站搜索关键词“泛域名解析”或者“泛解析 教程”,搜到的内容大致分成三类。一部分是域名解析基础科普,UP主会从DNS的基础概念开始讲解,同时录屏演示阿里云、腾讯云域名控制台添加星号记录的完整操作。另一类内容偏向建站实操,比如搭建个人博客系统,希望每位访客都能分配独立子域名,手动逐条添加解析记录工作量太大,配置泛解析就能一次性搞定。还有一部分进阶内容,讲解泛域名搭配SSL通配符证书的用法,只配置泛解析把流量导向服务器,不配套部署对应证书,浏览器访问时依旧弹出安全风险提示。B站技术团队曾经发布过一篇题为《哔哩哔哩内网DNS实践》的文章,里面明确提到一条经验:谨慎启用泛域名解析。这个态度也能说明,这项功能虽然好用,但不能随意开启。
具体配置步骤,不管选用阿里云、腾讯云还是Cloudflare域名解析,整体流程差别不大。登录域名管理后台,找到解析设置页面,点击新增记录,记录类型选择A,主机记录填写星号,记录值填入服务器公网IP,TTL保持默认参数即可。保存配置之后,等待几分钟到十几分钟生效,打开命令行执行dig abc.example.com,如果返回IP和你填写的服务器地址一致,就代表解析生效。如果还想要不同子域名对应服务器上不同目录,例如abc.example.com访问服务器内/var/www/abc目录,就需要在Nginx或者Apache中配置虚拟主机,依靠正则匹配子域名,把请求分发到对应目录。这一步属于服务器层面的设置,和DNS侧的泛解析属于两件独立的事情。
在实际应用场景里,多租户平台是泛解析最典型的使用场景。比如SaaS服务平台,注册用户都能获得user1.saas.com这类专属子域名,每当新增用户就手动去DNS后台新增记录,根本不具备可行性。泛解析搭配通配符证书,再加上服务器端动态路由,三者配合,用户注册完成之后对应的子域名就可以直接访问。开发测试环境是另一类常用场景,临时搭建feature-a.test.yourdomain.com用来验证新功能,提前配好泛解析,这类临时子域名可以随时创建使用,不用等待DNS解析生效。短链接服务同样会用到泛解析,随机生成字符作为子域名,全部都能被星号记录捕获。
但有一项风险必须重点留意。泛解析一旦开启,所有不存在的子域名请求都会返回有效IP,攻击者可以自行构造login.yourdomain.com或者pay.yourdomain.com这类地址,泛解析会自动把请求转发到你的服务器。一旦攻击者找到可以在服务器上传部署页面的入口,就能利用你的域名制作仿冒官方登录页的钓鱼页面,浏览器地址栏会正常显示你的域名,普通用户很难分辨真假。B站内网DNS实践文章提出慎用泛解析,也包含这个原因:当部分子域名需要单独配置时,很容易忽略泛解析的存在,引发业务故障。
还有一个容易被忽略的隐患,就是随机子域名查询攻击。泛解析会为所有不存在的子域名返回有效IP,攻击者可以编写脚本批量生成随机子域名持续查询你的DNS服务器。正常情况下,查询不存在域名会返回NXDOMAIN结果,递归服务器缓存该结果,资源消耗很低。开启泛解析之后,每一条随机子域名查询都会被当成有效请求处理,权威DNS服务器可能遭遇每秒数万次查询,最终造成服务瘫痪。
所以泛解析的正确使用思路是,配置星号记录之后,一定要在服务器侧增加访问控制。未知子域名请求接入时,默认返回403状态码或者静态占位页面,不要直接放行到业务逻辑。同时不要给MX记录、TXT记录配置泛解析,防止攻击者利用该特性绕过邮件安全校验。定期检查清理DNS解析列表,移除已经废弃不用的子域名记录。
泛解析算不上高阶技术功能,本质相当于一个开关,开启之后能够简化子域名管理,不开启也不会影响网站基础访问。当业务确实需要批量动态生成大量子域名,泛解析几乎是唯一可行方案。如果只是搭建个人博客,仅需要www和blog两个子域名,完全没必要开启泛解析,手动添加两条解析记录,不用额外配置服务器访问防护,省心很多。