带你轻松配置linux下高速缓存DNS服务器
1.dns(域名系统)的基础知识
dns的定义
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务
作为将域名和IP地址相互映射的一个分布式数据库,帮助人们方便的访问互联网
DNS使用的是TCP和UDP端口53
dns的功能
例如:我直接在浏览器里面输入域名www.baidu.com,浏览器并不知道这是谁,只有通过dns找到域名对应的ip我才可以正常的访问百度
它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
DNS使用TCP和UDP端口53,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
dns的分类
权威名称服务器(权威dns:直接有客户需要的答案,客户给一个域名直接就能访问)
存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据
非权威 / 递归名称服务器(非权威dns里面直接没有客户需要的答案,但它会通过问114.114.114.114等权威DNS找到答案给用户(相当于代购))
客户端通过其查找来自权威名称服务器的数据
DNS 排错(它显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败)
NOERROR | 查询成功 |
---|---|
NXDOMAIN | DNS 服务器提示不存在这样的名称 |
SERVFAIL | DNS 服务器停机或 DNSSEC 响应验证失败 |
REFUSED | DNS 服务器拒绝回答 ( 也许是出于访问控制原因 ) |
2.怎样搭建一个高速缓存dns服务器(安装部署DNS)?
(1)实验背景
为什么要搭建高速缓存dns服务器?
当一个企业内网里面的每一台主机都要访问114.114.114.114这个权威dns进行域名解析(原理要知道)
但是内网通往114.114.114.114只有一根传输线,此时每台的访问速率都非常慢
内网访问外网速率较慢,但内网之间进行访问速率快
现在我们想把企业内部里面的一台服务器搭建成高速缓存dns,其他主机不再需要问114.114.114.114,直接问高速缓存dns服务器即可
只需要高速缓存dns去问114.114.114.114,然后把自己要到的东西共享给其他主机
(2)实验原理
在172.25.254.115上面搭建高速缓存dns,在/etc/resolv.conf中写 nameserver 114.114.114.114
在172.25.254.215上面进行测试,在/etc/resolv.conf 写nameserver 172.25.254.115
也可以再开一台虚拟机,一共三台主机
115是dns,215访问115比较慢,因为此时115需要去向114要东西,3再次问115要刚才215要的东西的时候就很快(115已经问114要过,不再去要)
(3)实验环境
需要两台电脑,使其中一台电脑可以上网,
(4)实验步骤
安装dns软件服务
yum search dns
yum install bind -y
systemcel start named #开启dns服务
此时服务起不来,需敲击物理键盘,生成加密文件/etc/rndc.key
cat /etc/rndc.key #查看加密文件内容
在dns配置文件里面写入权威dns的ip:
vim /etc/resolv.conf
nameserver 114.114.114.114
在火墙里面添加dns服务
firewall-cmd --list-all
firewall-cmd --pernament --add-service=dns # 在防火墙里面添加dns服务
firewall-cmd --reload
firewall-cmd --list-all
编辑dns服务的配置文件
vim /etc/named.conf
修改13,19,34行内容,在20行添加forwarders {114.114.114.114;};
13 listen-on port 53 { any; };
19 allow-query { any; };
20 forwarders {114.114.114.114;};
34 dnssec-validation no;
systemctl restart named #重启dns服务
验证:
在215上面进行测试
将215主机的域名解析写为非权威dns115的ip ,
vim /etc/resolv.conf
写入
nameserver 172.25.254.115
然后 dig www.baidu.com看能不能成功,并且注意时间长短(第一次时间会长一些)
3.dns正向解析文件编辑
步骤一:vim /etc/named.conf
去掉114 如果直接在这个文件里面写入域名的管理的话会时文件内容冗长,排错难
步骤二:vim /etc/named.rfc1912.zones(这个文件和上述文件的作用一样)
添加如下内容
zone "westos.com" IN {
type master;
file "westos.com.zone";
allow-update { none; };
};
步骤三:cd /var/named必须切换到这个目录下
cp -p named.localhost westos.com.zone #-p是为了复制权限
ll可以看到这个文件的权限
步骤四:vim /var/namedwestos.com.zone
写入:主机名字 ip地址(我要在这个域名里面找什么主机就写什么)
1 $TTL 1D
2 @ IN SOA dns.westos.com. root.westos.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.com.
9 dns A 172.25.254.115
10 www A 172.25.254.115
步骤五:
vim /etc/resolv.conf
nameserver 172.25.254.115 #改成自己的ip
systemctl restart named
如果上述服务起不来
> /var/log/messages #清空日志
systemctl restart named
cat /var/log/messages #在日志里面查看错误
在本机上测试:
dig www.westos.com 找westos.com这个域里面的主机
4.dns域名解析轮询以及邮件发送
vim /var/namedwestos.com.zone
添加如下内容:
bbs CNAME linux
linux A 172.25.254.111
linux A 172.25.254.222
systemc restatr named
在另一台主机是上进行测试:
vim /etc/resolv.conf
nameserver 172.25.254.115 #改成修改named配置文件的主机的ip
dig linux.westos.com 或者
dig bbs.westos.com #重复dig,会看到地址的转变
邮件发送
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准
SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输
可以很简单地通过telnet程序来测试一个SMTP服务器,SMTP使用TCP端口25
要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS
编辑vim /var/namedwestos.com.zone
文件
添加如下内容:
westos.com. MX 1 172.25.254.64.
systemctl restart named #重启服务
dig -t mx westos.com
mail aaa@qq.com #发送邮件,以.结束
mailq #查看邮件发送状态
5.dns 反向解析
步骤一:vim /etc/named.rfc1912.zones
添加如下内容:
zone "254.25.172.in-addr.arpa" IN {
type master;
file "westos.com.ptr";
allow-update { none; };
};
cd /var/named
cp -p named.loopback westos.com.ptr
vim westos.com.ptr 文件
添加如下内容
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.115
111 PTR bbs.westos.com.
110 PTR www.westos.com.
systemctl restart named
测试:
dig -x 172.25.254.111
dig -x 172.25.254.110
6. 双向解析:内网解析ip为内网的 外网解析为外网的
(1)什么是双向解析?
使特定的用户使用特定的解析文件,内外分开
先在我们为了做实验方便
将此台主机看作内网主机172.25.254网段,将除过此台主机以外的主机看作外网主机1.1.1网段
(2)实验步骤:
cd /var/named
ls
cp -p westos.com.zone westos.com.inter.zone
vim westos.com.inter.zone
将所有的172.25.254网段换成1.1.1网段
:%s/172.25.254/1.1.1/g
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter.zones
vim /etc/named.rfc1912.inter.zones
将原来westos.com.zones的改为westos.com.inter.zones
vim /etc/named.conf
systemctl restart named
注意:以下图片中meng就是westos(可随意替换)
vim westos.com.inter.zone
vim /etc/named.rfc1912.inter.zones
将原先的westos.com.zone 改为westos.com.inter.zone
vim /etc/named.conf
添加如下内容:
60 view localnet {
61 match-clients {172.25.254.115;};
62 zone "." IN {
63 type hint;
64 file "named.ca";
65 };
66 include "/etc/named.rfc1912.zones";
67 };
68
69 view internet {
70 match-clients {any;};
71 zone "." IN {
72 type hint;
73 file "named.ca";
74 };
75 include "/etc/named.rfc1912.inter.zones";
76 };
systemctl restart named
测试:
dig bbs.westos.com
可以看到
在111这个内网主机上面 dig bbs.westos.com 显示为172.25.254.网段提供解析
在211这个外网主机上面 dig bbs.westos.com 显示为1.1.1.网段提供解析
7.建立辅助dns?
先将双向解析注释掉 针对外网访问dns服务器来说,缓解访问dns服务器的压力
多台dns 为主dns建立辅助dns
步骤如下:
先在115上注释掉之前的双向解析,还原之前的配置
systemctl restart named
在辅助dns里面安装dns
yum install bind -y
在215主机上hostnamectl set-hostname dns-slave.westos.com
vim /etc/named.conf 改东西(一共改三行,早上已经讲过)
netstat -antlupe | grep named 看53端口是否开启
vim /etc/named.rfc1912.zones
写入:
type slave;(辅助型)
masters {172.25.254.111;};(为111主机服务)
file "slaves/westos.com.zone";(在slaves/这个目录下同步westos.com.zone)
systemctl restart named
cd /var/named/salves
ls
systemctl restart named
vim /etc/named.conf 改东西
vim /etc/named.rfc1912.zones
添加如下内容
zone "westos.com" IN {
type slave;
masters {172.25.254.115;};
file "slaves/westos.zone";
allow-update { none; };
};
systemctl restart named
ls /var/named/slaves/
vim /etc/resolve.conf
nameserver 172.25.254.215
systemctl stop firewalld #关闭火墙
在主DNS服务器上即:115主机上面:
vim /etc/named.rfc1912.zones
写入:
also-notify {172.25.254.215;}; # 也使用215主机
allow-transfer {172.25.254.215;}; # 企业6需要,企业7不需要
修改
vim /var/named/westos.com.zone
1 ; serial #只能往大了改
在主DNS端重启服务
systemctl restart named
测试:在两端dig www.westos.com
如果172.25.254.115上 westos.com.zones里面的ip变了,必须改serial的数字(只能往大的数字改最大10位)才会使辅助dns同步过来
改完重启
主DNS端
辅助DNS端
8.dns的更新
之前每次该完配置文件都要重启服务才会生效
现在即改即生效
备份cp -p /var/named/westos.com.zone /mnt
关闭selinux
chmod 770 /var/named/
vim /etc/named.rfc1912.zones
写入: allow-update {172.25.254.115;};
systemctl restart named
直接在本机115进行测试
进行更新:
nsupdate 回车
server 172.25.254.115
update add test.westos.com 86400 A 172.25.254.115
send
quit
测试:在111和211主机上面分别dig hello.westos.com看新建的没有手动重启是否自动同步过来
9.怎样通过**进行更新?
之前我们通过ip的方式更新dns这样的做法很不安全,别人通过ip可以更新我的dns
先在给dns做一个钥匙,有钥匙才能更新这样做更安全
先
systemctl restart named;
systemctl stop firewalld
步骤一:删除之前的ip更新(上一个实验验证完我直接就删了,否则如果忘记恢复环境会影响下一个实验效果)
rm -rf westos.com.zone*
cp -p /mnt/westos.com.zone /var/named
步骤二:生成自己的加密文件
cp -p /etc/rndc.key /etc/westos.key
步骤三:在/mnt下面
dnssec-****** -a HMAC-MD5 -b 128 -n HOST westos #生成钥匙
步骤四:编辑自己的加密文件:加入钥匙名字和加密字符
cat /mnt/Kwestos.+157+63271.private # 在这个文件里面查看加密字符
vim /etc/westos.key #在dns服务器自己的加密文件中写信息,
修改secret,改为自己生成的密匙
步骤五:编辑dns文件,使其识别钥匙 vim /etc/named.conf
添加:include "/etc/westos.key";
步骤六:编辑dns文件,使其允许钥匙加密更新 vim /etc/named.rfc1912.zones
步骤七:进行更新
nsupdate -k /mnt/Kwestos.+157+63271.private
server 172.25.254.115
update add hello.westos.com 86400 A 172.25.254.115
send
quit
步骤八:测试 在215上面dig hello.westos.com
10.dhcp+dns组成动态域名解析ddns
DDNS(Dynamic Domain Name Server)是动态域名服务的缩写 DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上 用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序 服务器程序负责提供DNS服务并实现动态域名解析
也就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流 而最终客户所要记忆的全部,就是记住动态域名商给予的域名即可,而不用去管他们是如何实现的 动态域名服务的对象是指IP是动态的,是变动的 普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个,但DDNS的IP是变动的、随机的 随着市场需求的变化,DDNS需求功能也越来越多,越来越要求方便,市场现在已经有了不少第三方DDNS方支持的设备
步骤如下:实验用两台主机
步骤一:在115机上面恢复原来的环境
cd /var/named
ls查看jnl文件
rm -rf westos.com.zone*
cp -p /mnt/westos.com.zone .
步骤三:vim westos.com.zone(删除之前所有的,只留dns)
systemctl restart named
步骤四:在115面安装dhcp服务
yum install dhcp -y
按照以前的方法配置dhcp
删除27,28行以及34行以后的
在第7,8行改为:
option domain-name "westos.com";
option domain-name-servers 172.25.254.115;
第14行改为:
ddns-update-style interim;
29到31行改为:
subnet 172.25.254.0 netmask 255.255.255.0 {
range 172.25.254.160 172.25.254.170;
option routers 172.25.254.250;
并且在dhcp的配置文件末尾中加入:
key westos {
algorithm hmac-md5;
secret 加密字符串==; # (cat /etc/westos.key查看)
};
zone westos.com. {
primary 127.0.0.1; 回环接口比较安全
key westos;
}
systemctl restart dhcpd
systemctl restart named
systemctl stop firewalld
步骤五:测试:在215上面
hostnamectl set-hostname test.westos.com
hostnamectl
vim /etc/sysconfig/network-scripts//ifcfg-eth0
none----->dhcp
systemctl restart network
ifconfig 查看ip是不是动态获取的
cat /etc/resolv.conf
nameserver 172.25.254.115
在215主机上
dig news.westos.com
看211主机的ip地址与域名的对应关系是否能够解析
上一篇: DNS搭建