07-Linux中DNS详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07-Linux中DNS详解相关的知识,希望对你有一定的参考价值。

接“06-Linux中DNS详解(三)


九、配置主从DNS服务器实现域名解析容错


1、实验环境
zhangyujia.com(192.168.80.100)为主区域,com(192.168.80.200)为辅助区域。


2、修改zhangyujia.com(192.168.80.100)的区域配置文件——

vi /etc/named.rfc1912.zones

[named.rfc1912.zones]

zone "zhangyujia.com" IN {
       type master;
        file "named.zhangyujia.com";
       allow-update { none; };
        notify yes; #添加此条目(我这个区域如果有变化是否通知辅助区域:是) 
        allow-transfer { 192.168.80.200; }; #允许那些DNS把区域文件拷贝走
        also-notify { 192.168.80.200; }; #如果有变化了通知那些DNS服务器
};

3、保存并退出,重启服务。


4、配置辅助DNS服务器com(192.168.80.200),创建区域——

vi /etc/named.rfc1912.zones

[named.rfc1912.zones]

zone "zhangyujia.com" IN {
        type slave; #辅助区域
        file "named.zhangyujia.com";
        masters { 192.168.80.100; }; #主DNS服务器,可以写多个

};

5、保存并退出,重启服务。


6、验证:


a.查看区域传输(到底复没复制)——

tail -n 20 /var/log/messages

若看见

transfer of ‘zhangyujia.com/IN‘ from 192.168.80.100#53: Transfer completed: 1 messages, 10 records, 285 bytes, 0.001 secs (285000 bytes/sec)

类似的话则为复制成功。


b.测试DNS是否容错——
在Windows系统上配置两个DNS,进行ping操作,把这两个DNS的网卡任意拔掉一个,如果发现地址还能解析到,则证明DNS容错成功。


c.修改zhangyujia.com(192.168.80.100),测试辅助服务器是否修改能实现容错并通知给com(192.168.80.200)——

vi /var/named/named.zhangyujia.com

[named.zhangyujia.com]

$TTL 1D
@ IN  SOA webserver.zhangyujia.com. zhangyj_public.163.com. (
        12  ;serial #修改
        1D  ;refresh
        1H  ;retry
        1W  ;expire
        3H  ;minimum
);
 IN NS webserver.zhangyujia.com.
 IN NS ftpLinux.zhangyujia.com. #增加(com)
 IN MX 10 mail

ftpLinux     IN A  192.168.80.200 #增加(com)
webserver    IN A  192.168.80.100
www          IN A  10.7.1.53
ftp          IN A  10.7.1.18
mail         IN A  10.7.1.5
smtp         IN CNAME mail
www          IN TXT "This is a web"
oa           IN A 11.11.11.11 #增加
web          IN A 22.22.22.22 #增加

保存并退出,重启named服务,使用下列命令在com(192.168.80.200)查看日志——

tail -n 20 /var/log/messages

若发现

Jan 21 20:16:28 com named[2690]: zone zhangyujia.com/IN: transferred serial 12

说明DNS已经通知到了辅助DNS。


d.还可以断开zhangyujia.com的网卡,并ping web.zhangyujia.com,如果IP地址是22.22.22.22,则本实验成功。


e.把zhangyujia.com的网卡接上,在windows系统使用nslookup来进行测试——

> set type=soa
> zhangyujia.com

回车后,可看到有两个DNS负责域名解析。

Server:  UnKnown
Address:  192.168.80.100

zhangyujia.com
        primary name server = webserver.zhangyujia.com
        responsible mail addr = zhangyj_public.163.com
        serial  = 12
        refresh = 86400 (1 day)
        retry   = 3600 (1 hour)
        expire  = 604800 (7 days)
        default TTL = 10800 (3 hours)
zhangyujia.com  nameserver = webserver.zhangyujia.com
zhangyujia.com  nameserver = ftpLinux.zhangyujia.com
webserver.zhangyujia.com        internet address = 192.168.80.100
ftpLinux.zhangyujia.com internet address = 192.168.80.200

十、配置智能域名解析(只有LinuxDNS服务器才有)


0、应用场景
a.一个网站会在三大运营商的机房内都部署,用户用哪个运营商上网,他会根据你的网络环境来自动解析到对应运营商的IP的服务器。

b.一个企业有一个网站,在外网的IP是1.1.1.1,在内网访问的IP是2.2.2.2。如果我在公司上这个网站则解析到的IP是2.2.2.2,如果我在公司外上这个网站则解析到的ip是1.1.1.1。


1、实验环境
a.www.zhangyujia.com这个网站他在电信的IP地址是11.11.11.11,在联通的IP地址是22.22.22.22。
b.电信客户使用的IP是:192.168.80.0/25,联通客户使用的IP是:192.168.80.128/25。

PS:做实验时建议初始化一个干净的环境。(建议在配置好DNS重启之后)


2、删除主配置文件根区域定义,因为实现智能域名解析需要将所有的区域添加到view中——

vi /etc/named.conf

[named.conf]

#删除此部分(注意“listen-on port 53”、“allow-query”、“dnssec-enable”、“dnssec-validation”是否为最佳值)。
zone "." IN {
        type hint;
        file "named.ca";
};

3、删除区域定义配置文件"named.rfc1912.zones"并重新创建。

rm /etc/named.rfc1912.zones
vi /etc/named.rfc1912.zones

4、插入内容。
[named.rfc1912.zones]

view "dianxin" { #电信
        match-clients { 192.168.80.0/25; }; #定义电信的客户端网段

zone "." IN {
        type hint;
        file "named.ca"; #根区域定义
};

zone "zhangyujia.com" IN {
        type master;
        file "named.zhangyujia.com.dianxin"; #电信区域文件名
        allow-update { none; };
};

};
view "liantong" { #联通
        match-clients { 192.168.80.128/25; }; #定义联通的客户端网段

zone "." IN {
        type hint;
        file "named.ca"; #根区域定义
};
zone "zhangyujia.com" IN {
        type master;
        file "named.zhangyujia.com.liantong"; #联通区域文件名
        allow-update { none; };
};

};

5、创建电信运营商的区域文件(可复制之前的进行添加)并保存。

vi /var/named/named.zhangyujia.com.dianxin

[named.zhangyujia.com.dianxin]

$TTL 1D
zhangyujia.com. IN  SOA webserver.zhangyujia.com. [email protected] (
        0   ;serial
        1D  ;refresh
        1H  ;retry
        1W  ;expire
        3H  ;minimum
);
zhangyujia.com. IN NS webserver.zhangyujia.com.
zhangyujia.com. IN MX 10 mail

webserver    IN A  192.168.80.100
www          IN A  11.11.11.11 #添加或修改

6、创建联通运营商的区域文件(可复制之前的进行添加)并保存。

vi /var/named/named.zhangyujia.com.liantong

[named.zhangyujia.com.liantong]

$TTL 1D
zhangyujia.com. IN  SOA webserver.zhangyujia.com. [email protected] (
        0   ;serial
        1D  ;refresh
        1H  ;retry
        1W  ;expire
        3H  ;minimum
);
zhangyujia.com. IN NS webserver.zhangyujia.com.
zhangyujia.com. IN MX 10 mail

webserver    IN A  192.168.80.100
www          IN A  22.22.22.22 #添加或修改

7、重启DNS服务。


8、验证:根据上文“1、实验环境”在Windows客户端中正确的配置ip在ping www.zhangyujia.com即可得出不同结果。


十一、使用DNS支持镜像Web站点实现访问负载均衡


1、更改配置文件——

vi /var/named/named.zhangyujia.com.liantong

2、添加记录(相同域名可以写一个www也可以),保存并重启服务。
[named.zhangyujia.com.liantong]

www          IN A  33.33.33.33
www          IN A  44.44.44.44

3、验证:
在Windows客户端输入nslookup——

> www.zhangyujia.com
Server:  UnKnown
Address:  192.168.80.100

Name:    www.zhangyujia.com
Addresses:  44.44.44.44, 22.22.22.22, 33.33.33.33

> www.zhangyujia.com
Server:  UnKnown
Address:  192.168.80.100

Name:    www.zhangyujia.com
Addresses:  22.22.22.22, 33.33.33.33, 44.44.44.44

> www.zhangyujia.com
Server:  UnKnown
Address:  192.168.80.100

Name:    www.zhangyujia.com
Addresses:  33.33.33.33, 44.44.44.44, 22.22.22.22

多输入几次,如果发现“Addresses”属性第一个每次都不同,则实验成功。


PS:如果不希望每次访问网站都按照顺序进行负载均衡,可以这么设置——

vi /etc/named.conf

[named.conf]

#在options中添加
 rrset-order { order random; };

PS:rrset-order 支持三个参数:fixed, random, cyclic。
fix 会将多个A记录按配置文件的顺序固定给出
random 会随机给出
cyclic 会循环给出


十二、直接域名和泛域名


1、概念


a.直接域名:实现直接使用域名(http://zhangyujia.com/)来访问网站

b.泛域名:当要创建很多域名(a.zhangyujia.com,b.zhangyujia.com,...),并且它们都解析到同一台服务器时,一个泛域名*.zhangyujia.com就完成了所有操作,非常省事(应用场景例如博客);


2、配置直接域名。

vi /var/named/named.zhangyujia.com.liantong #我是接上一项来做的实验,当然也可以还原到一个干净的系统
#像这样直接添加一条对应的地址,保存并重启服务
zhangyujia.com. IN A 192.168.80.22

3、验证:在客户端ping zhangyujia.com,若得出ip地址与添加的记录相同,则配置成功。


4、配置泛域名。(优先级比较低)

vi /var/named/named.zhangyujia.com.liantong
 #我是接上一项来做的实验,当然也可以还原到一个干净的系统
#像这样直接添加一条对应的地址,保存并重启服务
*            IN A  55.55.55.55

5、验证:在客户端ping mail(随便写点内容均可).zhangyujia.com,若得出ip地址与添加的记录相同,则配置成功。
(已完结)


欢迎关注
新浪微博:https://weibo.com/yougazhang0506
微信公众平台:张雨嘉
技术分享图片
我的网站:http://www.zhangyujia.cn
51CTO博客:http://blog.51cto.com/11099293
CSDN博客:http://blog.csdn.net/u013260195

以上是关于07-Linux中DNS详解的主要内容,如果未能解决你的问题,请参考以下文章

Python中verbaim标签使用详解

详解Android WebView加载html片段

04-Linux中DNS详解

05-Linux中DNS详解

DNS详解

企业dns服务器部署详解(上)—高速缓存dns搭建/dns正反向解析