项目地址https://github.com/ning1875/dns_spoofdnsdist和dnsanycastdnsdist经常被用作dns缓存服务器与bgp+bird或osfp以其高性能组成dnsanycast模式anycast很简单:/etc/resolvofhosts在所有区域.confnameserver写同一个ip,比如10.10.10.10/8.8.8.8dns请求会被ecmp转发到本区域的dns-cache中,达到不跨区域但一致配置dns-viewas的目的aview表示服务使用同一个域名从不同的源IP解析到不同的地域。一个典型的应用是部署多个区域时客户端和服务器之间的通信。以open-falcon为例,agent需要与transfer建立长连接,hbs服务部署在多个region。通过L4(lvs/katran)暴露不同的VIP,但域名是一致的。这样就可以统一代理配置文件。regionrequest,transferdata项目地址https://github.com/ning1875/dns_spoof项目介绍使用powerdnsdnsdist作为缓存dns服务器dns_spoof是基于ansible-playbook运行pipline在dnsdist配置文件中添加劫持记录实现多视图劫持Arecord或劫持到指定权威dns解析的目的是支持历史记录查看和回滚。有完整的库存测试和灰度流程。整体流程说明:获取线上dns_dist配置文件到本地备份。将本地程序集配置文件推送到该区域进行离线测试。检查机器上的配置,重启服务发起离线测试机的主域名测试(即存量测试)发起离线测试机的劫持测试:case1:直接劫持的期望是直接A记录case2:转发的期望需要对应服务端查询测试正常后,推送一个灰度到线上机器(如果线上机器dist重启失败,就捡鸟)和其他所有机器。注意:以上过程是链式的,中间任何一个失败都会终止运行。安装依赖包说明#在python2.7环境下运行pipinstall-rrerequirements.txt环境在vars.yaml中准备了每个view的dns_distip:每个region包含一个在线同步配置服务器和离线测试机,一个全缓存机view-a:online_ip:1.1.1.1offline_ip:1.1.1.4online_all:-1.1.1.2-1.1.1.3修改dnsdist_conf/dns_dist.conf中的标志位:对应的是spoof:#dnsdist配置文件中的劫持标志注释行g_dist_spoof_flag_line:--autospoofbysyssre#dnsdist配置文件中的转发标志注释lineg_dist_pool_flag_line:--autoforwardpoolbysyssre```调用参数说明region:表示劫持生效的区域类型:spoof表示直接劫持,forward表示转发的域名:域名记录列表或dns待劫持服务器ip列表,以空格分隔劫持域名到指定ip列表eg:hijackbaidu.comrecordinview-ato1.1.1.1,1.1.1.2两个A记录参数:regiontypedomainips多个域名用空格隔开触发:pythonspoof_action.py-S-rview-a-tspoof-dbaidu.com-i1.1.1.11.1.1.2case1:劫持类型,原记录为劫持类型,更改case2:劫持类型,原始记录为转发类型,确定池存在,更改case3:劫持类型,原始记录不存在,在view-中添加劫持域名转发的指定dns服务器列表eg:hijackstackoverflow.coma到8.8.8.8dns解析参数:regiontypedomainipsmore触发域名用空格分隔:pythonspoof_action.py-S-rview-a-tforward-dstackoverflow.com-i8.8.8.8case1:转发类型,原始记录为劫持类型,池存在ccase2:转发类型,原始记录为劫持类型,池不存在case3:转发类型,原始记录为转发类型,池存在case4:转发类型,原始记录为转发类型,池不存在case5:转发类型,原始记录不存在,池存在case6:转发类型,原始记录不存在,池不存在使用指定的配置文件回滚参数:区域和配置文件触发:pythonspoof_action.py-R-rview-a-f./dnsdist_conf/view-a/dnsdist.conf_2_2019-09-19_stackoverflow.com
