正向解析DNS服务

DNS(Domain Name System,域名系统),万维网上做为域名和IP地址相互映射的一个分布式数据库,可以使用户更方便的访问互联网,而不用去记住可以被机器直接读取的IP数串。经过域名,最终获得该域名对应的IP地址的过程叫作域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

/etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。

resolv.conf的关键字主要有四个,分别是:
nameserver    //定义DNS服务器的IP地址
domain       //定义本地域名
search        //定义域名的搜索列表
sortlist        //对返回的域名进行排序
下面咱们给出一个/etc/resolv.conf的示例:
domain  51osos.com
search  www.51osos.com  51osos.com
nameserver 202.102.192.68
nameserver 202.102.192.69
最主要是nameserver关键字,若是没指定nameserver就找不到DNS服务器,其它关键字是可选的。
nameserver表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。
domain   声明主机的域名。不少程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。若是没有域名,主机名将被使用,删除全部在第一个点( .)前面的内容。
search   它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。
domain和search不能共存;若是同时存在,后面出现的将会被使用。
sortlist  容许将获得域名结果进行特定的排序。它的参数为网络/掩码对,容许任意的排列顺序。

 “search domainname.com”表示当提供了一个不包括彻底域名的主机名时,在该主机名后添加domainname.com的后 缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。
其中domainname和search可同时存在,也可只有一个;nameserver可指定多个

前提准备:
一台centos7作服务器,两张网卡(桥接and仅主机),一台centos6作客户端,仅主机html

A、搭建DNS服务器:
一、[root@centos7 ~]# yum install bind

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
Installed:
bind.x86_64 32:9.9.4-72.el7
Dependency Installed:
python-ply.noarch 0:3.4-11.el7
Complete!
二、[root@centos7 ~]# rpm -ql bind
/etc/logrotate.d/named
/etc/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/rwtab.d/named
/etc/sysconfig/named
/run/named
/var/log/named.log
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves
三、[root@centos7 ~]# rpm -qa "bind*"
bind-libs-lite-9.9.4-72.el7.x86_64
bind-license-9.9.4-72.el7.noarch
bind-9.9.4-72.el7.x86_64
bind-libs-9.9.4-72.el7.x86_64
bind-utils-9.9.4-72.el7.x86_64
四、数据库存放于 /var/named 下 ,且系统默认named已安装,
五、查看named的状态且启动该服务:
[root@centos7 ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@centos7 ~]# systemctl start named
[root@centos7 ~]#
六、查看IP,有IP便可上网
[root@centos7 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:87:73:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.58.254/24 brd 192.168.58.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe87:7317/64 scope link
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:87:73:21 brd ff:ff:ff:ff:ff:ff
inet 172.20.119.243/16 brd 172.20.255.255 scope global noprefixroute dynamic ens37
valid_lft 83928sec preferred_lft 83928sec
inet6 fe80::23ec:ee7:326a:3f9c/64 scope link noprefixroute
valid_lft forever preferred_lft foreverpython

七、编辑网卡配置文件,添加DNS1=192.168.58.254:
[root@Centos6 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@Centos6 ~]# service network restart
Shutting down interface eth0: Device state: 3 (disconnected)
[ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Active connection state: activating
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/6
state: activated
Connection activated
[ OK ]
八、咱们在客户端查看配置文件,会显示主机IP:
[root@Centos6 ~]# cat /etc/resolv.confweb

Generated by NetworkManager

domain localdomain
search localdomain
nameserver 192.168.58.1
nameserver 192.168.58.254数据库

(host、dig、nslookup是三个专业测试名字解析的工具)

九、[root@Centos6 ~]# host www.qq.com
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached
此时,咱们去修改配置文件:
十、[root@centos7 ~]# vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmlvim

options {
listen-on port 53 { localhost; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; centos

/* 
     - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
     - If you are building a RECURSIVE (caching) DNS server, you need to enable

"/etc/named.conf" 61L, 1802C 缓存

将文件中的127.0.0.1 改成localhost,将allow-query {} 中改成 any ,

十一、使其生效:
[root@centos7 ~]# rndc reload
server reload successful
十二、此时做为客户端,去访问百度,能通,以下:服务器

[root@Centos6 ~]# dig www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60669
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;www.baidu.com.         IN  A

;; ANSWER SECTION:
www.baidu.com.      1200    IN  CNAME   www.a.shifen.com.
www.a.shifen.com.   300 IN  A   61.135.169.125
www.a.shifen.com.   300 IN  A   61.135.169.121

;; AUTHORITY SECTION:
a.shifen.com.       1200    IN  NS  ns4.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns1.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns2.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns5.a.shifen.com.
a.shifen.com.       1200    IN  NS  ns3.a.shifen.com.

;; ADDITIONAL SECTION:
ns5.a.shifen.com.   1200    IN  A   180.76.76.95
ns1.a.shifen.com.   1200    IN  A   61.135.165.224
ns3.a.shifen.com.   1200    IN  A   112.80.255.253
ns2.a.shifen.com.   1200    IN  A   220.181.57.142
ns4.a.shifen.com.   1200    IN  A   14.215.177.229

;; Query time: 1018 msec
;; SERVER: 192.168.58.254#53(192.168.58.254)
;; WHEN: Thu Jan 31 19:09:55 2019
;; MSG SIZE  rcvd: 260

分析:此时做为客户端尽管无上外网功能,去ping百度可通,当把7的内网关闭,6没法访问外网,却能够访问7访问过的百度,这是7留下了缓存!当把7的缓存rndc flush 清除掉,6就没法再访问外网了,因此,7就叫只缓存服务器,只利用缓存去访问。网络

接下来,咱们的目标是把它变成能有本身的数据库,能够解析数据的域后缀的DNS服务器。

一、查看配置文件:

[root@centos7 ~]# vim /etc/named.conf
其中的 “ include "/etc/named.rfc1912.zones"; ” 专门存放域名的
查看:[root@centos7 ~]# vim /etc/named.rfc1912.zones
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};dom

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

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};

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

zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};

咱们把zone "magedu.com" IN {
type master;
  file "magedu.com.zones";

}; 添加进去

[root@centos7 ~]# named-checkconf 来检查语法,无错不提示

二、[root@centos7 ~]# cd /var/named

[root@centos7 named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@centos7 named]# cp -p named.localhost magedu.com.zone
[root@centos7 named]# id named
uid=25(named) gid=25(named) groups=25(named)
[root@centos7 named]# vim magedu.com.zone

$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA :
"magedu.com.zone" 10L, 152C

咱们将其文件修改,变成下图所示:
$TTL  1D
@      IN   SOA  master   admin.magedu.com.  (
                   2019013120               ;  serial
                                                        1D       ;   refresh
                                                        1H       ;   retry
                                                        1W      ;   expire
                                                        3H    )   ;   minimun
        NS         master
master       A            192.168.58.254
www          CNAME    websrv
websrv      A             192.168.58.133
blog           A             192.168.58.136
@              mx          10  mailsrv1
@              mx           20  mailsrv2
mailsrv1     A            192.168.58.137
mailsrv2     A            192.168.58.138

使用“ named-checkzone ” 来检查语法。

[root@centos7 ~]# rndc reload
server reload successful

[root@Centos6 ~]# cat /etc/resolv.conf

Generated by NetworkManager

domain localdomain
nameserver 192.168.58.254

搜索结果以下:
[root@Centos6 ~]# dig www.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15911
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 18

;; QUESTION SECTION:
;www.magedu.com. IN A

;; ANSWER SECTION:
www.magedu.com. 600 IN A 101.200.188.230

;; AUTHORITY SECTION:
magedu.com. 172154 IN NS ns2.alidns.com.
magedu.com. 172154 IN NS ns1.alidns.com.

咱们如今恢复网卡:ifconfig Eth1 up 再添加一个路由:route add default gw 192.168.58.100 (可随便写)ping www.baidu.com 可通但IP每次都不同,说明DNS服务能够作到均衡负载的功能。