第九周《简述常见加密算法及常见加密...》
一、简述常见加密算法及常见加密算法原理,最好使用图例解说
基本概念
加密:将数据转换成不能直接读取的形式(即密文)的过程叫加密。数据加密的基本过程就是对原来为明文的文件或数据按某种加密算法配合密钥进行处理,使其成为不可读的一段代码,通常称为"密文",使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。
解密:加密的逆过程,使用密钥配合加密算法,转换成明文内容。
安全防护的目标:
- 保密性 Confidentiality:即隐私性;
- 完整性 Integrity:指数据在传输过程中要保证能够完整,还能保证传输后能够还原回原来的数据;
- 可用性 Availability:指还原后的数据还能够使用;
常见的安全性攻击:
- 威胁保密性的攻击:窃听、通信量统计;
- 威胁完整性的攻击:更改、伪装、重放、否认;
- 威胁可用性的攻击:拒绝服务;
防范这些攻击的安全机制:
- 加密和解密、 数字签名、 访问控制、 数据完整性验证、 认证交换、流量填充、路由控制、公证等方式
实现这些安全机制的安全服务:
- 认证服务
- 访问控制服务
- 数据保密性服务
- 数据完整性服务
- 不可否认性服务
<为了保证这些服务的实现,就需要一些密码算法和协议(加密机制)来完成。>
常见的加密算法和协议
1.对称加密:加密和解密使用同一个密钥;加密算法和解密算法可能不同;
常见对称加密算法:
DES:Data Encryption Standard;
加密端64位明文产生64位密文,解密端使用64位密文还原64位明文;64位为一个块即8个字节,加密和解密使用56位的密钥,DES使用16个迭代块;是现代加密算法,很多s核,p核进行计算;后来被破解;
3DES:Triple DES;
是DES的三个数量级,一个数量级是10的一次方;
AES:Advanced Encryption Standard;
(密钥可为128bits, 192bits, 256bits, 384bits)安全程度非常高;
Blowfish加密算法
Twofish加密算法
IDEA商业加密算法
RC6加密算法
CAST5加密算法
-
特性:
1、加密、解密使用同一个密钥;
2、将原始数据分割成为固定大小的块,逐个进行加密; -
缺陷:
1、密钥过多;
2、密钥分发困难;
2. 公钥加密:密钥分为公钥与私钥,成对儿出现
- 特点:
用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然
密钥长度较大,例如512bits,2048bits,4096bits;效率低下; - 用途:
数字签名:主要在于让接收方确认发送方的身份;
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方
数据加密 - 常见算法:
RSA:即能签名、又能加密解密;
DSA:数字签名算法(标准)
ELGamal:
公钥加密工作模式 加密通信过程
- 梳理:
---身份认证的实现:
发送方用自己的私钥加密数据特征码,接收方用对方的公钥解密,如果加密成功即可实现身份认证,因为公钥的成对出现的,私钥只有自己有,公钥所有人都有;
---数字签名的实现:
在身份验证中就依赖到了数字签名,发送方用自己的私钥加密数据特征码这个结果就叫数字签名;因此,数据签名就为了完成身份验证的;
---密钥交换的实现:
自己先生成一个密码,要用对方的公钥加密这个自己生成的密码,然后发送给对方,只有对方能解密,对方解密出来的就得到密码了;所以就能使用这个密码来解密使用对称加密方式加密的数据了;
3. 单向加密:即提出数据指纹(特征码);只能加密,不能解密
- 特性:
定长输出:无论原来的数据是多大级别,其加密结果长度一样;
雪崩效应:原始数据微小改变,将会导致结果巨大变化;
不可逆 - 用途:
数据完整性校验
系统帐号密码校验 - 常见算法:
MD5:128bits定长输出
SHA1: 160bits定长输出
SHA256:
SHA384:
SHA512:
CRC32:
密钥算法:
密钥交换: IKE(Internet Key Exchange)
1、公钥加密:实现密钥交换;
密钥是在网上发送的;
2、DH(Deffie-Hellman)算法
不发送密钥就能使双方完成密钥交换
认证PKI:Public Key Infrastructure
- 公钥基础设施:包括四部分
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库
- X.509v3:国际标准化组织定义了证书的结构以及认证协议标准,x.509有三版本;
版本号:x.509的版本号;
序列号
签名算法ID:签名的使用算法;
发行者名称:CA的名称
有效期限:两个日期,起始日期和终止日期
主体名称:证书拥有者名称;
主体公钥:证书拥有者自己的公钥
发行者的惟一标识
主体的惟一标识:证书拥有者
ssl协议
-
SSL:Secure sockets Layer
Netscape网警公司: 1994发布,有3个版本;
V1.0, V2.0, V3.0(有漏洞)
TLS: Transport Layer Security
IETF: 1999发布,有4个版本;
V1.0(从来没公开,漏洞多), V1.1, V1.2(主流), V1.3(2014年,没到成熟期) -
TLS协议采用分层设计:
1、最底层:基础算法原语的实现,aes, rsa, md5
2、第2层:各种算法的实现;
3、第3层:组合算法实现的半成品;
4、最高层:用各种组件拼装而成的各种成品密码学协议软件;
ssl的认证过程:
第一步:Visitor生成一个随机数,客户端支持的加密方法,发送给服务端
第二步:Server确认双方使用的加密方法,以及一个服务端生成的随机数(Server random)、以及把服务端的数字证书发送个客户端
第三步:客户端验证数字证书,用CA公钥解密证书,查看证书有效期,和是否被吊销,验证通过后,生成一个新的随机数,(称为预备主密钥Pre-master secret),并使用Server的公钥加密预备主密钥发给Server。公钥自然在证书里提取。
第四步:Server使用自己的私钥,解密Visitor发来的预备主密钥。
第五步:Visitor和Server双方都具有了(客户端随机数+服务端随机数+预备主密钥),它们两者都根据约定的加密方法,使用这三个随机数生成对称密钥——主密钥(也称为对话密钥session key),用来加密接下来的整个对话过程。
之后所有的数据在这次会话中只需要使用“对话密钥”即可,不需要多余的机制
二、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟
#首先自建一个私有CA
[root@wujunjie ~]# cd /etc/pki/CA/
[root@wujunjie CA]# ls
certs crl newcerts private
[root@wujunjie CA]# (umask 077;openssl genrsa -out private/cakey.pem 4096) #生成CA本身私钥
Generating RSA private key, 4096 bit long modulus
.......................++
...........................................................................++
e is 65537 (0x10001)
[root@wujunjie CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655#生成自签证书
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:ZHEJIANG
Locality Name (eg, city) [Default City]:NINGBO
Organization Name (eg, company) [Default Company Ltd]:ZD
Organizational Unit Name (eg, section) []:opt
Common Name (eg, your name or your server's hostname) []:ns1.magedu.com
Email Address []:aaa@magedu.com
注意:mkdir -pv {certs,crl,newcerts}没有需创建
[root@wujunjie CA]# touch {serial,index.txt}
[root@wujunjie CA]# echo 01 >serial
[root@wujunjie CA]# ls
cacert.pem certs crl index.txt newcerts private serial
[root@wujunjie CA]# cat serial
01
到此私有CA就创建完成,下面到需要用到证书安全通信的服务器上向CA请求签署证书,我们以apache为例
[root@wujunjie6 ~]#mkdir /etc/httpd/ssl
[root@wujunjie6 ~]#cd /etc/httpd/ssl
[root@wujunjie6 ssl]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) #生成私钥
[root@wujunjie6 ssl]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365#生成证书签署请求
注意:这里的证书服务器的公司名要与证书的颁发者单位要一致,同一个地域,否则通过不了认证;根据提示输入相关信息,完成即可;
[root@wujunjie6 ssl]# scp httpd.csr root@192.168.32.129:/tmp#将请求通过可靠方式发送给CA 主机
在CA主机上签署证书:
[root@wujunjie CA]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
在CA主机上查看证书, 到此apache自签证书完成
[root@wujunjie CA]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=ZHEJIANG/O=ZD/OU=opt/CN=www.magedu.com/emailAddress=admin@magedu.com
三、简述DNS服务器原理,并搭建主-辅服务器
什么是DNS?
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。DNS名称解析方式:
名称—->IP:正向解析
IP—->名称:反向解析
注意:二者的名称空间,非为同一空间,即非为同一棵树;因此,也不是同一个解析库。
DNS 查询的过程:
1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。 4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。 5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。 6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
主-辅DNS服务器及搭建
- 主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
- 从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作;
- “复制”操作的实施方式:
序列号:serial, 也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
刷新时间间隔:refresh, 从服务器每多久到主服务器检查序列号更新状况;
重试时间间隔:retry, 从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
否定答案的缓存时长:
- 主服务器”通知“从服务器随时更新数据;
区域传送:
全量传送:axfr, 传送整个数据库;
增量传送:ixfr, 仅传送变量的数据;
- 区域(zone)和域(domain): magedu.com域
FQDN –> IP
正向解析库;区域
IP –> FQDN
反向解析库;区域 - 区域数据库文件:
资源记录:Resource Record, 简称rr;
记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的
A: Address, 地址记录,FQDN –> IPv4;
AAAA:地址记录, FQDN –> IPv6;
CNAME:Canonical Name,别名记录;
PTR:Pointer,IP –> FQDN
MX:Mail eXchanger,邮件交换器;
优先级:0-99,数字越小优先级越高;
资源记录的定义格式:
语法: name [TTL] IN RR_TYPE value
-
SOA:
name: 当前区域的名字;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”;
1.value:有多部分组成
(1) 当前区域的区域名称(也可以使用主DNS服务器名称);
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
(3) (主从服务协调属性的定义以及否定答案的TTL)例如: magedu.com. 86400 IN SOA magedu.com. admin.magedu.com. ( 2017010801 ; serial 2H ; refresh 10M ; retry 1W ; expire 1D ; negative answer ttl )
-
NS:域名服务记录
name: 当前区域的区域名称
value:当前区域的某DNS服务器的名字,例如ns.magedu.com.;
注意:一个区域可以有多个ns记录;例如: magedu.com. 86400 IN NS ns1.magedu.com. magedu.com. 86400 IN NS ns2.magedu.com.
-
MX:邮件交换器
name: 当前区域的区域名称
value:当前区域某邮件交换器(即smtp服务器)的主机名;
注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;数字越小优先级越高;例如: magedu.com. IN MX 10 mx1.magedu.com. magedu.com. IN MX 20 mx2.magedu.com.
-
A:IPv4地址记录
name:某FQDN,例如www.magedu.com.
一个主机可有多个IP地址;
value:某IPv4地址;
一个地址可有多个主机名;例如: www.magedu.com. IN A 1.1.1.1 www.magedu.com. IN A 1.1.1.2 bbs.magedu.com. IN A 1.1.1.1
-
AAAA:
name:FQDN
value: IPv6 -
PTR:指针
name:IP地址,有特定格式,IP要反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
value:FQND例如: 4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
-
CNAME:别名记录
name:FQDN格式的别名;
value:FQDN格式的正式名字;例如: web.magedu.com. IN CNAME www.magedu.com.
注意:资源记录一些法则
(1) TTL可以从全局继承;在每个类型记录里可省略;
(2) @表示当前区域的名称;任何记录里都可用@代替;
(3) 相邻的两条记录其name相同时,后面的可省略;
例如:
www.magedu.com. IN A 1.1.1.1
IN A 1.1.1.2
(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;
搭建DNS主服务器
1. 安装bind服务程序
[root@wujunjie ~]# yum install bind -y
[root@wujunjie ~]# 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
2. 编辑主配置文件
[root@wujunjie ~]# vim /etc/named.conf
options {
listen-on port 53 { any; }; #监听在能与外部主机通信的地址
listen-on-v6 port 53 { ::1; };
directory "/var/named";
………………………………….
# allow-query { localhost; }; #关闭仅允许本地查询即加#注释
…………………………………
recursion yes;
dnssec-enable no; #学习时建议关闭
dnssec-validation no; #学习时建议关闭
3.检查主配置文件语法并启动bind服务程序
[root@wujunjie ~]# named-checkconf
[root@wujunjie ~]# systemctl start named
[root@wujunjie ~]# systemctl status named.service
?.named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2018-10-13 13:45:14 CST; 7s ago
4.配置域文件
[root@wujunjie ~]# vim /etc/named.rfc1912.zones
######在底部添加以下区域配置
zone "magedu.com" IN { #正向解析
type master;
file "magedu.com.zone"
allow-update { none; };
};
zone "32.168.192.in-addr.arpa" IN { #反向解析
type master;
file "192.168.32.in-addr.zone";
};
5.创建对应区域解析文件
[root@wujunjie named]# vim magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
01
1H
10M
3D
1D )
IN NS ns1
IN MX 10 mx1
ns1 IN A 192.168.32.128
mx1 IN A 192.168.32.128
www IN A 192.168.32.128
bbs IN A 192.168.32.130
web IN CNAME www
[root@wujunjie named]# vim 192.168.32.in-addr.zone
$TTL 3600
$ORIGIN 32.168.192.in-addr.arpa.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
01
1H
10M
3D
1D )
IN NS ns1.magedu.com.
128 IN PTR ns1.magedu.com.
128 IN PTR www.magedu.com.
130 IN PTR bbs.magedu.com.
6.修改权限及属组
[root@wujunjie named]# chgrp named 192.168.32.in-addr.zone
[root@wujunjie named]# chgrp named magedu.com.zone
[root@wujunjie named]# chmod o= 192.168.32.in-addr.zone
[root@wujunjie named]# chmod o= magedu.com.zone
7.再次检查语法错误并重载服务
[root@wujunjie named]# rndc reload
server reload successful
[root@wujunjie named]# systemctl status named.service
?.named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2018-10-13 13:45:14 CST; 58min ago
……………………………………
8.更改本地DNS服务器并测试正向和反向解析
[root@wujunjie named]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.32.128
[root@wujunjie named]# dig -t A www.magedu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5360
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 3600 IN A 192.168.32.128
;; AUTHORITY SECTION:
magedu.com. 3600 IN NS ns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 3600 IN A 192.168.32.128
;; Query time: 0 msec
;; SERVER: 192.168.32.128#53(192.168.32.128)
;; WHEN: Sat Oct 13 15:03:28 CST 2018
;; MSG SIZE rcvd: 93
[root@wujunjie named]# dig -x 192.168.32.130
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -x 192.168.32.130
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29439
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;130.32.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
130.32.168.192.in-addr.arpa. 3600 IN PTR bbs.magedu.com.
;; AUTHORITY SECTION:
32.168.192.in-addr.arpa. 3600 IN NS ns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 3600 IN A 192.168.32.128
;; Query time: 0 msec
;; SERVER: 192.168.32.128#53(192.168.32.128)
;; WHEN: Sat Oct 13 15:06:34 CST 2018
;; MSG SIZE rcvd: 118```
搭建DNS从服务器
##搭建DNS从服务器需配置需配置防火墙与selinux(便于实验我将关闭防火墙与selinux)
1.安装bind服务程序并配置相关的设置,参考上述主服务器搭建
[root@wujunjie6 ~]# yum install bind -y
[root@wujunjie6 ~]# vim /etc/named.conf
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";
# allow-query { localhost; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
2.启动bind程序并且配置从服务器上对应的域配置文件
[root@wujunjie6 ~]# service named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
[root@wujunjie6 ~]# vim /etc/named.rfc1912.zones
######在底部添加以下区域配置
zone "magedu.com" IN {
type slave;
file "slaves/magedu.com.zone";
masters { 192.168.32.128; };
};
zone "32.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.32.in-addr.zone";
masters { 192.168.32.128; };
};
[root@wujunjie6 ~]# named-checkconf
3.切回到主DNS服务器,在主服务器域配置文件中添加从服务器的IP信息
[root@wujunjie named]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
allow-update { 192.168.32.129; };
};
zone "32.168.192.in-addr.arpa" IN {
type master;
file "192.168.32.in-addr.zone";
allow-update { 192.168.32.129; };
};
4.切回到主DNS服务器,在主服务器数据配置文件中添加从服务器IP与域的一一对应关系
[root@wujunjie named]# cat magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
03
1H
10M
3D
1D )
IN NS ns1
IN NS ns2
IN MX 10 mx1
ns1 IN A 192.168.32.128
ns2 IN A 192.168.32.129
mx1 IN A 192.168.32.128
www IN A 192.168.32.128
bbs IN A 192.168.32.130
web IN CNAME www
[root@wujunjie named]# cat 192.168.32.in-addr.zone
$TTL 3600
$ORIGIN 32.168.192.in-addr.arpa.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
04
1H
10M
3D
1D )
IN NS ns1.magedu.com.
128 IN PTR ns1.magedu.com.
129 IN PTR ns2.magedu.com.
128 IN PTR www.magedu.com.
130 IN PTR bbs.magedu.com.
5.先重载主服务器端bind程序,然后切回从服务器重载等待更新同步完成
[root@wujunjie named]# rndc reload
server reload successful
[root@wujunjie6 ~]# rndc reload
server reload successful
#主服务器优先重载,然后才是从服务器
6.测试从服务器正向反向解析
[root@wujunjie6 ~]# dig -t A www.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49006
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 3600 IN A 192.168.32.128
;; AUTHORITY SECTION:
magedu.com. 3600 IN NS ns2.magedu.com.
magedu.com. 3600 IN NS ns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 3600 IN A 192.168.32.128
ns2.magedu.com. 3600 IN A 192.168.32.129
;; Query time: 0 msec
;; SERVER: 192.168.32.129#53(192.168.32.129)
;; WHEN: Mon Oct 15 12:23:22 2018
;; MSG SIZE rcvd: 116
[root@wujunjie6 ~]# dig -x 192.168.32.128
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -x 192.168.32.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64094
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;128.32.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
128.32.168.192.in-addr.arpa. 3600 IN PTR ns1.magedu.com.
128.32.168.192.in-addr.arpa. 3600 IN PTR www.magedu.com.
;; AUTHORITY SECTION:
32.168.192.in-addr.arpa. 3600 IN NS ns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 3600 IN A 192.168.32.128
;; Query time: 0 msec
;; SERVER: 192.168.32.129#53(192.168.32.129)
;; WHEN: Mon Oct 15 12:24:25 2018
;; MSG SIZE rcvd: 121
四、搭建并实现智能DNS
1.安装bind服务
[root@localhost ~]# yum install bind -y
2.配置修改主文件
[root@localhost named]# cat /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.html
acl "ningbo" { 192.168.32.128; }; #添加访问控制
acl "shanghai" { 192.168.32.129; }; #添加访问控制
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";
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 no; #需修改
dnssec-validation no; #需修改
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view ningbo { #添加以下view
match-clients { ningbo; };
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.com" IN {
type master;
file "magedu.com.ningbo";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
view shanghai {
match-clients { shanghai; };
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.com" IN {
type master;
file "magedu.com.shanghai";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
view default {
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
[root@localhost ~]# systemctl start named
3.对数据文件做配置
[root@localhost named]# cat magedu.com.ningbo
$TTL 1D
@ IN SOA magedu.com. admin.magedu.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns
ns A 192.168.32.132
www A 192.168.32.32
[root@localhost named]# cat magedu.com.shanghai
$TTL 1D
@ IN SOA magedu.com. admin.magedu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns
ns A 192.168.32.132
www A 192.168.3.32
4.对配置文件做语法检查并重载操作
[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone magedu.com /var/named/magedu.com.ningbo zone magedu.com/IN: loaded serial 1
OK
[root@localhost named]# named-checkzone magedu.com /var/named/magedu.com.shanghai
zone magedu.com/IN: loaded serial 0
OK [root@localhost named]# rndc reload
server reload successful
5.测试不同区域的解析
###在192.168.32.128测试解析结果
[root@wujunjie ~]# nslookup
> server 192.168.32.132
Default server: 192.168.32.132
Address: 192.168.32.132#53
> set q=A
> www.magedu.com
Server: 192.168.32.132
Address: 192.168.32.132#53
Name: www.magedu.com
Address: 192.168.32.32
###在192.168.32.129测试解析结果
[root@wujunjie6 ~]# nslookup
> server 192.168.32.132
Default server: 192.168.32.132
Address: 192.168.32.132#53
> set q=A
> www.magedu.com
Server: 192.168.32.132
Address: 192.168.32.132#53
Name: www.magedu.com
Address: 192.168.3.32
到此一个智能DNS解析便搭建完成了,如果能将公网上的电信和联通IP分别写入ACL列表中,并且将此服务器接入了多个运营商线路,使得其能够在公网上提供DNS解析,那么此服务器就能为来自不同运行商的客户端IP提供智能DNS解析了。