- 博客/
DNS服务器据源地址解析的实现
·585 字·3 分钟
Linux
DNS
“就近"解析的优点#
假设有一个面向全网络的web服务,并且服务器都集中在一个地方,而访问请求是来自全国各地的,网络传输线路的长短势必会影响访问响应质量和速度。因此,为了提高客户端访问速度、提供容错能力等,公司可能会按区域部署服务器,比如说在北京、杭州、广州等地,每台服务器刚好能优先响应离自己最近的访问请求,从而提高服务器响应速度。
实现"就近"解析的两种方法:
- web调度器
仅提供请求转发功能,转发给区域web服务器,把离请求主机"最近"的服务器IP返回给dns服务器,然后解析
- dns服务器
由dns服务器根据源地址直接解析到离请求主机"最近"的web服务器,本文将详细介绍此方法的实现
dns服务器据源地址解析的实现#
实验环境#
- 系统:CentOS 7
- dns服务程序:bind
- dns服务器IP: 192.168.196.168
定义acl和启用view#
acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用
只能先定义,后使用
,一般定义在配置文件中, 处于options的前面
格式:
acl acl_name {
ip;
PREFIX;
……
};
view:视图,一个bind服务器可定义多个view,每个view中可定义一个或多个zone 每个view用来匹配一组客户端 客户端请求到达时,是自上而下检查每个view所服务的客户端列表
格式:
view shanghaiview{
match-clients { shanghai; };
include "/etc/named.shanghaiview.zones"; <--指定对应区域配置文件
};
修改配置文件
/etc/named.conf
acl beijing { 192.168.196.130 ;}; <--假设beijing区域只有IP.130
acl shanghai { 192.168.196.128 ;}; <--假设shanghai区域只有IP.128
acl other { any;}; <--假设其它包含在other区域
options{
listen-on port 53 { localhost; }; <--localhost为关键字,代表本机所有IP
allow-query { any ; }; <--可提供外部服务,允许其它主机查询
};
创建view对应的区域配置文件#
- zone “.”
把name.conf文件定义的根区移动到/etc/named.rfc1912.zones
中
一旦启用了 view,所有的zone都只能定义在view中
zone "." IN {
type hint;
file "named.ca";
};
- 创建
/etc/named.beijingview.zones
zone "ffu.com" IN {
type master;
file "ffu.com.zone.bj"; <--对应各view的区域库文件名
};
- 创建
/etc/named.shanghaiview.zones
zone "ffu.com" IN {
type master;
file "ffu.com.zone.sh";
};
创建各view的区域库文件#
/var/named/ffu.com.zone.bj
$TTL 86400 ; 1 day
@ IN SOA dns1.ffu.com. dns1admin.ffu.com. (
1 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns1.ffu.com.
A 1.1.1.1
dns1 A 192.168.196.168
test A 8.8.8.8
websrv A 10.10.10.10
www CNAME websrv
/var/named/ffu.com.zone.sh
$TTL 86400 ; 1 day
@ IN SOA dns1.ffu.com. dns1admin.ffu.com. (
1 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns1.ffu.com.
A 2.2.2.2
dns1 A 192.168.196.168
test A 9.9.9.9
websrv A 13.13.13.13
www CNAME websrv
/var/named/ffu.com.zone
$ORIGIN .
$TTL 86400 ; 1 day
ffu.com IN SOA dns1.ffu.com. dns1admin.ffu.com. (
2 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns1.ffu.com.
A 1.1.1.1
$ORIGIN ffu.com.
dns1 A 192.168.196.168
test A 8.8.8.8
websrv A 1.1.1.1
www CNAME websrv
访问测试#
192.168.196.130 主机
$ dig www.ffu.com @192.168.196.168
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> www.ffu.com @192.168.196.168
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.ffu.com. IN A
;; ANSWER SECTION:
www.ffu.com. 86400 IN CNAME websrv.ffu.com.
websrv.ffu.com. 86400 IN A 10.10.10.10 <-- .130属于beijingview,解析到10.10.10.10服务器
;; AUTHORITY SECTION:
ffu.com. 86400 IN NS dns1.ffu.com.
;; ADDITIONAL SECTION:
dns1.ffu.com. 86400 IN A 192.168.196.168
;; Query time: 2 msec
;; SERVER: 192.168.196.168#53(192.168.196.168)
;; WHEN: Fri Jul 28 09:55:47 CST 2017
;; MSG SIZE rcvd: 112
192.168.196.128 主机
$ dig test.ffu.com @192.168.196.168
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> test.ffu.com @192.168.196.168
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57430
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;test.ffu.com. IN A
;; ANSWER SECTION:
test.ffu.com. 86400 IN A 9.9.9.9 <-- .128属于shanghaiview,解析到9.9.9.9服务器
;; AUTHORITY SECTION:
ffu.com. 86400 IN NS dns1.ffu.com.
;; ADDITIONAL SECTION:
dns1.ffu.com. 86400 IN A 192.168.196.168
;; Query time: 2 msec
;; SERVER: 192.168.196.168#53(192.168.196.168)
;; WHEN: Fri Jul 28 00:05:52 2017
;; MSG SIZE rcvd: 81
192.168.196.155 主机
$dig www.ffu.com @192.168.196.168
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> www.ffu.com @192.168.196.168
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62993
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; QUESTION SECTION:
;www.ffu.com. IN A
;; ANSWER SECTION:
www.ffu.com. 86400 IN CNAME websrv.ffu.com.
websrv.ffu.com. 86400 IN A 1.1.1.1 <-- .155属于otherview,解析到1.1.1.1服务器
;; AUTHORITY SECTION:
ffu.com. 86400 IN NS dns1.ffu.com.
;; ADDITIONAL SECTION:
dns1.ffu.com. 86400 IN A 192.168.196.168
;; Query time: 2 msec
;; SERVER: 192.168.196.168#53(192.168.196.168)
;; WHEN: Thu Jul 27 02:29:47 2017
;; MSG SIZE rcvd: 152
Related
使用XtraBackup工具实现MySQL数据备份及恢复
·1177 字·6 分钟
Linux
Mysql
Xtrabackup
使用mysqldump工具实现MySQL数据备份
·885 字·5 分钟
Linux
Mysql
MySQL主从复制的实现
·632 字·3 分钟
Linux
Mysql