我见过最好的Linux教程——DNS服务器搭建

恰同学少年,风华正茂。

前言

说到DNS,相信大家非常的耳熟,那是因为在访问网站时都需要用到服务,可以说是掌握了网页的命脉啊
Dns服务器主要是用于帮助用户方便访问网站,在访问某一网站时,可以通过dns服务器来进行解析,
这样就可以在不知道主机ip地址的情况下通过它的名字来进行访问。
那DNS究竟是怎么样进行运作,有应该如何的安装呢?这一篇文章就来为大家揭开dns神秘的面纱。
我见过最好的Linux教程——DNS服务器搭建_第1张图片

Dns服务简介

在正式开始学习前,我先为大家介绍个文件 /etc/hosts 哈哈,大家对这个文件肯定不陌生吧,没错他就是dns的前身,最早期没有dns的主机,就是利用/etc/hosts 文件来实现域名解析这个功能的,每一台主机上都保存了一份本地网中全部主机及其对应的ip地址清单。
我见过最好的Linux教程——DNS服务器搭建_第2张图片
好家伙 看着头都大了
我见过最好的Linux教程——DNS服务器搭建_第3张图片

但是人脑对于一连串的数字字母,记忆起来确实很吃力,这样,当需要访问某一个主机时就要先查询对方的ip地址,确实很麻烦 也增加了访问网页的复杂性,为了解决这个难题,BIND就应运而生啦, 这一套分布式管理主机ip地址的系统就是目前全世界使用最广泛的域名解析系统
我见过最好的Linux教程——DNS服务器搭建_第4张图片

DNS查询原理

在dns的系统中提供dns解析的主机被称为dns服务器或者域名服务器,而进行“域名查询“请求的主机,则被成为dns客户端,不过在dns客户端中,也有简单的dns查询服务,其中包括/etc/host.conf resolvhosts3
在这里就不为大家具体解释这三个文件了。
通常在进行测试调试过程中需要某一个网站的解析 我通常就喜欢用hosts 文件来进行解析 。
因为确实是方便啊 嘿嘿嘿。

我见过最好的Linux教程——DNS服务器搭建_第5张图片

后面会为大家简单介绍一下hosts文件的使用方法

切入正题

在客户端发送查询信息中包含最重要的一条信息:
被指定的dns域名 必须为完全合格域名(FQDN)
Ps :(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)。

说一下 当客户端需要域名解析是 并不是直接向域名解析服务器进行解析,而是首先在本机进行域名解析的操作 如果解析不到,才向域名解析服务器发送解析请求。

linux客户端默认解析就是首先查询host文件 如果host文件中查询不到 才会向dns服务器发送请求

hosts文件的使用方法

我见过最好的Linux教程——DNS服务器搭建_第6张图片
第一部分的内容是主机的ip地址 第二部分是域名 第三部分是主机的别名
我见过最好的Linux教程——DNS服务器搭建_第7张图片

DNS服务器安装搭建

Linux系统下假设DOS服务器通常时使用Bind程序来实现的。Bind是最知名域名服务器软件,他完整的实现了DNS协议规定的各种功能。可以在各种主流的操作系统平台上运行,并且被作为许多供应商的unix标准配置封装在产品中。
我见过最好的Linux教程——DNS服务器搭建_第8张图片
Bind基础命令
yum install -y bind bind-utils ##Bind安装包 utils是一个bind测试工具(可选择)
service named start ##开启命令
service named stop ##关闭服务命令
service named restart ##重新启动服务命令
chkconfig named on ##设置开机自启动
我见过最好的Linux教程——DNS服务器搭建_第9张图片

安装成功 我们继续往下走
与其他服务器相比,Bind的配置文件结构要复杂得多,而且在配置文件不正确的时候,Bind也无法运行。我先讲一套最简单的配置文件,使Bind能正常运行起来,并具有初步的域名解析功能。
我见过最好的Linux教程——DNS服务器搭建_第10张图片
我们首先进入主配置文件

[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.
>

我见过最好的Linux教程——DNS服务器搭建_第11张图片
这样一个简单的DNS服务器就完成了 后面我会在为大家讲包括子域DNS、辅助DNS、缓存DNS还有rndc控制域名服务器等
后面我会再为大家写一篇对DNS主配置文件和关于DNS的配置文件的一些详解。

你可能感兴趣的:(Linux服务器建设篇)