DNS(三)全局流量调度

一、EDNS
EDNS(Extension Mechanisms for DNS),在遵循已有的DNS消息格式的基础上增加一些字段,来支持更多的DNS请求业务。

二、edns-client-subnet
允许DNS resolver传递用户的ip地址给authoritative DNS server.以实现对客户端的精准调度。
重新编译安装bind以实现支持edns-client-subnet

wget ftp://ftp.isc.org/isc/bind9/9.9.3/bind-9.9.3.tar.gz
tar xf bind-9.9.3.tar.gz
cd bind-9.9.3
wget http://wilmer.gaa.st/edns-client-subnet/bind-9.9.3-dig-edns-client-subnet-iana.diff 
yum -y install patch
patch -p0 < bind-9.9.3-dig-edns-client-subnet-iana.diff
./configure --without-openssl
make

测试
./bin/dig/dig @ns1.google.com www.google.es +client=157.88.0.0/16

如下为抓到的数据包

三、智能DNS
智能DNS,通过判断访问者的来源,为不同的访问者智能返回不同的IP地址,可使访问者在访问网站时可获取指定的IP地址,以提升访问速度、流量调度等效果。
从概念可以知道,是否能获取访问者准确的IP地址和IP地址库的精准度是影响调度的决定性因素。
域名解析过程如下图,一般情况下,客户端请求localDNS,localDNS最后请求权威DNS,如果权威DNS支持智能DNS解析和edns,会有如下几种情况:

 

1、如客户端LOCALDNS支持EDNS
权威DNS在获取访问者来源IP时,获取edns-client-subnet扩展里携带的IP来判断访问者的地理位置,实现智能解析。
2、如客户端LocalDNS不支持EDNS
LocalDNS迭代请求至权威DNS,权威 DNS根据访问者LocalDNS出口IP来判断访问者的地址位置,实现智能解析。
3、客户端使用的不是localDNS
例如客户端配置的DNS是谷歌的8.8.8.8,那权威DNS获取的IP地址就是国外的地址,此时可能就无法调度到就近机房了,如:把北京的用户调度到深圳的机房。

四、BIND实现智能DNS

实现:
客户端IP地址为10.30.20.74,请求test.ts.lan的解析请求,解析IP地址为192.168.1.1
客户端IP地址为10.30.20.71,请求test.ts.lan的解析请求,解析IP地址为192.168.1.2

# vim /etc/named.conf
acl group1 {
10.30.20.74;
};

acl group2 {
10.30.20.71;
};

# vim /var/named/chroot/etc/view.conf
view "GROUP1" {
match-clients { group1; };
zone "ts.lan" {
type master;
file "group1.ts.lan.zone";
};
};

view "GROUP2" {
match-clients { group2; };
zone "ts.lan" {
type master;
file "group2.ts.lan.zone";
};
};

# vim group1.ts.lan.zone
$ORIGIN .
$TTL 3600 ; 1 hour
ts.lan IN SOA op.ts.lan. dns.ts.lan. (
2001 ; serial
900 ; refresh (15 minutes)
600 ; retry (10 minutes)
86400 ; expire (1 day)
3600 ; minimum (1 hour)
)
NS op.ts.lan.
$ORIGIN ts.lan.
op A 10.30.20.118
test A 192.168.1.1

# vim group2.ts.lan.zone
$ORIGIN .
$TTL 3600 ; 1 hour
ts.lan IN SOA op.ts.lan. dns.ts.lan. (
2001 ; serial
900 ; refresh (15 minutes)
600 ; retry (10 minutes)
86400 ; expire (1 day)
3600 ; minimum (1 hour)
)
NS op.ts.lan.
$ORIGIN ts.lan.
op A 10.30.20.118
test A 192.168.1.2
# systemctl reload named

在客户端10.30.20.74测试

# host test.ts.lan 10.30.20.118
Using domain server:
Name: 10.30.20.118
Address: 10.30.20.118#53
Aliases:

test.ts.lan has address 192.168.1.1

在客户端10.30.20.71测试

# host test.ts.lan 10.30.20.118
Using domain server:
Name: 10.30.20.118
Address: 10.30.20.118#53
Aliases:

test.ts.lan has address 192.168.1.2

五、全局流量调度

上图为流量调度的逻辑架构图,实现场景如下所述:
1、为加快访问速度,将不同地区的用户解析到就近机房,如:南方用户解析到南方的机房,北方用户解析到北方机房
2、同一个地区的会建设多个机房,按照权重配比进行负载均衡,如:按照权重配比,南方用户会部分解析到广州机房,部分用户解析到深圳机房,实现负载均衡。
3、故障转移,健康检测模块(ICMP、TCP、HTTP)对所有机房进行健康探测,当出现机房异常时,实现调度到其他机房,实现流量的全局调度。如:广州机房出现故障,将南方用户调度的深圳机房。
这里有一个问题,就是DNS全局生效需要一定的时间,无法做到及时性。

原文地址:https://www.cnblogs.com/guoxianqi2020/p/13761055.html