泛域名, 又叫做通配符域名, 这是一种设置方法。它的具体做法是通过DNS中的一条通配符记录进行操作。这样做的直接效果是域名下的所有子域名查询都会得到统一的处理前提条件是这样的这些子域名没有单独进行过配置最终返回的解析结果是完全一样的。
比如, 一旦设置好这个 .example.com 后, 那么 a.example.com 和 test.example.com 这两个域名, 就可以自动被解析到同一个地方去了, 用户根本不需要一个一个地去添加对应的记录。
一、工作原理
泛域名的核心, 其实就是在DNS系统里面去配置通配符记录。在具体的操作过程里呢, 当DNS服务器收到了一个对某子域名的查询请求, 同时系统在核查之后发现这个子域名没有精确匹配的记录, 这个时候, 系统就会自动把那个通配符记录所对应的地址给返回回去。
正因为存在这种机制, 所以一条通配符记录就能够替代掉非常多的大量子域名记录, 这就在很大程度上显著地降低了针对DNS进行维护所需要承担的成本。
拿 m.dcqzss.cn 这个例子来说, 如果上级域名已经配置了泛解析 .dcqzss.cn, 那么, m.dcqzss.cn 就不需要再单独添加记录, , 也可以。正常解析到同一个服务器上, 这就适用在, 多端统一接入的场景里。
二、配置方法
1. 你需要去打开那个用来管理域名里面DNS设置的面板。
2. 新增记录的步骤是, 主机记录这个位置请填写上相应的内容, 然后类型方面需要选择A或者CNAME其中之一, 最后值的这个地方填写目标Ip地址或者目标域名。
3. 先把内容存好, 然后再去等, 直到dns在全球范围内都能生效为止, 一般情况下可能只要几分钟就够了, 但是最迟也不要超过48个小时。
4. 使用任意子域名进行访问方面的测试工作, 以此来确认解析结果是否正确。
在同一个域名之下, 通配符类型的记录配置是不允许存在多条的,如果配置了超过一条的话, 那么它们之间会依次发生相互覆盖的情况。
三、这是一些典型的, 并且适用于具体场景的例子。
在内部测试环境里, 为了让事情变得稍微复杂一点但又不需要一条条去配置, 我们将多个用于测试的子域名全都指向同一个后端程序, 这样就不用一个个去设置了, 这是一个统一的指向方式。
统一网关这种架构, 就是让所有的业务子域名全都去走同一个入口, 然后呢, 由那个网关来把请求的路由和分发给做一下处理。
我们把那些数量特别多的子域名全部都统一指向cdn节点, 这样做的好处是能够让资源的管理工作变得简化。
对邮件系统进行了简化处理, 在部分具体的场景条件下, 能够有效减少关于SPF和DKIM的子域配置这一环节所需要消耗的工作量。
四、限制与风险
1. 在应用优先级规则这一事项上面, 精确记录优先于通配符记录的这种说法是成立的, 同时呢, 被单独配置好的子域名, 这种情况是既不受泛解析的影响的。
2. HTTPS 并不会去自动覆盖, 也就是说, 泛解析这个操作它仅仅只是在 DNS 这个层面解决了问题, 至于 SSL证书这个东西, 用户需要去单独申请一个通配符的证书, 这里提到了点 example.com 的情况, 如果不这样做的话, 那么访问各个子域名进行 HTTPS 连接的时候, 浏览器或者客户端就会报错说证书不匹配。
3. 子域名存在劫持的风险。因为使用了泛解析。所以任何没有声明的子域名都可以访问。如果后端程序没有对子域名进行鉴权处理。攻击者就有可能注册那些没有被使用的子域名。从而用来实施钓鱼攻击或者注入攻击。
4. 根据《互联网域名管理办法的相关规定, 域名解析的指向必须合法, 并且备案信息要完整, 泛解析同样受到这一规定的约束, 因此不允许用于没有备案的域名。
五、管理建议
后端服务需要增加一个针对子域名的白名单校验工作, 这样的话, 任何那些没有被授权的子域名所带来的访问请求都是要被拒绝的。
我们要定期去审计DNS记录的情况, 并且要及时把那些已经被废弃掉的通配符条目给删除掉, 这么做是为了能够缩小有风险的暴露范围。
把泛域名配置变更纳入运维审批流程, 避免误操作影响全站解析。
对于通配符证书的情况, 需要在它到期之前的30天时间, 去设置一个自动续期的提醒功能, 这么做的目的就是为了防止因为各种原因出现的HTTPS中断问题。
掌握了前面提到这些内容, 就可以在项目当中把通配符域名给正确地部署好并且保证安全, 同时也能兼顾到效率和合规的情况。


