dns服务

Posted 扫驴

tags:

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

假设我们的dns服务器ip是192.168.1.65 我们网站的域名是hh.com,我们租用了192.168.1这个网段的全部ip地址

比如www.hh.com的ip是192.168.1.4

xx.hh.com的ip是192.168.1.8

特别注意的是,我们的dns服务器是dns.hh.com,ip是192.168.1.65

 

 

 

首先安装dns服务yum -y install bind

配置文件,有两处地方:

第一:

[root@localhost etc]# ls /etc/named*
/etc/named.conf /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key

 

第二:

 

[root@localhost ~]# cd /var/named
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves

 

 

 

首先编辑主配置文件:

有一个地方要留意,两个地方要修改

修改:

        listen-on port 53 { 192.168.1.65; };

这个是dns服务器的dns服务监听哪个端口,当然,最好写成any        listen-on port 53 { any; };顺便把ipv6哪个配置项也改成any listen-on-v6 port 53 { any; };

修改:

allow-query { any; };允许哪些ip进行dns请求,这个当然要允许所有的主机

留意:

主配置文件最下方,有两段话

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

这个的作用不再多说,有一定经验的应该清楚

 

 

 

其次编辑 /etc/named.rfc1912.zones 这个配置文件定义了正向解析和反向解析相关的

在原有基础上添加,或者把原来的配置文件全部删除,重新配置都可以,这里我们是在原有基础上添加

 

因为这个dns服务器只负责解析hh.com这一个域和192.168.1这一段ip,所以只需要给这俄格与添加一条正向和一条反向即可

添加一个正向解析的配置:

zone "hh.com" IN {
  type master;
  file "hh.localhost";
  allow-update { none; };
};

 

再添加一个反向解析的配置

zone "1.168.192.in-addr.arpa" IN {
  type master;
  file "hh.loopback";
  allow-update { none; };
};

 

以上,type是配置这个dns是从服务器还是主dns服务器 ,allow-update表示是否允许其他的dns服务器进行跟新,这是针对搭建dns集群时有用,这里我们只建一台,所以我们就配置为master

allow-update 配置为none

 

如果搭建主从dns服务器的时候,那么主服务器就因该类似这样配置:

zone "hh.com" IN {
  type master;
  file "hh.localhost";
  allow-update { 192.168.1.66;192.168.1.67; };
};

从服务器类似这样:

zone "hh.com" IN {
  type slave;

  masters { 192.168.1.65; };
  file "slaves/hh.localhost";
  allow-update { none; };
};

//masters { 192.168.1.65; };注意192.168.1.65;两边要留有空格

//从服务器约定俗称的把解析记录保存再/var/named/slaves目录下,这个是约定俗称的规矩

file表示具体的解析记录是在/var/named目录下的什么文件,比如这里我们具体的正向解析记录的文件为/var/named/hh.localhost

 

 

最后就是配置具体的解析记录了:

 

 

 

/var/named目录下已经为我们准备好了正向和反向的模板,我们就先复制一下,然后再修改

[root@localhost named]# cp -a named.localhost hh.localhost

[root@localhost named]# cp -a named.loopback hh.loopback

 

 

编辑正向解析文件 hh.localhost:

 

$TTL 1D
@       IN SOA  hh.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.hh.com.
dns     A       192.168.1.65
www     A       192.168.1.4
xx      A       192.168.1.8

SOA后面跟dns具体负责解析哪个域

ns记录代表dns的域名

注意以上两个,后面都必须带.,不能省略,这个.代表根域,事实上所有的域名后面都带这个,只不过,很多时候我们省略了,比如我在浏览器里键入网址的时候,只不过是浏览器帮我们补全了,这里

不能省略必须带上

同时还需要注意的是,解析记录里必须包含dns解析 

dns A 192.168.1.65

 

编辑反向解析

 

$TTL 1D
@    IN SOA    hh.com. rname.invalid. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
    NS    dns.hh.com.
65    PTR    dns.hh.com.
4    PTR    www.hh.com.
8    PTR    xx.hh.com.

 

 

然后启动dns服务,

service named  start

然后我们把windows的dns临时修改为192.168.1.65,以供测试,再ping一下

 

 

 

 

 

 

 

 

配置视图以实现智能dns(本测试例子中,有来自1网段的客户端,和来自二网段的客户端,他们访问www.xx.com,得到的dns解析地址是不同的):

还是编辑主配置文件,把include "/etc/named.rfc1912.zones";这句话注释掉,然后添加下面的配置,

view dns1 {//定义视图

    match-clients{ 192.168.1.0/24; };//匹配客户端地址列表

    match-destinations { any; };

    recursion yes;//允许递归查询开关

    include "/etc/dns1.zones";//定义解析域,然后定义不同的数据库文件

};

view dns2 {//定义视图

    match-clients{ 192.168.2.0/24; };//匹配客户端地址列表

    match-destinations { any; };

    recursion yes;//允许递归查询开关

    include "/etc/dns2.zones";//定义解析域,然后定义不同的数据库文件

};

然后就能分别编写相应的dns1.zones和dns2.zones以及各自对应的位于/var/named目录下的解析记录文件,步骤和前面相同

 

以上是关于dns服务的主要内容,如果未能解决你的问题,请参考以下文章

Windows 2012 R2 DataCenter服务器DNS无法打开AD, DNS错误代码4000 4007 4013

代码片段 - Golang 实现简单的 Web 服务器

从片段调用 Google Play 游戏服务

错误代码 dns_probe_possible怎么解决

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)