• {{ item.name }}
  • Home
  • Linux
  • Programming
    • Python
  • Life
  • Other
  • Tools
  • 投资者该如何参与优秀的区块链项目- NuLink社区圆桌会议
  • 什么是NuLink?- 项目中文社区与项目研究组成员 Rookie 对话实录
  • NuLink 融资 400 万美元用于开发隐私保护技术
  • NuLink的零知识证明介绍(1)
  • 用bitwarden_rs搭建属于自己的密码管理器
  • 修复 CentOS vps 网卡失效
  • 记录用mac给Nexus6P刷Android10的错误
  • Centos 6.8启用 TCP BBR拥塞控制算法
  • Nginx 启用HTTP2功能
  • Mac 安装adb工具
  • WordPress 默认编辑器代码按钮

CentOS中用Bind配置DNS服务器

  • iansiu
  • 2015-02-08
  • 0

一、什么叫DNS?

DNS 为Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种服务机制。它在互联网的作用是:把域名转换成网络可以识别的ip地址,在通过IP地址访问主机。比如:我们上网时输入的 www.163.com会自动转换成为202.108.9.16。其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析。 DNS使用TCP和UDP, 端口号都是53, 但它主要使用UDP,服务器之间备份使用TCP。
全世界只有13台“根”服务器,1个主根服务器放在美国,其他12台为辅根服务器,DNS服务器根据角色可以分为:主DNS, 从DNS, 缓存DNS服务器,DNS转发服务器。

什么是A记录?

A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。

什么是NS记录?

NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。

什么是别名记录(CNAME)?

也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.domain.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就是“www.domain.com”和“mail.domain.com”。实际上他们都指向“host.domain.com”。

什么是泛域名解析?

泛域名解析定义为: 用户的域名aaa.com,之下所设的*.aaa.com全部解析到同一个IP地址上去。 比如客户设mail.aaa.com就会自已自动解析到与aaa.com同一个IP地址上去。

DNS的查询方式

递归查询:只要发出递归查询,服务器必需回答目标IP与域名的映射关系。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外DNS服务器发出查询请求,得到结果后转交给客户机;

迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以使其他的DNS服务器地址。

一般DNS服务器之间属迭代查询,若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便再向DNS3发出请求;

二、使用bind搭建DNS服务器

测试环境: CentOS 6.5

主DNS服务器IP:192.168.1.5
辅DNS服务器IP:192.168.1.8

yum install -y bind bind-utils
cp /etc/named.conf{,.bak}        ## 备份主配置文件
> /etc/named.conf

vim /etc/named.conf

加入如下配置:

options {
         directory "/var/named";      ## 配置文件目录
};
zone "." IN {                         ## root根解析
         type hint;
         file "named.ca";
};
zone "localhost" IN {                 ## 本地解析,localhost解析到127.0.0.1
         type master;
         file "localhost.zone";
         allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {      ## 本地反解析,127.0.0.1解析到localhost
         type master;
         file "named.local";
         allow-update { none; };
};

include "/etc/rndc.key";
chown named /etc/named.conf ## 更改权限
cd /var/named/
dig -t NS . > named.ca

vim localhost.zone          ## 加入

$TTL 600
@ IN SOA localhost. admin.localhost. (
                         2 ; serial
                         1D ; refresh
                         1H ; retry
                         1W ; expire
                         3H ) ; minimum
@          IN NS localhost.
localhost. IN A  127.0.0.1

vim named.loca              ## 加入

$TTL 86400
@ IN SOA localhost. admin.localhost. (
                         2 ; serial
                         1D ; refresh
                         1H ; retry
                         1W ; expire
                         3H ) ; minimum
@ IN  NS   localhost.
1 IN  PTR  localhost.

检测配置是否有问题:

named-checkconf

检测正解析:

named-checkzone "localhost" /var/named/localhost.zone

检测反解析:

named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local

生成 rndc.key, 如果没有这个key namd 是启动不了的。

rndc-confgen -r /dev/urandom -a

更改权限

chown named:named /etc/rndc.key

启动服务

/etc/init.d/named start

查看一下named进程是否监听了53端口

netstat -lnp |grep named

首先测试正向解析:

dig @127.0.0.1 localhost.

接着测试反解析:

dig @127.0.0.1 -x 127.0.0.1

三、增加一个域名(zone)

vim /etc/named.conf ## 增加

zone "123.com" IN {       ## 域名解析
                  type master;
                  file "123.com.dns";
                  allow-update { none; }; ## 表示允许指定的 client 來更新 zone 內的资料
                  allow-transfer { 192.168.1.8; }; ## 如果有辅助DNS,是否充许它可以同步zone文件。
};

zone "1.168.192.in-addr.arpa" IN { ## 域名反解析,通过IP解析域名
                  type master;
                  file "123.com.rev";
                  allow-update { none; };
                  allow-transfer { 192.168.1.8; };
};

1.168.192.in-addr.arpa 是 192.168.1 网段倒着写 in-addr.arpa 是固定格式

编辑zone文件:

vim /var/named/123.com.dns ## 增加 注意是这里是正向解析

$TTL 600
@ IN SOA 123.com. root.123.com. (
                      2 ; serial
                      120 ; refresh
                      14400 ; retry
                      3600000 ; expiry
                      86400 ) ; minimum

      IN  NS   ns.123.com.
ns    IN  A    192.168.1.5
www   IN  A    192.168.1.5

编辑反解析文件:

vim /var/named/123.com.rev ## 增加 注意这里是反向解析

$TTL 600
@ IN SOA 123.com. root.123.com. (
                     2 ; Serial
                     120 ; Refresh
                     14400 ; Retry
                     3600000 ; Expire
                     86400 ) ; Minimum

@  IN   NS   123.com.
5  IN   PTR  www.123.com.
5  IN   PTR  mail.123.com.
5  IN   PTR  bbs.123.com.

分别检测两个配置文件是否有问题:

named-checkzone "123.com" 123.com.dns
named-checkzone "1.168.192.in-addr.arpa" 123.com.rev

重启named服务测试:

dig @127.0.0.1 www.123.com
dig @127.0.0.1 -x 192.168.1.5

四、配置DNS转发

我们配置的DNS是只能解析我们定义的zone的,我们没有定义的是不能解析的。配置DNS转发就可以解析其他互联网上的域名了,前提是这个域名在互联网中的确在使用,也就是说这个域名已经被某个DNS服务器解析了。

vim /etc/named.conf     在options{} 里面增加

forward first;
forwarders { 8.8.8.8;
             8.8.4.4; };

如果只写添加主解析 8.8.8.8 貌似不能解析,需要主辅DNS一起填写,虽然 /etc/resolv.conf 只填写主DNS也可以正常解析外网.

原理大概就是我们执行 dig @127.0.0.1 www.123.com 可以成功解析,那是因为我们定义了个域名(Zono),但是我们执行 dig @127.0.0.1 www.baidu.com 不会成功,是因为www.baidu.com这个域名,我们并没有在Bind中定义(Zone),所以,当用127.0.0.1这个DNS服务器不能解析www.baidu.com的时候,可以自动转发请求到 8.8.8.8 这个DNS服务器

重启服务

service named restart

再执行

dig @127.0.0.1 www.baidu.com

五、配置主从

在从服务器上

yum install -y bind bind-utils

拷贝主上的配置文件到从上:

scp /etc/named.conf [email protected]:/etc/named/
scp /var/name/{localhost.zone,named.local} [email protected]:/var/named/
/etc/named.conf, /var/named/localhost.zone, /var/named/named.local

拷贝过来后,修改一下从的/etc/named.conf

内容参考:

options {
        directory "/var/named";
};
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

zone "123.com" IN {
        type slave;
        file "slaves/123.com.dns";
        masters { 192.168.1.5; };
};

zone "1.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/123.dns.rev";
        masters { 192.168.1.5; };
};

include "/etc/rndc.key";

生成rndc.key

rndc-confgen -r /dev/urandom -a

更改权限

chown named:named /etc/rndc.key

启动named

/etc/init.d/named start

启动成功后会在 /var/named/下生成一个slaves目录,这个目录下会有 123.com.dns 123.com.rev 这两个文件,内容是和主上的一样的

在从上测试

dig @127.0.0.1 www.123.com

再测试没有定义的域名

dig @127.0.0.1 www.baidu.com

六、测试主从同步
在主dns上更改文件 /var/named/123.com.dns ## 在最后增加一行 ,随便加的哈

test IN A 1.1.1.1

另外需要修改一下第三行的那个数字串,这个是用来做标记的,只有这个数字变化了,才可以让从自动跟着变,数字只能是变大,不能减小
重启主namd服务:

/etc/init.d/named restart

经测试我们发现一个问题,就是从经常会同步特别慢,这是很要命的。所以需要我们做一个特殊操作,在主上的/etc/named.conf中,abc.com的zone中增加两行:

notify yes;
also-notify { 192.168.0.12; };

 

© 2025 laowang's blog
Theme by Wing