DNS服务器分流方案
一、 DNS介绍
DNS 是什么?
DNS是 Domain Name System 的缩写也就是域名解析系统,它的作用非常简单,就是根据域名查出对应的 IP地址。
可以把它想象成一本巨大的电话本,比如当你要访问域名www.humeng.cn,首先要通过DNS查出它的IP地址是123.58.34.9
为什么需要DNS?
易于记忆和使用、层级结构和分级管理、灵活性和可扩展性、IP地址变动处理、负载均衡和故障转移(GSLB)、安全性和防护
DNS服务器:就是一台翻译名字到IP的软件。

域名的形式:

cn: 一级域名. 表示这是一个企业域名。同级的还有 “net”(网络提供商), “org”(⾮非盈利组织) 等。
humeng: 二级域名,指公司名。
www: 表示主机域名为 www
DNS资源记录




递归查询和迭代查询的区别
DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代
DNS递归名称解析:在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以本地名称服务器为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可
DNS迭代名称解析:(或者叫迭代查询)的所有查询工作全部是DNS客户端自己进行(以DNS客户端自己为中心)。在条件之一满足时就会采用迭代名称解析方式:
递归

迭代

二、 现有DNS情况
1、113.106.88.2、112.95.235.2:有解析权,主要用来反解析或一些域名解析(策略路由)
2、113.106.88.4:国内解析,转发至202.96.134.133;202.96.128.86,有对一些客户网段做转发选择(单路由)
3、113.106.88.5、113.106.88.6:国内外解析,互为主备。国内:114.114.114.114 ; 202.96.134.134,国外:8.8.8.8,210.0.128.250; 210.0.128.251
4、SDW dns10.88.232.4:配有IP88.2、88.4、88.5、88.6,转发到外部网络88.6
目前说的智能DNS只有国内和香港出口的分流选择,一些有美国IP业务的反馈访问缓慢问题,为了解决这个问题以及让后续dns更加符合客户的需求,根据来源IP灵活选择相应DNS服务器,所以增加部署多出口分流DNS,可以根据来源IP和特定域名来转发到不同公用DNS服务器上解析
三、 多出口分流DNS工作流

IP归属 | 主/备DNS | Zone |
---|
广东电信 | 202.96.128.86/202.96.134.166 |
|
广东移动 | 211.136.192.6/211.136.20.204 |
|
广东联通 | 210.21.196.6/221.5.88.88 |
|
香港IP | 114.114.114.114 | 8.8.8.8/1.0.0.1 |
美国IP | 114.114.114.114 | 8.8.4.4/1.1.1.1 |
多出口分流DNS转发服务器主要功能是根据客户端IP属性和域名将请求转发到相应的公用DNS服务器上,工作过程:
1、客户端发出域名解析请求(客户端IP可能是电信、联通、移动、香港、美国)
2、经过防火墙等设备到达多出口分流DNS服务器,首先判断是否在白名单,不在白名单IP列表则拒绝,解析终止,在白名单则进行下一步匹配
3、根据配置文件中IP列表匹配视图,转发请求到配置好的公用DNS,目前配置有电信、移动、联通、国外等DNS,分国内、香港、美国出口。
4、路由器根据收到的请求数据包修改源IP为相应的公用DNS IP,根据请求包中的来源dns分发到不同出口
5、公用DNS答复给多出口分流DNS后再回复给客户端
6、客户端收到回复,解析完成
四、 安装部署
1、关闭selinux,NetworkManager,防火墙开放53端口
2、安装bind,yum install -y bind*(当前版本9.11.4)
3、主配置文件/etc/named.conf,解析库文件目录/var/named
IP归属 | 主DNS | 备DNS |
---|
广东电信 | 202.96.128.86 | 202.96.134.166 |
广东移动 | 211.136.192.6 | 211.136.20.204 |
广东联通 | 210.21.196.6 | 221.5.88.88 |
香港IP | 8.8.8.8 | 1.0.0.1 |
美国IP | 8.8.4.4 | 1.1.1.1 |
配置
主配置文件/etc/named.conf
1、allow-query:定义白名单(必须,在一个广义局域网内)
修改主配置文件/etc/named.conf
在主 DNS 的全局部分添加如下记录:
acl "idc_all" {
127.0.0.1;
14.18.41.0/24;
} //指定允许哪些地址进行转发
};
options {
listen-on port 53 { any; }; //监听哪些主机,any 为预定义 ACL,表示所有
allow-query { idc_all;}; //允许查询的主机范围
…}
2、定义不同view,配合acl(如果IP太多,可写入文件中,更清晰明了)
view ctnet {
match-clients { ct; };
include "/var/named/ct.zone"; //电信的 IP 则读取这个 ZONE 文件
forwarders{ 202.96.128.86;202.96.134.166; }; //指定转发到指定 DNS 服务器
}
五、 测试
1、将测试端分别放在不同的ACL中,看日志,是否走对应的view,以及对比解析情况
解析测试
vim /var/named/hk.zone

nslookup www3.l.google.com
nslookup www3.l.google.com 10.200.4.229
2、结果查询:
日志:/var/named/name.log
tail -f /var/named/log/named.log |grep 172.28.12.37
抓包tcpdump
tcpdump host 172.28.12.37
tcpdump -i eth0 udp port 53|grep 172.28.12.37
dig命令使用语法
dig [-t TYPE] name [@SERVER] [+trace]
-t TYPE:表示解析类型
A:查询A记录
NS:查询ns
axfs:查询全量传送,即查询所有的资源记录(生产环境必须关闭)
-x:查询反向解析记录
@SERVER:表示以指定的DNS服务器进行解析,如果不写,dig 会依次使用 /etc/resolv.conf 里的地址作为 DNS 服务器
+trace:表示跟踪解析过程,可不写
+short:表示以短格式显示解析的内容,即只显示域名解析后的IP
nslookup 使用语法
nslookup -qt = type domain [dns-server]
dns-server:表示使用指定的DNS
-qt:表示解析类型
domain: 要查询的域名
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://zblog.hqyman.cn/post/10485.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏

微信支付宝扫一扫,打赏作者吧~
休息一下~~