恰同学少年,风华正茂。
说到DNS,相信大家非常的耳熟,那是因为在访问网站时都需要用到服务,可以说是掌握了网页的命脉啊
Dns服务器主要是用于帮助用户方便访问网站,在访问某一网站时,可以通过dns服务器来进行解析,
这样就可以在不知道主机ip地址的情况下通过它的名字来进行访问。
那DNS究竟是怎么样进行运作,有应该如何的安装呢?这一篇文章就来为大家揭开dns神秘的面纱。
在正式开始学习前,我先为大家介绍个文件 /etc/hosts
哈哈,大家对这个文件肯定不陌生吧,没错他就是dns的前身,最早期没有dns的主机,就是利用/etc/hosts
文件来实现域名解析这个功能的,每一台主机上都保存了一份本地网中全部主机及其对应的ip地址清单。
好家伙 看着头都大了
但是人脑对于一连串的数字字母,记忆起来确实很吃力,这样,当需要访问某一个主机时就要先查询对方的ip地址,确实很麻烦 也增加了访问网页的复杂性,为了解决这个难题,BIND就应运而生啦, 这一套分布式管理主机ip地址的系统就是目前全世界使用最广泛的域名解析系统
在dns的系统中提供dns解析的主机被称为dns服务器或者域名服务器,而进行“域名查询“请求的主机,则被成为dns客户端,不过在dns客户端中,也有简单的dns查询服务,其中包括/etc/host.conf resolv
和 hosts3
在这里就不为大家具体解释这三个文件了。
通常在进行测试调试过程中需要某一个网站的解析 我通常就喜欢用hosts 文件来进行解析 。
因为确实是方便啊 嘿嘿嘿。
后面会为大家简单介绍一下hosts文件的使用方法
切入正题
在客户端发送查询信息中包含最重要的一条信息:
被指定的dns域名 必须为完全合格域名(FQDN)
Ps :(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)。
说一下 当客户端需要域名解析是 并不是直接向域名解析服务器进行解析,而是首先在本机进行域名解析的操作 如果解析不到,才向域名解析服务器发送解析请求。
linux客户端默认解析就是首先查询host文件 如果host文件中查询不到 才会向dns服务器发送请求
第一部分的内容是主机的ip地址 第二部分是域名 第三部分是主机的别名
Linux系统下假设DOS服务器通常时使用Bind程序来实现的。Bind是最知名域名服务器软件,他完整的实现了DNS协议规定的各种功能。可以在各种主流的操作系统平台上运行,并且被作为许多供应商的unix标准配置封装在产品中。
Bind基础命令
yum install -y bind bind-utils ##Bind安装包 utils是一个bind测试工具(可选择)
service named start ##开启命令
service named stop ##关闭服务命令
service named restart ##重新启动服务命令
chkconfig named on ##设置开机自启动
安装成功 我们继续往下走
与其他服务器相比,Bind的配置文件结构要复杂得多,而且在配置文件不正确的时候,Bind也无法运行。我先讲一套最简单的配置文件,使Bind能正常运行起来,并具有初步的域名解析功能。
我们首先进入主配置文件
[root@Demo ~]# vim /etc/named.conf
10 options {
11 listen-on port 53 { any; }; ##开启端口监听 DNS为53号端口
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 allow-query { any; }; ##允许所有
18 recursion yes;
19
20 dnssec-enable no ; ##可选择yes
21 dnssec-validation no; ##可选择yes
22 dnssec-lookaside auto;
23
24 /* Path to ISC DLV key */
25 bindkeys-file "/etc/named.iscdlv.key";
26
27 managed-keys-directory "/var/named/dynamic";
28 };
29
30 logging {
31 channel default_debug {
32 file "data/named.run";
33 severity dynamic;
34 };
35 };
36
37 zone "." IN { ##定义一个名为“.”的区 查询类为IN
38 type hint; ## 类型为hint
39 file "named.ca"; ##区文件是named.ca
40 };
41
42 include "/etc/named.rfc1912.zones";
##辅助区域配置文件,除了根域之外,其余所有区域配置都建议在这个配置文件中,主要为了方便管理,不会轻易破坏主配置文件。
43 include "/etc/named.root.key";
44
~
进入文件 创建正反向解析区域
[root@Demo ~]# vim /etc/named.rfc1912.zones
修改内容如下:
13 zone "Demo.com" IN { ##定义域名
14 type master;
15 file "named.localhost"; ##正向解析文件
16 allow-update { none; };
17 };
31 zone "0.168.192.in-addr.arpa" IN { ##定义IP地址段
32 type master;
33 file "named.loopback"; ##反向解析文件
34 allow-update { none; };
35 };
进入正向解析文件
[root@Demo ~]# vim /var/named/named.localhost
添加需要解析的域名:
1 $TTL 1D
2 @ IN SOA @ rname.invalid. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS @
9 A 127.0.0.1
10 AAAA ::1
11 www A 192.168.0.1
12 test A 192.168.0.2
13 demo A 192.168.0.3
进入反向解析文件
[root@Demo ~]# vim /var/named/named.loopback
添加反向解析
1 $TTL 1D
2 @ IN SOA @ rname.invalid. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS @
9 A 127.0.0.1
10 AAAA ::1
11 PTR localhost.
12 1 PTR www.Demo.com
13 2 PTR test.Demo.com
14 3 PTR demo.Demo.com
完成重启dns服务
[root@Demo ~]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
[root@Demo ~]#
使用nslookup测试 解析成功
测试时要将DNS服务器的ip地址添加到网卡地址中哦
[root@Demo ~]# echo "DNS1=192.168.1.103" >> /etc/sysconfig/network-scripts/ifcfg-eth0
然后重启网卡服务和DNS服务器
[root@Demo ~]# nslookup
> www.Demo.com
Server: 192.168.1.103
Address: 192.168.1.103#53
Name: www.Demo.com
Address: 192.168.0.1
> 192.168.0.2
Server: 192.168.1.103
Address: 192.168.1.103#53
2.0.168.192.in-addr.arpa name = test.Demo.com.0.168.192.in-addr.arpa.
>
这样一个简单的DNS服务器就完成了 后面我会在为大家讲包括子域DNS、辅助DNS、缓存DNS还有rndc控制域名服务器等
后面我会再为大家写一篇对DNS主配置文件和关于DNS的配置文件的一些详解。