Linux的DNS深度学习(DNS服务器搭建)

DNS(Domain Name System)解析:

  • DNS解析的过程:

如果在浏览器中输入了www.baidu.com,DNS会如何解析这个地址?

之前的www中说到,DNS解析会先查询缓存,再没有缓存的情况下会去请求域名服务器。

而DNS的解析又分为递归查询和迭代查询两个方式:

  • 递归查询
  1. 首先查询浏览器的DNS缓存,如果缓存中存在则直接返回地址
  2. 如何浏览器缓存中没有,会去查询操作系统中的配置文件host(主机名和ip映射) 
  3. 如果host中没有,则会查找操作系统的DNS缓存
  4. 如果操作系统的DNS缓存没有,则去查询本地域名服务器
  • 迭代查询
  1. 如果本地域名服务器中没有,则本地域名服务器会去请求根域名服务器
  2. 通过www.baidu.com. ,根域名服务器是可以判断出来是.com这个顶级域名, 会告诉本地域名服务器,去找.com顶级域名服务器
  3. 本地域名服务器请求.com顶级服务器,顶级域名服务器判断出来他是属于baidu二级域名服务器,告诉本地域名服务器,去找www三级域名服务器
  4. 本地域名服务器去请求www三级域名服务器, 三级域名服务器如果有ip去告诉它,如果没有,告诉它找不到

 根域名服务器的查询规则:顶级域名--->二级域名--->三级域名 ... ... 

 DNS解析方式:

  • 正向解析: FQDN-> IP ,将域名到ip解析
  • 反选解析: IP -> FQDN ,将ip到域名的解析

权威域名服务器与非权威域名服务器:

权威域名服务器:存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据

权威名称服务器的类型包括:

  • Master:包含原始区域数据,有时称作“主要服务器”
  • Slave:备份服务器,通过区域传送从Master服务器获得的区域数据的副本。有时称作“次要”名称服务器

非权威域名服务器:客户端通过其查找来自权威名称服务器的数据。

非权威域名服务器仅用于查找,对于非重要数据之外的任何内容都不具有权威性

Linux上DNS的配置过程:

  • DNS的配置文件

//DNS的主要配置文件(配置zone)
/var/named/chroot/etc/named.conf

//DNS的主要执行文件(zone的内容)
/var/named/chroot/var/named/XXX
  • DNS主配置文件划分zone

  • 正向解析的zone划分

zone的划分有三种类型:hint,master,slave

  • hint一般用于根域
  • master: 一般用于主域名服务器
  • slave: 一般用于从域名服务器

(一般配置了slave则需要有master的配置项)

  •  反向解析的zone划分

zone "XXX.XXX.XXX.XXX.in-addr.arpa" 网段的写法, .in-addr.arpa固定的格式

前面的地址为解析后的网段地址(反写)eg:200.220.168.192

[root@localhost ~]# cat /var/named/chroot/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.
//
//这个是监听端口和允许的网段,我使用的是ipv4,所以注吊ipv6,在最后的allow-query设置为any,允许其他设备查询
//注意,在DNS的配置时,断行需要用";"
options {
	listen-on port 53 { any; };
       #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";
	secroots-file	"/var/named/data/named.secroots";
	recursing-file	"/var/named/data/named.recursing";
	allow-query     { any; };

	/* 
	 - 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 
	   recursion. 
	 - If your recursive DNS server has a public IP address, you MUST enable access 
	   control to limit queries to your legitimate users. Failing to do so will
	   cause your server to become part of large scale DNS amplification 
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/
	recursion yes;

	#dnssec-enable yes;
	#dnssec-validation yes;

	#managed-keys-directory "/var/named/dynamic";

	pid-file "/run/named/named.pid";
	#session-keyfile "/run/named/session.key";

	/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
	#include "/etc/crypto-policies/back-ends/bind.config";
};
//这里是主配置文件,在这里配置文件zone,然后在/var/named/chroot/调用对应文件

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

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

//正向解析,我这里配置的是openlab的zone空间
//格式: type有三个类型(hint,master,salve)
//file是划分的空间!!!需要注意以";"结尾!!!
zone "openlab.com" IN  {
	type master ;
	file "open.zone";
};

//反向解析, in-addr.arpa为固定格式,  ip地址反写
//file后面为区域数据文件
zone "1.0.0.127.in-addr.arpa"{
	type master;
	file test.zone; 
}

#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";
  • DNS的主配置文件

//模板在/var/named/named.localhost 
[root@localhost ~]# cat /var/named/named.localhost 
$TTL 1D                              
@	IN SOA	@ rname.invalid. (        
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1

//$TTL 1D  表示存活时间(1D表示一天)
//第一个@表示zone即表示为主配置的调用zone
//IN表示域名 SOA代表资源记录的名称为起始授权记录  
//第二个@表示管理员的Email   如:lxb.163.com.
//!!!由于@在配置中有特殊含义,所以用"."代替,而且此时要com后写上.如:lxb.163.com.
//serial表示序列号(越大越好,当更新了数据库会更新这个序列号,使之+1)
//refresh表示更新时间(定义slave多久向Master要求数据更新)
//retry表示失败重新尝试时间(如果Slave无法对Master实现连接,那么在这个时间内,会一直尝试连接)
//expire表示失效时间(如果一直尝试失败,持续连接到达这个设置值时限,那么Slave将不再继续尝试连接)
//minimum表示缓存时间(如果没有写TTL默认会以这个时间为准)
//NS表示管理这个域的服务器主机名为@(这个@表示之前写的主机名)
//A表示正向解析,后面跟着ipv4的地址
//AAAA表示正向解析,但是后面跟着ipv6的地址
//PTR表示反向解析,后面记录的数据就是反解到的主机名
web IN CNAME www
//CNAME表示别名记录(如果web.XXX.com 等同于www.XXX.com)
    IN  MX  10 mail.example.com. 
//MX表示邮件服务器地址,给mail.example.com服务器设置优先级为10

Linux上搭建DNS服务器(正向解析):

  • Linux上下载DNS源

//DNS下载(由于DNS源太多,只是下载了DNS的chroot)
[root@localhost ~]# yum install bind bind-chroot bind-utils bind-libs -y
  • 在yum下载了DNS服务器之后,会产生多个配置文件:

//配置目录:(需要拷贝到chroot下)
/etc/named.conf

//工作目录:
/var/named/chroot/var/named/

//!!!根解析库
/var/named/named.ca          
  • 由于只是下载的DNS的chroot的模板,使用需要拷贝一些文件:

//将/etc/named.conf拷贝到/var/named/chroot/etc内
[root@localhost ~]# cp /etc/named.conf   /var/named/chroot/etc/

//将/var/named/named.ca拷贝到/var/named/chroot/var/named内
[root@localhost ~]# cp /var/named/named.ca  /var/named/chroot/var/named
  • 配置DNS服务器(设置zone和zone的配置)

//在/var/named/chroot/etc/named.conf下配置
[root@localhost named]# vim  /var/named/chroot/etc/named.conf
zone "new.com" IN  {
        type master ;
        file "open.zone";
};
//配置的空间为new.com,对于的主调用文件为open.zone,并设置为主网络

//在/var/named/chroot/var/named/open.zone 进行open.zone文件的配置
[root@localhost ~]# vim /var/named/chroot/var/named/open.zone 
@  IN  SOA  dns1.new.com. 1420284530.qq.com. (
                                     10
                                     1D
                                     1H
                                     1W
                                     3H )

        IN   NS dns1.new.com.
        IN   NS dns2.new.com.
        IN   MX  10  mail.new.com.
dns1    IN   A  192.168.220.100
dns2    IN   A  192.168.220.101
ftp.new.com.  IN   A  192.168.220.102
ntp     IN   A  192.168.220.103
www.new.com.  IN   A  192.168.220.104
dhcp    IN   A  192.168.220.105
web     IN   CNAME  www
mail    IN   A     192.168.220.200

//第一行:@表示new.zone  IN  SOA 为固定格式  dns1.new.com.为域的权威服务器 后面的地址为邮箱
//!!!对于域的权威服务器和邮箱的地址需要有"."
//第二行到第五行为一些配置信息
//第七行为域的权威服务器
//第八行为域的次权威服务器
//第九行为dns1的地址
//第十行为dns2的地址
//第十一行为MX设置new的邮箱服务器优先级为10
//第十二行为到第十五行都是一些配置(可以主要配置DNS的内容)
//第十六行为设置CNAME的别名(web.new.com等同于www.new.com)
//最后一行为mail邮箱地址配置
//!!!A表示为ipv4的正向解析
//!!!注意这边的地址可以缩写,dns会自动补齐
  • 设置DNS读取目录

//创建一个data文件夹在/var/named下,主要是给named.run设置一个存放文件
[root@localhost named]# mkdir data 
//给data设置权限,使得named可以进行修改
//设置named为属组
[root@localhost named]# chown .named data
//给予named写执行权限(775)
[root@localhost named]# chmod 775 data
  • 设置区域数据文件

//我们给new.zone设置的地址为192.168.220.XXX网段
//此时设置为192.168.220.2 的DNS地址
[root@localhost ~]# vim /etc/resolv.conf 

# Generated by NetworkManager
nameserver 192.168.220.2
nameserver 8.8.8.8
nameserver 114.114.114.114
  •  重启服务,查看日志报错

//打开日志
[root@localhost named]# tail -f 200 /var/log/messages
//重启服务
[root@localhost named]# systemctl stop firewalld 
[root@localhost conf.d]# getenforce
[root@localhost named]# systemctl restart named-chroot
  • 调试

[root@localhost named]# nslookup dns1.new.com
Server:		192.168.220.132
Address:	192.168.220.132#53

Name:	dns1.new.com
Address: 192.168.220.100

//测试还有host,server等

 Linux上搭建DNS服务器(反向解析):

  •   主配置文件zone和zone的配置:

//配置zone文件:
[root@localhost etc]# cat named.conf 
zone "220.168.192.in-addr.arpa" IN {
        type master ;
        file "name.192.168.220";
};

//配置主调用文件zone:
[root@localhost named]# vim name.192.168.220
@  IN  SOA  dns1.new.com. lianxi.163.com. (
                                     10
                                     1D
                                     1H
                                     1W
                                     3H )

        IN   NS   dns1.new.com.
        IN   NS   dns2.new.com.
220     IN   PTR  dns1.new.com.
230     IN   PTR  ntp.new.com.
221     IN   PTR  dns2.new.com.
222     IN   PTR  www.new.com.
223     IN   PTR  dhcp.new.com.
224     IN   PTR  mail.new.com.
225     IN   PTR  ftp.new.com.

//反向DNS只有PTR设置
  • 设置区域数据文件

//我们给new.zone设置的地址为192.168.220.XXX网段
//此时设置为192.168.220.2 的DNS地址
[root@localhost ~]# vim /etc/resolv.conf 

# Generated by NetworkManager
nameserver 192.168.220.2
nameserver 8.8.8.8
nameserver 114.114.114.114
  • 重启服务并调试:

//重启服务
[root@localhost named]# systemctl restart named-chroot

//开启日志
[root@localhost chroot]# tail -f 200  /var/log/messages

//测试ip --->  网址
//192.168.220.221   --- > dns2
[root@localhost chroot]# host 192.168.220.221
221.220.168.192.in-addr.arpa domain name pointer dns2.new.com.

//192.168.220.220   --- >  dns1
[root@localhost chroot]# nslookup 192.168.220.220
220.220.168.192.in-addr.arpa	name = dns1.new.com.

Linux上搭建DNS服务器(主从服务端):

  • 主服务器的配置文件,视图zone和视图zone的配置:

//设置允许的从服务器访问
allow-transfer  {192.168.220.100; };

//设置主服务器的zone区域
zone "new.com" IN  {
        type master ;
        file "new.zone";
};

zone "220.168.192.in-addr.arpa" IN {
        type master ;
        file "192.168.220.zone";
};

//配置正向解析的new.zone(需要设置从服务器的访问权限)
[root@localhost ~]# cat /var/named/chroot/var/named/new.zone 
$TTL 1D 
@   IN   SOA  dns1.new.com. lianxi.163.com (
				10
				1D
				1H
				1W
				3H )

	IN  NS  dns1.new.com.
	IN  NS  dns2.new.com.
	IN  NS  slave.new.com.
	IN  MX 10  mail.new.com.
dns1    IN  A  192.168.220.120
dns2    IN  A  192.168.220.101
ftp     IN  A  192.168.220.102
ntp     IN  A  192.168.220.103
dhcp    IN  A  192.168.220.104
web     IN  CNAME  www
mail    IN  A  192.168.220.110
www     IN  A  192.168.220.111
slave   IN  A  192.168.220.100

//配置主服务器的反向解析空间zone
[root@localhost ~]# cat /var/named/chroot/var/named/192.168.220.zone 
$TTL 1D 
@   IN   SOA  dns1.new.com. lianxi.163.com (
				10
				1D
				1H
				1W
				3H )

	IN  NS  dns1.new.com.
	IN  NS  dns2.new.com.
200	IN  PTR dns1.new.com.
201	IN  PTR dns2.new.com.
202	IN  PTR ntp.new.com.
220	IN  PTR www.new.com.
204	IN  PTR dhcp.new.com.
205	IN  PTR mail.new.com.
206	IN  PTR ftp.new.com.
  • 从服务器的配置文件:

//配置从服务器
zone "new.com" IN  {
        type slave ;
        file "slaves/new.zone";
	masters {192.168.220.138 ;};
};

zone "220.168.192.in-addr.arpa" IN {
        type slave ;
        file "slave/192.168.220.zone";
	masters {192.169.220.138 ;};
};

//从服务器需要从主服务器更新数据
  • 重启并调试:

//重启服务(先开启主服务器,再开启从服务器)
[root@localhost named]# systemctl restart named-chroot

//开启日志(主从打开,方便查看问题)
[root@localhost chroot]# tail -f 200  /var/log/messages

//测试

Linux上搭建DNS服务器(DNS视图):

  • 主配置文件视图zone和视图zone的配置:

//配置/var/named/chroot/etc/named.conf
view "view1"{
        match-clients {192.168.220.132;};
        recursion yes ;
        zone "." IN {
           type hint ;
           file "named.ca";
        };
        zone"view1.com" IN {
            type master ;
            file "view1.zone";
        };
};

view "view2"{
        match-clients {192.168.220.142;};
        recursion yes ;
        zone "." IN {
           type hint ;
           file "named.ca";
        };
        zone"view2.com" IN {
            type master ;
            file "view2.zone";
        };
};

//配置/var/named/chroot/var/下的视图zone

[root@localhost named]# vim new1.zone 

$TTL 1D
@   IN   SOA  dnn1.new1.com. lianxi.163.com (
                                10
                                1D
                                1H
                                1W
                                3H )

        IN NS  dns1.new1.com.
dns1    IN  A  192.168.220.100
www     IN  A  192.168.220.111

[root@localhost named]# vim new2.zone 

$TTL 1D
@   IN   SOA  dnn1.new2.com. lianxi.163.com (
                                10
                                1D
                                1H
                                1W
                                3H )

        IN NS  dns1.new1.com.
dns1    IN  A  192.168.220.100
www     IN  A  192.168.220.222

//此时我的new1设置的是本机的ip地址

//配置resolve
[root@localhost named]# vim /etc/resolv.conf 

; generated by /usr/sbin/dhclient-script
search localdomain
nameserver 192.168.220.200
nameserver 8.8.8.8  
  •  重启服务并调试:

//重启服务
[root@localhost named]# systemctl restart named-chroot

//开启日志
[root@localhost chroot]# tail -f 200  /var/log/messages

//测试(分别测试new1和new2)
[root@localhost chroot]# nslookup www.new1.com
Server:		192.168.220.100
Address:	192.168.220.100#53

Name:	www.new1.com
Address: 192.168.220.111

[root@localhost chroot]# nslookup www.new2.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	www.new2.com
Address: 209.99.40.222

//new1由于设置的是本地的地址,会给出本地的ip地址
//而new2设置的不是本地的地址映射,则会给出一个随机的ip地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值