DNS 域名解析 服务是用于解析域名与ip地址对应关系的服务,功能上可以实现正向解析和反向解析。
正向解析:将域名解析为ip地址
反向解析:将ip地址解析为域名
DNS 从工作形式上分为 主服务器,从服务器,缓存服务器
主服务器 :在特定区域内具有唯一性,负责维护该区域内的域名与ip对应关系
从服务器 : 从主服务器中获得域名与ip对应关系并维护,以防主服务器宕机等情况
缓存服务器 : 通过向其他域名解析服务器查询获得域名与ip的对应关系,提高重复查询的效率
查询时分为递归查询和迭代查询
递归查询 :用于客户机向dns服务器查询
迭代查询 :用于dns服务器向其他dns服务器查询
流程图如下
在linux下BIND 是主流的域名服务程序,安全可靠,快捷高效。还支持chroot 监牢安全机制,chroot机制会限制bind服务程序仅能对自身配置文件进行操作。从而保证整个服务器的安全。
安装bind-chroot
[root@localhost ~]# yum install bind-chroot -y
域名解析服务Bind的程序名称叫named
主程序 | /usr/sbin/named |
---|---|
主配置文件 | /etc/named.conf |
区域配置文件 | /etc/named.rfc1912.zones |
[root@localhost ~]# cat /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; //改为any的话允许监听任何ip地址
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; }; //改为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;
/* 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;
};
};
zone "." IN { //此文件定义了全球13台根dns服务器的ip地址
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones"; //此文件保存着正向与反向解析的区域信息。非常重要!!!!
include "/etc/named.root.key";
当用户访问一个域名时,正常情况会向指定的dns主机发送递归查询请求。如果dns主机没有该域名的解析信息那么会不断向上级的dns主机进行迭代查询,最高等级的根服务器主机有13台 ,其文件为 /var/named/named.ca
所有的规则的区域信息都保存在/etc/named.rfc1912.zones中这个文件用于定义域名与ip地址解析规则保存的文件位置以及区域服务类型!
正向解析区域文件格式
zone "localhost" IN {
type master; //服务类型 //分为hint(跟区域) master(主区域)slave(辅助区域)
file "named.localhost"; //域名与ip地址解析规则保存的文件位置
allow-update { none; }; //允许那些客户机动态更新解析信息
};
反向解析区域文件格式
zone "2.168.192.in-addr.arpa" IN { //表示198.168.2.0/24 网段的反向解析区域 ip 必须反写 ,后面要跟in-addr.arpa
type master;
file "named.loopback";
allow-update { none; };
};
正向解析实验
正向解析 :将域名解析为ip
1.配置区域数据信息
[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "ddw.com" IN{
type master;
file "ddw.com.zone";
allow-update{none;};
}
2.配置解析数据信息
这里需要将/var/named/named.localhost 正向解析模板文件 复制,填写信息后可直接使用
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
chroot dynamic named.empty named.loopback
data named.ca named.localhost slaves
[root@localhost named]# cp -a named.localhost ddw.com.zone
[root@localhost named]# vi ddw.com.zone
$TTL 1D // 生存周期为1天
@ IN SOA ddw.com. root.ddw.com. (
//授权信息开始 //DNS区域的地址 //域名管理员的邮箱
0 ; serial //更新序列号
1D ; refresh //更新时间
1H ; retry //重试延时
1W ; expire //失效时间
3H ) ; minimum //无效解析记录的缓存时间
NS ns.ddw.com. //域名服务器记录
ns IN A 192.168.182.144 //地址记录 ns.ddw.com
IN MX 10 mail.ddw.com. //邮箱交换记录
mail IN A 192.168.182.123 //地址记录 mail.ddw.com
www IN A 192.168.182.130 //地址记录 www.ddw.com
3.检验解析结果
nslookup
[root@localhost named]# nslookup
> www.ddw.com
Server: 192.168.182.130
Address: 192.168.182.130#53
Name: www.ddw.com
Address: 192.168.182.129
成功了!
反向解析实验
先编辑区域数据文件
vi /etc/named.rfc1912.zones
zone "10.168.192.in-addr.arpa" IN{
type master;
file "192.168.10.arpa";
};
在复制反向解析模板文件
root@localhost named]# cp -a named.loopback 192.168.10.arpa
[root@localhost named]# vi 192.168.10.arpa
$TTL 1D
@ IN SOA ddw.com. root.ddw.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.ddw.com.
ns A 192.168.10.10
10 PTR q4.ddw.com.
13 PTR q1.ddw.com.
11 PTR q2.ddw.com.
12 PTR q3.ddw.com.
~
~
~
[root@localhost named]# systemctl restart named
[root@localhost named]# nslookup
> 192.168.10.11
Server: 192.168.182.130
Address: 192.168.182.130#53
11.10.168.192.in-addr.arpa name = q2.ddw.com.
> 192.168.10.12
Server: 192.168.182.130
Address: 192.168.182.130#53
12.10.168.192.in-addr.arpa name = q3.ddw.com.
>
又成功了哈哈哈哈
主从配置dns服务器
本次实验用到两台主机
主 :192.168.182.130
辅:192.168.182.129
1.修改主服务器中的区域信息文件
[root@localhost named]# vi /etc/named.rfc1912.zones
zone "ddw.com" IN{
type master;
file "ddw.com.zone";
allow-update { 192.168.182.129;};
};
zone "10.168.192.in-addr.arpa" IN{
type master;
file "192.168.10.arpa";
allow-update{ 192.168.182.129;};
};
[root@localhost named]# systemctl restart named
2.修改从服务器中的区域信息文件
首先将从服务器中/etc/named.conf 中监听地址与允许查询地址 改为any
[root@mail ~]# vi /etc/named.rfc1912.zones=
zone "ddw.com" IN{
type slave;
masters {192.168.182.130;};
file "slaves/ddw.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters {192.168.182.130;};
file "slaves/192.168.10.arpa";
};
[root@mail slaves]# systemctl restart named
注意 : 辅端的dns地址为各自的ip,还要关闭防火墙 不然传不过来解析文件
3.测试
[root@mail slaves]# ls
192.168.10.arpa ddw.com.zone
竟然有货了 又成功了 哈哈哈
[root@mail slaves]# nslookup
> www.ddw.com
Server: 192.168.182.129
Address: 192.168.182.129#53
Name: www.ddw.com
Address: 192.168.182.129