DNS分地区解析国内国外怎么配权重
DNS分地区解析国内国外怎么配权重
DNS分地区解析里,最容易配错的地方不是“国内解析到国内、国外解析到国外”,而是权重的理解。很多人把DNS权重当成流量调度器,觉得配成70:30,真实请求就会稳定按70%和30%走。实际使用中发现,DNS权重更像“递归DNS拿答案时的概率”,中间隔着运营商Local DNS、公共DNS、浏览器缓存、App缓存,最终到源站的流量比例会有偏差。
所以配置国内国外解析时,先把线路拆清楚,再谈权重。不要一上来就给所有IP堆在默认线路里,然后写几个权重值,这样国内用户、海外用户、爬虫、公共DNS用户可能都混在一起,后面排查延迟和故障会很难受。
先分线路,再配权重
常见DNS解析服务里,一般会有这些线路维度:默认、国内、境外、电信、联通、移动、教育网、华北、华东、华南、香港、北美、欧洲、东南亚。不同DNS厂商叫法不完全一样,但思路差不多。
配国内国外解析时,推荐先按大区拆,不要过度细分。比如业务刚开始只需要这样:
www.example.com 国内线路:解析到国内源站或国内高防节点。
www.example.com 境外线路:解析到香港、新加坡、日本、美国等海外节点。
www.example.com 默认线路:解析到兜底节点,通常放香港或海外BGP节点。
这里补充一点,默认线路一定要配。很多公共DNS、海外小运营商、特殊网络环境,DNS厂商不一定能精准识别来源。如果默认线路没配,或者默认线路指向了不合适的IP,就会出现“部分用户能访问,部分用户解析不到,或者绕路很严重”的情况。
权重只在同一条线路里生效
DNS权重不是跨线路统一计算的。比如国内线路有两个A记录,境外线路有两个A记录,它们各自按自己的权重返回。
示例:
国内线路:A 1.1.1.1 权重70;A 1.1.1.2 权重30。
境外线路:A 8.8.8.8 权重50;A 8.8.4.4 权重50。
国内用户请求DNS时,只会在国内线路的1.1.1.1和1.1.1.2之间按概率返回;境外用户只会在境外线路的8.8.8.8和8.8.4.4之间按概率返回。国内的70:30不会影响境外,境外的50:50也不会影响国内。
这个点在多节点业务里很关键。比如国内有北京、上海两个节点,海外有香港、新加坡两个节点,不要把四个IP放到同一个默认线路下用权重硬分。那样国内用户可能被解析到新加坡,海外用户也可能被解析到北京,延迟会飘。
国内国外常见权重配置场景
国内主站加海外访问
这种一般是企业官网、管理后台、SaaS控制台。主体用户在国内,海外也有人访问,但海外流量占比不高。
可以这样配:
国内线路:国内BGP节点 权重80,国内备用节点 权重20。
境外线路:香港节点 权重70,新加坡节点 权重30。
默认线路:香港节点 权重100。
国内访问走国内,延迟通常能压到20ms到60ms;海外访问走香港或新加坡,亚洲区域一般在30ms到120ms之间。默认线路放香港,是因为香港对国内和海外都比较中庸,不至于出现特别离谱的绕路。
如果网站没有ICP备案,国内源站不能直接接入大陆HTTP服务,那国内线路也可以解析到香港精品线路。比如香港BGP、CN2、GIA这类线路,国内访问比普通国际线路稳定很多。购买节点时可以关注回国质量,不要只看CPU和内存。如果你也在找这种香港大带宽或精品回国线路,可以看看129云,像香港大带宽-B型提供300Mbps峰值带宽,适合图片、下载、游戏更新包这类对带宽更敏感的业务,客服热线400-9177118。
国内多运营商用户访问
国内业务如果用户量上来,单纯“国内线路”会显得太粗。实际使用中发现,电信、联通、移动之间差异非常明显。某个节点电信30ms,移动可能150ms;移动直连很好,联通又可能绕路。
这时建议拆成电信、联通、移动线路:
电信线路:电信节点 权重80,BGP节点 权重20。
联通线路:联通节点 权重80,BGP节点 权重20。
移动线路:移动节点 权重80,BGP节点 权重20。
国内线路:BGP节点 权重100。
默认线路:香港节点 权重100。
多说一句,DNS线路匹配通常是从细到粗。能识别为电信就走电信线路,识别不了才可能走国内或默认。不同DNS厂商的优先级实现不同,配置前要看文档,尤其是“国内”和“电信/联通/移动”同时存在时,别以为它们会自动继承。
灰度发布和新节点压测
新加一个海外节点,比如从香港扩到新加坡,不建议直接50:50。DNS灰度更适合小流量开始。
境外线路可以这样滚动:
阶段A:香港 权重95,新加坡 权重5,观察30分钟到2小时。
阶段B:香港 权重80,新加坡 权重20,观察错误率、延迟、带宽、CPU、连接数。
阶段C:香港 权重50,新加坡 权重50,继续观察。
如果是API业务,除了看机器负载,还要看应用层指标:HTTP 5xx、接口P95延迟、数据库连接池、Redis延迟、跨境回源耗时。DNS只负责把用户送到节点,不负责判断后端服务是不是扛得住。
需要注意,DNS权重调整不是实时切流。TTL设置为60秒,也不代表全网60秒切完。运营商递归DNS可能会缓存更久,部分客户端也会缓存。真实场景里,权重变化后的流量曲线经常是缓慢变化,不是垂直跳变。
权重比例不要按机器配置简单换算
很多配置会按CPU核数、内存大小粗暴分配,比如8C给80%,4C给40%。这个方法只能当初始参考,不能直接上线不看数据。
DNS权重更应该结合这几类数据:
节点出口带宽:比如A节点100Mbps,B节点300Mbps,静态资源业务就要偏向B节点。
应用吞吐:同样8C机器,不同机房CPU型号、磁盘IO、网络质量不同,QPS承载差距可能很大。
访问延迟:节点能力强但延迟高,不适合给交互类请求太大权重。
故障域:两个IP如果在同一台物理机、同一交换机、同一运营商出口,权重配得再漂亮也不算真正容灾。
比如一个下载站,国内用户80%,海外用户20%。国内节点带宽100Mbps,香港节点带宽300Mbps。按用户占比看,国内应该吃大头;但按带宽看,香港更能扛流量。如果国内访问香港延迟可接受,国内线路可以给国内节点70、香港节点30,而不是国内100。这样在国内节点带宽打满时,香港能分担一部分。
TTL怎么设比较稳
TTL和权重是一起看的。TTL太长,故障切换慢;TTL太短,递归DNS请求量上升,而且部分运营商不一定完全尊重。
常见配置可以参考:
稳定生产业务:TTL 300秒。权重调整不会太频繁,DNS查询压力也比较平衡。
灰度发布阶段:TTL 60秒到120秒。方便观察新节点问题,也方便回退。
高风险迁移窗口:TTL提前一天降到60秒。迁移结束稳定后再调回300秒或600秒。
不要在故障发生后才想起来降TTL。已经被缓存出去的记录,降TTL不会让旧缓存马上失效。迁移、换IP、切高防,最好提前降。
国内和国外拆分时的典型记录写法
下面用文字表格描述一个常见配置,域名为www.example.com:
记录:A;线路:电信;值:国内电信高防IP;权重:80;TTL:300。
记录:A;线路:电信;值:国内BGP备用IP;权重:20;TTL:300。
记录:A;线路:联通;值:国内BGP IP;权重:100;TTL:300。
记录:A;线路:移动;值:国内BGP IP;权重:100;TTL:300。
记录:A;线路:境外;值:香港IP;权重:70;TTL:300。
记录:A;线路:境外;值:新加坡IP;权重:30;TTL:300。
记录:A;线路:默认;值:香港IP;权重:100;TTL:300。
这种写法的好处是,国内运营商能走更贴近的节点,境外用户不会被误送到国内单线机房,默认线路也有兜底。对于有DDoS风险的业务,国内线路可以接高防IP,源站IP不要直接暴露。
比如游戏、支付回调、活动页这类容易被打的业务,可以把国内电信流量解析到高防节点。129云的十堰高防-C型是600Gbps单机防御,单路电信线路,更适合电信用户占比较高、攻击流量明显的场景。它不是用来替代所有线路的万能节点,而是适合放在对应线路里承接高风险入口。
境外线路里香港、新加坡、日本怎么分
境外不是一个地方。海外用户如果集中在东南亚,用香港和新加坡比较常见;如果日韩用户多,日本节点延迟会好;如果欧美用户多,香港就不一定合适。
实际配置可以按用户分布来:
海外用户主要在东南亚:香港 权重50,新加坡 权重50。
海外用户主要在北美:美国西海岸 权重80,香港 权重20。
海外用户主要是国内出海访问:香港 权重80,新加坡 权重20。
海外用户分布不清楚:香港 权重60,新加坡 权重40,先跑一周日志再调。
香港节点经常被拿来做默认线路,是因为它对大陆、东南亚、日本、欧美都有可用性,但它不一定在每个区域都是最低延迟。特别是美国用户访问香港,延迟可能150ms到220ms;访问美国西海岸通常30ms到80ms。如果海外业务真的有北美用户,不要只靠香港硬扛。
DNS权重和负载均衡不是一回事
DNS权重只影响解析结果,不知道后端机器当前是否健康。A节点已经5xx了,只要DNS记录还在,递归DNS仍然可能返回A节点。
如果业务对可用性要求高,DNS层面至少要配健康检查。健康检查失败后自动摘除对应记录,比人工改解析靠谱。更进一步,可以在节点前面放SLB、Nginx、HAProxy、Anycast或云厂商Global Traffic Manager。
常见组合是:
DNS按地区调度:国内、境外、电信、联通、移动。
DNS按权重分流:同线路内多个入口按比例返回。
入口负载均衡:SLB或Nginx再分到后端应用。
应用层监控:Prometheus、Grafana、日志系统看错误率和延迟。
DNS适合做“用户该去哪个区域”,不适合做“每一个请求该打到哪台后端”。后者交给负载均衡会更稳。
公共DNS会让地区判断变复杂
现在很多用户用114DNS、8.8.8.8、1.1.1.1、DoH。DNS厂商判断线路时,依赖递归DNS出口IP或EDNS Client Subnet。如果递归DNS没有带ECS,权威DNS看到的是公共DNS节点,不一定是真实用户位置。
这会带来一个现象:用户人在国内,但使用海外公共DNS,可能拿到境外线路结果;用户人在海外,但公共DNS出口在香港,也可能拿到香港结果。
解决办法不是完全靠DNS,而是尽量让默认线路选一个“最不差”的节点。国内国外混合业务里,默认线路放香港精品线路通常比放国内单线或美国普通线路更稳。放国内单线,海外容易访问失败或高延迟;放美国普通线路,国内体验经常很差。
权重调整要看真实访问日志
不要只看DNS解析量。解析量和HTTP请求量不是一回事。一个递归DNS解析一次,后面可能有很多用户复用缓存;也可能解析很多次,但业务请求很少。
调权重时建议同时看这些指标:
各节点Nginx访问日志请求数。
各节点出口带宽峰值和95计费带宽。
各地区HTTP P95和P99延迟。
各节点5xx比例。
各节点TCP连接数、TIME_WAIT数量。
源站回源链路耗时,尤其是跨境数据库或对象存储。
比如DNS权重配置为香港70、新加坡30,但Nginx日志显示实际请求是85:15,这不一定是配置错了。可能是香港线路下的递归DNS缓存覆盖了更多用户,也可能是新加坡节点在某些地区解析占比低。DNS权重本来就不是精确流量比例,调的时候要按日志慢慢修。
高防场景下不要只改A记录
DDoS防护场景里,DNS分地区解析经常这么做:正常流量走低延迟节点,被打时把对应线路切到高防IP。这个思路可以用,但有两个坑。
一个是源站IP暴露。如果历史DNS记录、邮件头、Git配置、接口回调里泄露过源站IP,攻击可能直接打源站,DNS切高防也没用。源站安全组要只允许高防回源IP访问。
另一个是TTL太长。被打之后再切解析,旧记录还会在缓存里存在一段时间。高风险业务可以长期把入口放在高防后面,或者把TTL维持在60到120秒,但要接受DNS查询量变多。
国内高防还要看线路。单路电信适合电信用户多的业务;BGP高防适合多运营商入口;海外高防适合境外攻击和海外用户。如果国内移动用户很多,却只给移动线路解析到单路电信高防,访问质量可能会明显下降。
备案和证书也会影响解析设计
国内大陆节点跑网站业务通常要ICP备案。没有备案时,国内线路解析到大陆服务器,HTTP/HTTPS可能无法正常提供服务。这个和DNS无关,是接入合规问题。
HTTPS证书方面,多IP多地区解析不影响证书本身,只要域名一致即可。但如果不同地区回到不同源站,要保证所有源站证书一致、SNI配置一致、TLS版本一致。实际排障里见过国内节点证书更新了,海外节点忘了更新,结果只有部分地区报证书过期。
如果用CNAME接入CDN或高防,再做分地区解析,要注意同一个主机记录下不同线路可以分别CNAME到不同服务,但有些DNS厂商对A、CNAME混用有限制。配置前先确认规则,避免线上改到一半发现记录类型冲突。
一份可直接参考的配置思路
官网类业务
国内线路:国内BGP或CDN 权重100。
境外线路:香港 权重70,新加坡 权重30。
默认线路:香港 权重100。
TTL:300秒。发布或迁移前降到60秒。
游戏登录和API业务
电信线路:电信高防或BGP高防 权重80,备用BGP 权重20。
联通线路:BGP节点 权重100。
移动线路:BGP节点 权重100。
境外线路:香港GIA或新加坡BGP 权重按用户分布设置。
默认线路:香港精品线路 权重100。
TTL:60到120秒。配健康检查,异常节点自动摘除。
下载和更新包业务
国内线路:国内大带宽节点 权重70,香港大带宽节点 权重30。
境外线路:香港大带宽 权重60,新加坡或美国节点 权重40。
默认线路:香港大带宽 权重100。
TTL:300到600秒。下载业务对单次解析切换敏感度没那么高,但对带宽和丢包很敏感。
这类场景选机器时带宽比CPU更重要。比如活动包、补丁包、图片素材分发,10Mbps机器很容易顶满;300Mbps峰值带宽的香港节点更适合承接突发下载。预算敏感、流量不大的站点,也可以看129云香港-活动这类8C8G、10Mbps精品线路机器,用在官网、轻量API、管理后台更合适。
配置后怎么验证
不要只在自己电脑上ping一下。验证DNS分地区解析,要从多个网络看结果。
可以用这些方式:
本地dig指定公共DNS:dig www.example.com @114.114.114.114。
本地dig指定海外DNS:dig www.example.com @8.8.8.8。
云服务器多地域测试:北京、上海、广州、香港、新加坡、美国各跑一次dig和curl。
第三方拨测:看电信、联通、移动、海外节点解析结果和访问耗时。
Nginx日志验证:按remote_addr归属地统计各节点请求比例。
权重是否生效,不能靠一次dig判断。单次查询只会返回某个结果,或者返回一组记录。要循环查询上百次,再结合递归DNS缓存情况看大致比例。更准确的还是看入口日志里的真实请求数。
常见误配现场
只配境外线路,忘了默认线路
结果是部分用户解析不到,或者公共DNS用户走了错误线路。默认线路一定要有,通常放香港或全球可访问质量较稳的节点。
国内线路解析到海外普通线路
如果是普通美国线路,国内访问可能200ms以上,晚高峰丢包更明显。国内用户多但又不能用大陆节点时,至少选香港CN2、GIA、精品BGP这类回国质量好的线路。
权重调成0但记录还在
有些DNS服务里权重0不等于禁用,具体行为要看厂商。有的表示极低概率,有的表示不参与轮询,有的根本不允许。要下线节点,建议明确暂停记录或删除记录,并确认健康检查状态。
把高防IP和源站IP放同一线路同权重
这样攻击来了以后,仍然有一部分流量会直接到源站。高防入口和源站不要并列对外解析,源站应藏在后面,只允许高防或负载均衡回源。
灰度时只看CPU不看带宽
静态资源、下载、视频切片这类业务,CPU可能很低,但带宽已经满了。DNS权重继续加,用户看到的是下载慢、连接断、重试变多,不一定是服务器负载报警。
权重调整的操作节奏
生产环境调DNS权重,动作要小。比如从100:0切到50:50,中间最好经过90:10、70:30。每次调整后至少看一段时间日志,业务低峰和高峰都要看。
如果是故障切换,不要犹豫,直接暂停异常记录或把权重降到不可用状态对应的配置方式。切完之后盯解析、入口流量、错误率。等缓存逐步过期,故障节点流量会慢慢降下来。
如果是扩容,不要只加DNS权重,还要确认新节点的WAF、证书、回源、防火墙、安全组、日志采集、监控报警都已经接上。DNS一旦把真实用户导过去,缺一项都可能变成线上问题。
一眼判断该怎么配
国内用户为主,有备案:国内线路走大陆BGP或CDN,境外走香港/新加坡,默认放香港。
国内用户为主,无备案:国内、境外、默认都以香港精品线路为核心,再按海外用户分布加新加坡、日本、美国。
海外用户为主,国内少量访问:境外按真实区域拆,国内线路单独给香港或国内合规节点,默认不要放国内单线。
容易被DDoS打:对应线路放高防入口,源站隐藏,TTL提前控制,健康检查和监控必须接上。
多运营商差异明显:国内不要只用“国内线路”,拆电信、联通、移动,再给每条线路单独配权重。