域名的分级,一般分为: 主机名.三级域名.二级域名.顶级域名. 。注意了,. 表示根域。如下图所示
域名查询的过程
举例:解析 www.stanford.com
①、先查询本地缓存,如果本地缓存中有记录直接返回
②、如果本地缓存没有,则查询本地 DNS 服务器,如果本地 DNS 服务中有记录,则返回
③、如果本地 DNS 服务器中没有, 则会发送请求到 根服务器中查询,如果 根服务器中有记录则直接返回
④、如果根服务器没有,则那 根服务器会将它所管理的 顶级域名(com)对应的 IP地址返回
⑤、步骤④中返回了 顶级域名(com)的ip地址,本地DNS 服务器会逐个到这些 顶级域名(com)去到,看看有没有记录。
⑥、如果顶级域名也没有,那就到顶级域名下的二级域名中查找。依次下去直到找到为止
⑦、如果找到了,本地DNS服务器会将结果缓存起来。
图解展示:
安装 DNS 服务器
yum -y install bind
yum -y install bind-chroot
yum -y install bind-utils
bind 软件包:主程序包提供了 DNS 服务,bind是 DNS协议的一种实现
bind-chroot 软件包:主要使得 bind 软件运行在 chroot 模式下,这样 bind 运行在相对路径的根路径,而不是 Linux 真正的根路径。例如:操作系统的根目录是 / , 而装了 bind-chroot 后 bind软件运行的根目录就是 /var/named/chroot。 如果被人通过 DNS 服务入侵了,那他也只能访问 /var/named/chroot 目录下的文件。其他
目录的文件他就没法访问。
bind-utils 软件包:提供了 DNS 查询工具,如 dig、host、nslookup。
DNS配置文件说明
没装bind-chroot,主配置文件
主配置文件:/etc/named.conf
区域文件:/var/named/ 目录下
装了bind-chroot, bind-chroot改变我们的根路径(原来是 /, 现在的根是 /var/named/chroot)
主配置文件:/var/named/chroot/etc/named.conf
区域文件:/var/named/chroot/var/named/ 目录下
主配置文件
创建主配置文件
手工创建 name.conf 主配置文件
touch /var/named/chroot/etc/named.conf
chmod 640 /var/named/chroot/etc/named.conf
chown root.named /var/named/chroot/etc/named.conf
除了手工创建 name.conf 主配置文件的方式,我们还可以拷贝 /etc/named.conf 文件到
/var/named/chroot/etc/ 目录下,然后对其进行更改。采用如下命令
cp -p /etc/named.conf /var/named/chroot/etc/
编辑主配置文件
正面解析 demo
编辑 主配置文件
vim /var/named/chroot/etc/named.conf
文件内容为:
options {
listen-on port 53 { any; };
directory "/var/named";
};
// 定义根域
// 用于 本地DNS 向根服务器递归查询
zone "." IN {
type hint;
// 保存 DNS根服务器地址
file "named.ca";
};
//定义一个主域
zone "abc.com" IN {
type master;
// 指定区域文件名
file "abc.com.zone";
};
区域文件
创建区域文件
手工创建区域文件 abc.com.zone
touch /var/named/chroot/var/named/abc.com.zone
chmod 640 /var/named/chroot/var/named/abc.com.zone
chown root.named /var/named/chroot/var/named/abc.com.zone
除了手工创建区域文件外,我们还可以拷贝区域文件模板,在此基础上进行修改
cp -p /var/named/named.localhost /var/named/chroot/var/named/abc.com.zone
编辑区域文件
vim /var/named/chroot/var/named/abc.com.zone
文件内容如下:
$TTL 1D
@ IN SOA dns1.abc.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H
) ; minimum
NS dns1.abc.com.
dns1 A 192.168.0.241
www A 192.168.0.100
news CNAME www
语法检查
主配置文件语法检查
named-checkconf /var/named/chroot/etc/named.conf
区域文件语法检查
拿域名为 abc.com 举例
named-checkzone abc.com /var/named/chroot/var/named/abc.com.zone
named-chroot服务相关命令
systemctl start named-chrooot # 启动
systemctl restart named-chrooot # 重启
systemctl status named-chrooot # 查看状态
systemctl enable named-chroot ##设置开机启动
报错
原因是我们在 /var/named/chroot/etc/named.conf 主配置文件中配置了根域(named.ca),在/var/named/chroot/var/named/ 目录下 找不到 named.ca,因此报错。解决方法:
cp -p /var/named/named.ca /var/named/chroot/var/named/
测试
启动 named-chroot 服务
systemctl start named-chroot
关闭防火墙、Selinux
云服务器上开放端口
配置 DNS 设置
使用的是虚拟机中的 linux 做客户端,需要配置这台 linux 的dns,连接上云服务器(124.70.178.21)的DNS 服务器
vim /etc/resolv.conf
域名解析
在虚拟机的linux,使用 nslookup 测试域名解析是否正确
存在的问题
我们可以看到此时 解析自己编写的域名记录是没有问题了,但解析外网的记录就无法解析。如图:
解决方法
编辑主配置文件(/var/named/chroot/etc/named.conf),添加转发设置。
当我们本地 DNS 服务器无法解析的时候,就会将请求转发给外部 DNS 服务器解析
再次测试:
小总结
没有安装 named-chroot
主配置文件:/etc/named.conf
区域文件存放在:/var/named/
这些文件的 权限 640,所属用户 root ,所属组 named
服务名 named , named服务的启动 、状态、停止命令:
systemctl start named
systemctl status named
systemctl stop named
systemctl enable named # 服务的开机启动
安装 named-chroot
主配置文件: /var/named/chroot/etc/named.conf
区域文件存放在:/var/named/chroot/var/named/
这些文件的 权限 640,所属用户 root ,所属组 named
服务名 named-chroot , named-chroot服务的启动 、状态、停止命令:
systemctl start named-chroot
systemctl status named-chroot
systemctl stop named-chroot
systemctl enable named-chroot # 开机启动
主配置文件 named.conf
options {
listen-on port 53 { any; }; // 监听IPv4 的53端口, any表示 允许任何人连接
directory "/var/named"; // 指定区域文件存放的路径
allow-query { any; }; // #指定允许哪些主机可以进行普通的DNS查询,可以是关键字:any/localhost/none,也可以是IPV4,IPV6地址
recursion yes; //开启递归查询,默认值是 yes
forward first;
forwarders {
223.5.5.5;
223.6.6.6;
8.8.8.8;
};
};
// 定义根域
// 用于 本地DNS 向根服务器递归查询
zone "." IN {
type hint;
// 保存 DNS根服务器地址
file "named.ca";
};
//定义一个主域
zone "abc.com" IN {
// 类型为master
type master;
// 指定区域文件名
file "abc.com.zone";
};
zone "baidu.com" IN {
type master;
// 指定区域文件
file "baidu.com.zone";
};
区域文件
文件语法检查
主配置文件
named-checkconf /var/named/chroot/etc/named.conf
区域文件:
named-checkzone abc.com /var/named/chroot/var/named/abc.com.zone
反向解析
即通过对 ip 地址得到域名
之前的正向解析 www.abc.com -> 得到 192.168.0.100
反向解析 192.168.0.100 -> 得到 www.abc.com
主配置文件
主配置文件添加反向解析zone
编辑主配置文件
vim /var/named/chroot/etc/named.conf
在最后添加反向解析的内容:
// 定义一个反向解析,网段反写
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.arpa";
};
反向解析区域文件
创建反向解析的区域文件,修改所属用户和组,文件的权限。
touch /var/named/chroot/var/named/192.168.0.arpa
chown root.named /var/named/chroot/var/named/192.168.0.arpa
chmod 640 /var/named/chroot/var/named/192.168.0.arpa
编辑区域文件
vim /var/named/chroot/var/named/192.168.0.arpa
其内容如下:
$TTL 1D
0.168.192.in-addr.arpa. IN SOA dns1.abc.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1.abc.com.
100 PTR www.abc.com.