DNS域名解析服务

Posted

tags:

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

DNS域名解析服务

简介

人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是多对一的关系,一个ip地址不一定只对应一个域名,且一个域名只可以对应一个ip地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

原理

当你的网站制作完成后上传到你的虚拟主机时,你可以直接在浏览器中输入IP地址浏览你的网站,也可以输入域名查询你的网站,虽然得出的内容是一样的但是调用的过程不一样,输入IP地址是直接从主机上调用内容,输入域名是通过域名解析服务器指向对应的主机的IP地址,再从主机调用网站的内容。

实验介绍

  1. DNS正、反向解析
  2. DNS主从服务器的配置
  3. 分离解析

实验准备

两台Linux虚拟机(要求在同一网段,并且能够互连互通)

实验过程

首先介绍下DNS的正、反向解析

  1. 正向解析
[[email protected] ~]# rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm    //rpm一键安装DNS的软件包bind
warning: /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:bind                   ########################################### [100%]
[[email protected] ~]# rpm -qc bind    //查看bind软件包的配置文件
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback

安装好之后就要进行配置文件的修改了,首先修改主配置文件

[[email protected] ~]# vim /etc/named.conf 

listen-on port 53 { 127.0.0.1; };      //监听地址改为DNS服务器的IP地址

allow-query     { localhost; };        //允许解析的用户,修改为any 所有人

然后进行修改区域配置文件

[[email protected] ~]# vim /etc/named.rfc1912.zones

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};                //上面是模板,可以复制到下面

zone "benet.com" IN {
        type master;
        file "benet.com.zone";      //工作文件
        allow-update { none; };
};

最后是配置区域数据库文件

[[email protected] ~]# cd /var/named/    //切换目录到dns的区域数据库目录下
[[email protected] named]# ls -l
总用量 28
drwxrwx---. 2 named named 4096 8月  14 2013 data
drwxrwx---. 2 named named 4096 8月  14 2013 dynamic
-rw-r-----. 1 root  named 1892 2月  18 2008 named.ca
-rw-r-----. 1 root  named  152 12月 15 2009 named.empty
-rw-r-----. 1 root  named  152 6月  21 2007 named.localhost
-rw-r-----. 1 root  named  168 12月 15 2009 named.loopback
drwxrwx---. 2 named named 4096 8月  14 2013 slaves
[[email protected] named]# cp -p named.localhost benet.com.zone     //保留原来权限复制一个区域数据库文件并命名为benet.com.zone
[[email protected] named]# ls 
benet.com.zone  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

然后进行修改

[[email protected] named]# vim benet.com.zone    //编辑区域数据库文件
$TTL 1D    //生命周期
@       IN SOA  @ rname.invalid. (       //@表示变量 后面是资源起势变量 要修改为benet.com. admin.benet.com.
                                        0       ; serial   //序列号
                                        1D      ; refresh   //刷新时间
                                        1H      ; retry     //多长时间重试连接
                                        1W      ; expire    //最长的重试连接时间
                                        3H )    ; minimum   //无效缓存清除的时间
        NS      @       //服务器名称   这里需要修改为 benet.com.
        A       127.0.0.1    //主机地址    这里修改为192.168.10.16
        AAAA    ::1       //IPV6的地址   这里不要 直接删除   然后在下面插入
  IN MX 5       benet.com.        
mail IN  A       192.168.100.16       
www  IN  A       192.168.100.88
ftp  IN  A       192.168.100.99
*    IN  A       192.168.100.200     //表示查找不存在的网页时会指向192.168.100.200

此时关闭DNS服务器的防火墙和增强性安全功能就可以开启DNS服务了

[[email protected] named]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
[[email protected] named]# setenforce 0
[[email protected] named]# service named start
Generating /etc/rndc.key:                                  [确定]
启动 named:                                               [确定]

此时还没有结束,我们要添加一个DNS服务器指向下/etc/resolv.conf目录下,然后查看下端口是否开启,就可以进行解析了

[[email protected] named]# netstat -tnl

tcp        0      0 192.168.100.16:53           0.0.0.0:*                   LISTEN         //tcp协议的 53端口开启了

[[email protected] named]# host www.benet.com
www.benet.com has address 192.168.100.88
[[email protected] named]# host ftp.benet.com
ftp.benet.com has address 192.168.100.99     //可以看到全部解析出来了
[[email protected] named]# host abc.benet.com
abc.benet.com has address 192.168.100.200  
  1. 反向解析

下面介绍下反向解析,直接修改区域配置文件

[[email protected] named]# vim /etc/named.rfc1912.zones

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};                    //上面的部分是模板,可直接复制到下面进行修改

zone "100.168.192.in-addr.arpa" IN {      
        type master;
        file "benet.com.local";
        allow-update { none; };
};

然后是修改区域数据库文件

[[email protected] named]# cp -p benet.com.zone benet.com.local     //保留权限的复制
[[email protected] named]# vim benet.com.local       //编辑反向区域数据库文件

$TTL 1D
@       IN SOA  benet.com. admin.benet.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.
        A       192.168.100.16
16  IN  PTR     mail.benet.com.
88  IN  PTR     www.benet.com.
99  IN  PTR     ftp.benet.com.      //反向解析配置

然后重新加载配置文件
在进行反向解析测试

[[email protected] named]# host 192.168.100.16
16.100.168.192.in-addr.arpa domain name pointer mail.benet.com.
[[email protected] named]# host 192.168.100.88
88.100.168.192.in-addr.arpa domain name pointer www.benet.com.
[[email protected] named]# host 192.168.100.99
99.100.168.192.in-addr.arpa domain name pointer ftp.benet.com.

试验成功

3.DNS主从服务器的配置
首先安装配置主服务器的主配置文件、区域配置文件、区域数据库文件

[[email protected] ~]# vim /etc/named.conf
listen-on port 53 { any; };    //监听地址改为所有人
allow-query     { any; };      //允许解析所有地址

[[email protected] ~]# vim /etc/named.rfc1912.zones
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};                     //模板

zone "benet.com" IN {
        type master;           //类型 主服务器
        file "benet.com.zone";
        allow-transfer { 192.168.100.16; };     //转移指向从服务器的IP地址
};

[[email protected] ~]# cd /var/named/
[[email protected] named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[[email protected] named]# cp -p named.localhost benet.com.zone    //保留权限复制
[[email protected] named]# vim benet.com.zone     //编辑区域数据库配置文件
$TTL 1D
@       IN SOA  benet.com. admin.benet.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.
        A       192.168.100.4
  IN MX 5       benet.com.
mail IN A       192.168.100.4
www  IN A       192.168.100.88
ftp  IN A       192.168.100.99

[[email protected] named]# echo "namedserver 192.168.100.4" > /etc/resolv.conf

主服务器配置好之后先不开启服务,我们接着配置从服务器

[[email protected] ~]# vim /etc/named.conf 
listen-on port 53 { any; };

allow-query     { any; };

[[email protected] ~]# vim /etc/named.rfc1912.zones
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};                     //模板

zone "benet.com" IN {
        type slave;       //从服务器
        masters { 192.168.100.4;};    //向主服务器学习
        file "slaves/benet.com.zone;"  // 文件存放位置
};

[[email protected] ~]# echo "nameserver 192.168.100.16" > /etc/resolv.conf   //DNS指向

此时先开启主服务器的DNS服务 ,然后在开启从服务器的DNS服务 ,会发现从服务器自主学习到了区域数据库配置文件

[[email protected] named]# cd /var/named/slaves/
[[email protected] slaves]# ls
benet.com.zone

以上就是主从服务器的配置了

  1. 分离解析

分离解析主要是指根据不同的客户端提供不同的域名解析记录,下面是分离解析的实验拓扑图

技术分享图片

首先DNS域名解析服务器(Linux)要配置双网卡

技术分享图片

技术分享图片

添加好之后,点击完成,就可以识别到双网卡了,然后进行网卡配置

技术分享图片

[[email protected] network-scripts]# cp ifcfg-eth0 ifcfg-eth1     //复制网卡一的配置文件
[[email protected] network-scripts]# vim ifcfg-eth1           //进行网卡eth1的配置

DEVICE=eth0                       //名称改为eth1
HWADDR=00:0C:29:26:75:17
TYPE=Ethernet
UUID=721152db-6a08-4527-aebc-3ee130bd91d0      //这里不要,删除
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.100.4               //IP地址修改为外网网关地址12.0.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.100.1              

[[email protected] network-scripts]# vim ifcfg-eth0        //网卡eth0的配置

DEVICE=eth0
HWADDR=00:0C:29:26:75:17
TYPE=Ethernet
UUID=721152db-6a08-4527-aebc-3ee130bd91d0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.100.4               //修改IP地址为192.168.100.1
NETMASK=255.255.255.0
GATEWAY=192.168.100.1

修改完成后,重启网络服务后配置两台win7的网卡信息

技术分享图片

技术分享图片

然后rpm一键安装DNS服务的软件包bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm,进行配置文件的修改

[[email protected] ~]# rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm 
warning: /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:bind                   ########################################### [100%]
[[email protected] ~]# vim /etc/named.conf

listen-on port 53 { 127.0.0.1; };      //监听地址修改为any

allow-query     { localhost; };       //允许解析的地址修改为any

[[email protected] ~]# vim /etc/named.rfc1912.zones

view "lan" {
        match-clients { 192.168.100.0/24; };
        zone "benet.com" IN {
         type master;
         file "benet.com.zone.lan";
        };

        zone "." IN {
          type hint;
          file "named.ca";
         };
};

view "wan" {
        match-clients { any; };
        zone "benet.com" IN {
         type master;    
         file "benet.com.zone.wan";
        };
};

                 //添加如上内容并删除下面的所有配置内容

最后修改区域数据库配置文件

[[email protected] ~]# cd /var/named/
[[email protected] named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[[email protected] named]# cp -p named.localhost benet.com.zone.lan
[[email protected] named]# cp -p named.localhost benet.com.zone.wan
[[email protected] named]# vim benet.com.zone.lan
$TTL 1D
@       IN SOA  @ rname.invalid. (    //rname.invalid.修改为admin.benet.com.
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1     //修改为主机IP地址,即192.168.100.1
        AAAA    ::1         //这里删除,添加下面的内容
www  IN A       192.168.100.88

[[email protected] named]# vim benet.com.zone.wan
$TTL 1D
@       IN SOA  @ rname.invalid. (  //rname.invalid.修改为admin.benet.com.
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1  //修改为主机IP地址,即12.0.0.1
        AAAA    ::1     //这里删除,添加下面的内容
www  IN A       12.0.0.1

重启DNS服务

就可以进行解析了

技术分享图片

技术分享图片

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

shell脚本实现批量解析域名IP地址(支持多DNS)

DNS分离解析和智能解析 1构建DNS域名服务器的分离解析 DNS分离解析域名服务器概述 DNS分离解析域名服务器实际也是主域名DNS服务器,这里所说的分离解

CentOS7 搭建 DNS 域名解析服务器

DNS解析原理

Linux网络——DNS域名解析服务(正向解析实验)

DNS域名解析服务