文章目录
1.DNS产生背景
我们知道ip地址一开始是32位的,分成四段,用点分十进制表示,我们在浏览器上浏览文章时,我相信大家应该没有见过在地址栏中出现ip地址吧,这样是因为数字不太容易记住,人脑更喜欢记忆符号化的数据。
网络上的数据需要通过ip地址来进行路由,最终传送到目的地,比如ip报文中首部的源地址和目的地址,没有ip地址是不行的,但为了解决难记忆的问题,人们想到把ip地址映射到一个主机名,这样访问该主机名就相当于访问该ip地址 ,那就是 /etc/hosts 这个档案的用途了。
可惜的是,这个方法还是有缺憾的,那就是主机名与 IP 的对应无法自动于所有的计算机内更新, 且要将主机名加入该档案仅能向 INTERNIC 注册,若 IP 数量太多时,该档案会大到不象话,也就更不利于其他主机同步化了。
为了解决这个日益严重的问题,柏克莱大学发展出另外一套阶层式管理主机名对应 IP 的系统, 我们称它为 Berkeley Internet Name Domain, BIND 这也是目前全世界使用最广泛的领域名系统 (Domain Name System, DNS)
2.DNS与BIND
DNS 是一种因特网的通讯协议名称, 至于 Bind 则是提供这个 DNS 服务的软件 。
3.FQDN(完整主机名)、领域名、主机名
领域名底下还可以记录各个主机名, 领域名和主机名组合起来才是完整的主机名 (FQDN)
域名限制了范围,而主机名显示了对象,加在一起就是完整路径。比如北京(领域名)的小海(主机名),完整主机名(FQDN)就是 小海.北京.(注意最后的小数点,代表根域名)
例如下面的或许更形象
4.使用传输层协议
通常 DNS 查询的时候,是以 udp 这个较快速的数据传输协议来查询的, 但是万一没有办法查询到完整的信息时,就会再次的以 tcp 这个协定来重新查询的 。
5. DNS 数据库的记录:正解, 反解, Zone 的意义
-
从主机名查询到 IP 的流程称为:正解
-
从 IP 反解析到主机名的流程称为:反解
-
不管是正解还是反解,每个领域的记录就是一个区域 (zone),每一个区域对应一个解析文件。
另外,每一部 DNS 服务器都可以管理多个领域,不管是正解还是反解。
6.架设BIND
要架设好 BIND 需要什么设定数据呢?基本上有两个主要的数据要处理:
-
BIND 本身的配置文件:主要规范主机的设定、zone file 的所在、权限的设定等;
-
正反解数据库档案 (zone file):记录主机名与 IP 对应等。
本次搭建服务器基于redhat 5
7.caching-nameserver
dns配置文件模版
8.服务安装
[root@localhost ~]#yum install bind
[root@localhost ~]#yum install bind-chroot
[root@localhost ~]#yum install caching-nameserver-9.3.4-6.P1.el5.i386.rpm //dns配置文件模版
9.搭建目标
DNS服务主机IP:192.168.1.224 名称 dns.example.com
管理员邮箱:master@domin.com
正向解析:
www.example.com 192.168.1.10
mail1.example.com 192.168.1.20
mail2.example.com 192.168.1.21
web.example.com 是 www.example.com的别名 (访问前者等于访问后者)
NAME TYPE VALUE
--------------------------------------------------
web.example.com. CNAME www.example.com.
www.example.com. A 192.168.1.10
反向解析
192.168.1.224 反向解析 dns.example.com
192.168.1.10 反向解释 www.example.com
192.168.1.20 反向解析 mail1.example.com
192.168.1.21 反向解析 mail2.example.com
10.修改主配置文件
[root@localhost ~]#vim /var/named/chroot/etc/named.caching-nameserver.conf **
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver 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.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
options {
```bash
listen-on port 53 { any; }; //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";
query-source port 53;
query-source-v6 port 53;
```bash
allow-query { any; }; //any #修改点
```
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
```bash
match-clients { any; }; #修改点
match-destinations { any; }; #修改点
```
recursion yes;
include "/etc/named.rfc1912.zones";
};
11.修改DNS区域配置文件
**[root@localhost ~]#vim /var/named/chroot/etc/named.rfc1912.zones**
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "." IN {
type hint;
file "named.ca";
};
zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.ip6.local";
allow-update { none; };
};
zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
#新建以下内容
zone "example.com" IN {
type master;
file "example.com.zone"; #这里的文件名和后面的正向解析文件名相对应
allow-update {none;};
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.local"; #这里的文件名和后面的反向解析文件名相对应
allow-update {none;};
};
12配置正向解析文件
[root@localhost ~]#cd /var/named/chroot/var/named
[root@localhost named]#cp -a named.local example.com.zone
[root@localhost named]#cp -a named.local 192.168.1.local
#cp命令的时候,谨记带上参数-a,因为文件有权限方面问题,如果不是-a可能无法启动DNS服务器
[root@localhost named]#vim example.com.zone
$TTL 86400
@ IN SOA dns.example.com. master.domin.com. (
#这里的邮箱@符号用 “. ”号代替,因为@在文件中代表本域 即 example.com.
42; serial (d.adams)
3H; refresh
15M; retry
1W; expiry
1D); minimum
@ IN NS dns.example.com.
dns.example.com. IN A 192.168.1.224
@ IN MX 10 mail1.example.com. #10代表优先级,越小优先级越高
@ IN MX 20 mail2.example.com.
mail1.example.com. IN A 192.168.1.20
mail2.example.com. IN A 192.168.1.21
www.example.com. IN A 192.168.1.10
web IN CNAME www.example.com.
一定从行首开始 | 所有设定数据一定要从行首开始,前面不可有空格符。若有空格符,代表延续前一个 domain 的意思~非常重要~ |
---|---|
@ | 这个符号代表 zone 的意思!例如写在 example.com.zone 中,@ 代表 example.com.,如果写在 192.168.1.local档案中,则 @ 代表 1.168.192.in-addr.arpa. 的意思 |
. | 这个点 (.) 很重要!因为他代表一个完整主机名 (FQDN) 而不是仅有 hostname 而已。举例来说,在 example.com.zone 当中写 www.example.com 则代表 FQDN 为 www.example.com.@ ==> www.example.com.example.com. 喔!因此当然要写成www.example.com. 才对!最后一行没有写全,系统会为我们自动加上example.com. (@) 最终成为web.example.com. 这是一种简化的写法 |
13.配置反向解析文件
[root@localhost named]#vim 192.168.1.local
$TTL 86400
@ IN SOA dns.example.com. master.domin.com. (
#这里的邮箱@符号用 “. ”号代替,因为@在文件中代表本域 即 example.com.
42; serial (d.adams)
3H; refresh
15M; retry
1W; expiry
1D); minimum
@ IN NS dns.example.com.
224 IN PTR dns.example.com.
20 IN PTR mail1.example.com.
21 IN PTR mail2.example.com.
10 IN PTR www.example.com.
14.启动DNS
[root@localhost ~]# /etc/init.d/named restart
15.检测
[root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.1.224
[root@localhost ~]# dig www.example.com
;; ANSWER SECTION:
www.example.com. 86400 IN A 192.168.1.10
[root@localhost ~]# dig -x 192.168.1.10
;; ANSWER SECTION:
10.1.168.192.in-addr.arpa. 600 IN PTR www.example.com.