基于源IP自治系统(AS)号的动态DNS响应实现方案咨询
嘿,这个需求其实完全不用非得搭自建DNS服务器,不少云DNS服务已经支持基于ASN或者IP段的智能解析了,我给你梳理下可行的方案:
Cloudflare 本身就支持(进阶功能)
你现在在用的Cloudflare其实就有这个能力,它的负载均衡规则或者自定义页面规则结合ASN匹配条件就能实现。具体来说,你可以在Cloudflare的负载均衡里创建不同的后端池,把对应ISP的目标IP分别放进对应的池里,然后添加路由规则:当请求的ASN匹配你指定的编号时,就把流量路由到对应的池。如果ASN匹配有遗漏,还可以补充IP段作为 fallback 判断条件,完全贴合你的需求。不过要注意,这个ASN匹配的功能需要Cloudflare的Pro级以上套餐(或者Enterprise,看你的业务规模),基础免费版可能没有这个选项。其他云DNS服务选项
比如AWS Route 53的流量策略,就支持基于ASN的路由规则,你可以创建不同的DNS记录集,然后通过流量策略判断请求来源的ASN,返回对应的解析结果。另外,Google Cloud DNS的路由策略也支持基于ASN或IP范围的匹配,很适合多ISP场景的流量分流需求。如果你真的想自建的话(不推荐,除非有特殊需求)
当然也能实现,比如用PowerDNS配合Lua脚本,或者Bind的视图(view)功能结合ASN到IP段的映射数据库来做。不过自建的话需要自己维护ASN和IP段的映射数据(比如定期更新MaxMind的相关数据库或者其他ASN数据源),还要保证DNS服务器的高可用,成本和维护量比云服务大不少,除非你有必须自建的特殊理由,不然优先选云服务方案会更省心。
备注:内容来源于stack exchange,提问作者IMIEEET

