一、DNS 介绍
DNS(Domain Name System,域名系统),因特网上作为域名和相互映射的一个,DNS 协议运行在协议之上,使用端口号 53(Domain), 953(mdc)。这两个端口号。在 RFC 文档中 RFC 2181 对 DNS 有规范说明,RFC 2136 对 DNS 的动态更新进行说明,RFC 2308 对 DNS 查询的反向缓存进行说明。
二、安装
- [root@dns ~]# yum install -y bind bind-chroot bind-utils
DNS 的主程序 bind, 还有一个是 bind-utils。为了 DNS 安全考虑,引入了 bind-chroot.
chroot 是通过将相关文件封装到一个伪根目录内,已达到安全防护的目的,一旦该程序被攻破,将只能访问到伪根目录内的内容,而并不是真实的根目录。安装了 chroot 这个服务,DNS 服务的配置文件都会被安装到我们的伪根里面,会在里面生成一个与原来服务完全相同的一个目录体系结构。该服务的根目录就会把 /var/named/chroot 当成是自己的根目录,这样就可以对我们的真实根目录进行保护,所以建议大家在安装网络服务时最好都附带安装上 chroot 这个程序。
三、配置
BIND 的一些服务文档位置和模板:
/usr/share/doc/bind-9.8.2/sample
BIND 的主配置文件通常是保存在两个位置:
/etc/named.conf-BIND 服务主配置文件
/var/named/- 域的 zone 配置文件
安装了 bind-chroot 这个程序以后,BIND 的主配置文件存放位置就变了,此时 BIND 的主配置文件会被封装到一个伪根目录内,此时的配置文件位置为:
/var/named/chroot/etc/named.conf-BIND 服务主配置文件
/var/named/chroot/var/named - 域的 zone 配置文件
复制模板
- [root@dns~]#cp / etc / named.conf / etc / named.rfc1912.zones /
- var / named / chroot / etc /
- [root@dns~]#cp - rv / usr / share / doc / bind - 9.8.2 / sample /
- var
- /* /var/named/chroot/var/*/
修改配置:
1、声明要解析的域名
- [root@dns etc]#vim /
- var / named / chroot / etc / named.conf options {
- listen - on port 53 {
- 192.168.1.200;
- };#监听本地IP的53端口
- //listen-on-v6 port 53 { ::1; }; #取消IPv6的监听,可以不注释
- 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;
- };#接受任何人的DNS解析请求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";
- };
- logging {
- channel default_debug {
- file "data/named.run";
- severity dynamic;
- };
- };
- zone "."IN {
- type hint;
- file "named.ca";
- };
- //This is my DNS configuration
- zone "123.com" { //域名正向解析配置,建议写在 named.rfc1912.zones 文件中
- type master; // 指定我们要配置的是域主DNS服务器
- file "123.com.zone"; // 指定域名的zone文件为123.com.zone ,一般都是以域名.zone 命名
- allow - update {
- none;
- };
- }; // ;号一定要加上,否则会报错
- zone "2.168.192.in-addr.arpa" { //域名反向解析配置,建议写在 named.rfc1912.zones 文件中,格式一定为 xx.xx.xx.in-addr.arpa
- type master;
- file "192.168.2.zone";
- allow - update {
- none;
- };
- };
- // End my configuration
- include "/etc/named.rfc1912.zones";
- include "/etc/named.root.key";
2、配置域名和 IP 的对应关系。
- [root@dns etc]# cd /var/named/chroot/var/named
- [root@dns etc]# cp named.localhost 123.com.zone
- [root@dns etc]# vim 123.com.zone
- $TTL 1D
- @ IN SOA @ 123.com. ( ; "."号必须加上
- 2017012501 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- AAAA ::1
- IN MX 10 mail.123.com. ; MX 添加一条 邮件记录,邮件记录后面要跟域名,它会递归的解析这个域名,所以该域名的资源记录一定要有,后面的 "." 一定要写上
- www IN A 192.168.2.10;添加A记录
- c1 IN A 192.168.2.11
- c2 IN A 192.168.2.12
【注意:】MX 记录一定要定义资源记录的最前面,否则就会解析不成功
$TTL = 1D(默认生存时间 = 1D、缓存服务器保存记录的时间是 1 天。也就是告诉缓存服务器保存域的解析记录为 1 天)
serial = 2017012501 (序列号 = 2017012501、我用配置日期作为序列号。这个序列号的作用是当辅域名服务器来复制这个文件的时候,如果号码增加了就复制)
refresh = 1D (刷新 = 1D、辅域名服务器每隔 24 小时查询一个主服务器)
retry = 1H (1 hour) (重试 = 3600 秒、当辅域名服务试图在主服务器上查询更新时,而连接失败了,辅域名服务器每隔 1 小时访问主域名服务器)
expire = 1W (7 days) (到期 = 604800 秒、辅域名服务器在向主服务更新失败后,7 天后删除中的记录。)
3、配置反向解析
- [root@dns etc]# cp named.localhost 192.168.2.zone
- [root@dns etc]# vim 192.168.2.zone
- $TTL 1D
- @ IN SOA @ 123.com. (
- 2017012501 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- AAAA ::1
- 10 IN PTR www.123.com.
- 11INPTRc1.123.com.
- 12INPTRc2.123.com.
4. 启动 DNS 服务
[root@dns etc]# service named restart
Stopping named: [OK]
Starting named: [FAILED]
查看日志:
[root@dns etc]#tail -f /var/log/messages
权限问题,查看 named.rfc1912.zones 发现 其他用户 没有 r 权限.
添加权限
[root@dns etc]# chmod o+r /var/named/chroot/etc/named.rfc1912.zones
[root@dns etc]# service named restart
Stopping named: [OK]
Starting named: [OK]
5. 测试,在自己 PC 上配置 DNS,通过 nslookup 进行测试。
来源: