ubuntu搭建DNS

一、     bind简介:

BIND是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种:

*域名服务器

*DNS解析库函数

*DNS服务器运行调试所用的工具

它是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的

DNS_server主要有以下三种应用模式:

*主域名服务器

*辅助域名服务器

*缓存域名服务器

Bind使用TCP和UDP端口53

二、     DNS-bind软件的相关资源:

官方网站:http://www.bind.com/

帮助文档:http://www.isc.org/sw/bind/

配置文件样例:http://www.bind.com/bind.html

三、     DNS搭建创建环境:

系统环境:Linux_Ubuntu12.04_X64

软件版本:BIND9

搭建测试主机:

*192.168.5.101缓存域名服务器、主域名服务器

*192.168.5.102缓存域名服务器、辅助/从域名服务器

*192.168.5.103 测试客户机

四、     软件安装和主要配置文件解析:

sudo apt-get  install  bind9  bind9utils  -y

dns@dns2:/etc/bind$ ll

total 60

drwxr-sr-x  2 root bind 4096 Sep 10 16:49 ./

drwxr-xr-x 91 root root 4096 Sep 1014:06 ../

-rw-r--r--  1 root root 2389 Jul 27 11:17 bind.keys

-rw-r--r--  1 root root 237 Jul 27 11:17 db.0

-rw-r--r--  1 root root 271 Jul 27 11:17 db.127

-rw-r--r--  1 root root 237 Jul 27 11:17 db.255

-rw-r--r--  1 root root 353 Jul 27 11:17 db.empty

-rw-r--r--  1 root root 270 Jul 27 11:17 db.local

-rw-r--r--  1 root root 2994 Jul 27 11:17 db.root

-rw-r--r--  1 root bind 463 Jul 27 11:17 named.conf

-rw-r--r--  1 root bind 490 Jul 27 11:17 named.conf.default-zones

-rw-r--r--  1 root bind 301 Sep 10 16:43 named.conf.local

-rw-r--r--  1 root bind 890 Sep 10 14:06 named.conf.options

-rw-r-----  1 bind bind  77 Sep 10 14:06 rndc.key

-rw-r--r--  1 root root 1317 Jul 27 11:17 zones.rfc1918

named.conf

主配置文件,设置一般的named参数,指向该服务器使用的域数据库的信息源,注意里面的include语句

named.conf.options

全局配置文件,全局选项配置

db.root

根服务器指向文件,由Internet NIC创建和维护,无需修改,但是需要定期更新

db.local

正向区域数据库,用于将域名解析为对应的IP地址

db.127

反向区域数据库,用于将ip解析为对应的域名

named.conf.local

用于定义解析域,一般是在named.conf里的include语句中囊括,单独在该文件中划定解析域,也可以直接在named.conf中直接划定解析域

其中:主配置文件/etc/bind/named.conf的配置语句:

命令  用法

acl    定义ip地址的访问控制清单

#control 定义ndc使用的控制通道

include  把其他文件包含到主配置文件中

key    定义授权的安全密钥

logging 定义日志写什么,写到那里

options 定义全局配置选项和缺省值

#server  定义远程服务器的特征

.....

五、     服务器搭建:

1.     缓存域名服务器

77

cd/var/cache/bind/

sudomkdir data

cd data

sudotouch cache_dump.db

sudotouch 秒,也就是1周

第二行的SOA记录,指定授权主机和管理员信箱

包含几个子参数,用于和辅助域名服务器同步的:

serial-->相当于一个id号,很重要,只有比辅助服务器的值大,才会更新,一般用当前日期并加上两位序号来表示

refresh-->这里是要告诉从服务器多久进行资料同步

retry-->如果从在更新时失败,要隔多久有进行重试

expire-->这里是记录逾期时间,当从服务器一直都未能成功与主取得联系,到这个时间后就放弃了

Minimum--> 默认 TTL 值,如果您在前面没有用“$TTL”来定义,就会以此值为准

第三行的NS记录,表明负责example.com这个域的Name server

第四行的A记录,就是域名和ip的映射记录

sudo vim db.192.168.5

$TTL    7D

@       IN      SOA    example.com. root.example.com. (

2013091004      ; Serial

7D             ; Refresh

1D            ; Retry

28D             ; Expire

7D )    ; Negative Cache TTL

;

@       IN      NS     example.com.

@       IN      PTR    example.com.

71      IN      PTR    www.example.com.

3.     辅助域名服务器搭建

先按照缓存服务器的搭建方法配置此服务器

a)    定义解析域

和主域名服务器有几点不同的地方:

编辑/etc/bind/named.conf.local文件

辅助服务器不需要创建域库文件,因为是从主服务器上同步过来

sudo vim named.conf.local

############################################

zone "example.com" IN {

type slave;

file "/etc/bind/slave/db.example.com";

masters { 192.168.5.101; };

allow-notify { 192.168.5.101; };

};

zone "5.168.192.in-addr.arpa" IN {

type slave;

file "/etc/bind/slave/Sdb.192.168.5";

masters { 192.168.5.101; };

allow-notify { 192.168.5.101; };

};

############################################

slave是标明该服务器为辅助域名服务器

file是指定存放域库文件的位置,我自定义了一个slaves目录来存放master传过来的文件,相对安全些

sudo mkdir /etc/bind/slave

sudo chmod g+w /etc/bind/slave

masters指明主域名服务器地址

b)    创建域数据库文件

辅助服务器不需要创建域库文件,因为是从主服务器上同步过来

c)     配置权限

注意:创建的slaves是在根目录下面,而根目录(/etc/bind/)默认是只读权限的,所以需要开放权限

但是又不能和平时加权限一样,如用:chown  bind:bind 类似的办法

只有如下操作就能正确访问:

sudo  vim  /etc/apparmor.d/usr.sbin.named

############################################

/etc/bind/** r,

改成

/etc/bind/** rw,

############################################

然后重启服务生效:

sudo /etc/init.d/apparmor restart

六、     重启服务器

重启主从服务器上的BIND服务

sudo /etc/init.d/bind9  restart

最好进行以下几步检查:

sudo netstat -tnlp | grep 53-->检查开启端口

sudo tail -f /var/log/syslog-->查看一下启动日志

查看从服务器上库文件

cd /var/cache/bind

ls

从这里可以直观的看见从主复制过来的库文件,更重要的是看日志,能够很清楚的看到主和从传输的过程

在客户机上测试,就是本机,修改本机的dns,编辑/etc/resolvcond/resolv.conf.d/tail

nameserver 192.168.5.101

需要重启生效

sudo /etc/init.d/resolveconf restart

七、     语法检测工具,检测配置是否有语法错误:

named-checkconf

检查named.conf和include里包含的文件

eg:named-checkconf --help

eg:named-checkconf -t  etc/bind/

没有任何输出代表语法没有问题

named-checkzone

检查zone

eg:named-checkzone -t  etc/bind/

八、     RNDC管理BIND

Bind 9之后提供新的功能为”rndc”(remote name daemon control),可视为Bind旧版ndc的延伸,它可使系统管理者利用rndc command远端或本端(localhost)控制管理Bind,並以加密方式來传送资料,以防止其他非授权使用者控制Bind。

rndcflush 清空本地DNS缓存

rndcflushname name刷新指定域名的缓存

rndcreload重载DNS服务器
rndc status 查看目前DNS服务器状态
rndc stop 停止DNS服务器
rndc restart 重新启动DNS服务器
rndc stats 生成DNS统计报表到statistics-file
rndc dumpdb   将所有缓存输入文件named_dump.db,以查看DNS缓存,DNS缓存是在内存中的
success:成功查询的次数
referral:就是非recursion的查询次数
nxrrset:有这个域名,但找不到解析记录
nxdomain:就是域名都找不到
recursion:递归查询 failure:除上面那些之外的查询失败响应次数

设置DNS Cache 的时间

在 bind 9 中,使用 TTL 参数来设置 DNS 默认的缓存时间,但要记住这个是你解析的域名在别人的 DNS 中的缓存时间。

rndc配置

参考:http://dns-learning.twnic.net.tw/bind/security.html#two-one

九、     报错

1.       如果用户bind对于/etc/bind/slaves目录没有写权限, 则查看 /var/log/syslog 会出现如下类似错误:

tonybox:~# tail/var/log/syslog

Aug 15 15:50:12 ubuntu kernel:[12575.839327] type=1400 audit(1376553012.724:18): apparmor="DENIED"operation="mknod" parent=1 profile="/usr/sbin/named"name="/etc/bind/tmp-MosmnKMJxa" pid=2440 comm="named" requested_mask="c"denied_mask="c" fsuid=107 ouid=107

Aug 15 15:50:12 ubuntunamed[2439]: dumping master file: /etc/bind/tmp-MosmnKMJxa: open: permissiondenied

ubuntu搭建DNS的更多相关文章

  1. centos搭建dns服务

    原文:(https://www.myjinji.top/articles/2020/04/02/1585800289945.html)[https://www.myjinji.top/articles ...

  2. 如何搭建DNS服务

    继NTP时间服务器后,继续搭建DNS服务,鉴于昨晚撰写时间超过预期,这次改变策略,先把自己需要用到的部分写出来(主要是基于RAC的搭建,只涉及正向和反向DNS解析),后面再添加必要的说明和阐述. 试验 ...

  3. ubuntu的dns设置

    ubuntu的dns设置为: dns-nameservers 8.8.8.8 注意不要少s

  4. Ubuntu 搭建PHP开发环境

    Ubuntu确实很好玩.有喜欢的命令行,简洁的界面,不同于Window要的感觉.偶尔换换环境工作,学习Linux的思维方式,是一种不错的做 法.之前也折腾过Ubuntu,不过,因为网络的问题,一直没有 ...

  5. 《搭建DNS负载均衡服务》RHEL6

    搭建DNS负载均衡环境: 1.至少三台的linux虚拟机,一台主的DNS服务器,1台副的(可以N台),1台测试机. 负载均衡有很多种,apache那样的是为了缓解人们访问网站时给服务器造成太大的压力, ...

  6. 《搭建DNS内外网的解析服务》RHEL6

    首先说下: 搭建的这个dns内外网的解析,是正向解析,反向解析自己根据正向解析把文件颠倒下就ok了 第一步我们先搭建一个DNS的正反向解析(参考上篇DNS正反向解析,这是上篇做过的) 第二部才是搭建内 ...

  7. 如何搭建DNS服务(转)

    继NTP时间服务器后,继续搭建DNS服务,鉴于昨晚撰写时间超过预期,这次改变策略,先把自己需要用到的部分写出来(主要是基于RAC的搭建,只涉及正向和反向DNS解析),后面再添加必要的说明和阐述. 试验 ...

  8. Linux 搭建DNS

    Linux 搭建DNS 使用yum源安装 yum -y install bind* 修改主配置文件 [root@localhost ~]# cp /etc/named.conf /etc/named. ...

  9. ubuntu搭建svn服务器并htpp访问版本库并svn与web同步

    Ubuntu搭建SVN服务器多版本库 1  介绍   Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可 ...

随机推荐

  1. Sqli-labs less 28

    Less-28 本关考察内容与27关没有太大的差距,我们直接给出一个payload: http://127.0.0.1/sqllib/Less-28/?id=100')union%a0select(1 ...

  2. Java 性能要点:自动装箱/ 拆箱 (Autoboxing / Unboxing)

    [编者按]本文作者为 Ali Kemal TASCI,最早于2016年4月9日发布于DZONE社区.文章主要介绍通过改进 Java 1.5 就已存在的骨灰级特性大幅度提高应用性能. 本文系 OneAP ...

  3. laravel where中多条件查询

    1. http://www.mobanstore.com/doc/bianchengkaifa/119.html //初学laravel 发现他的查询构造器很好用 //如下 $user = DB::t ...

  4. C#中反射泛型 CreateInstance

    假设1我有个类叫SortClass,类中有个BubbleSort(int[] array)用于给数组进行排序. 假设2我有个类叫SortT<T>,类中有个BubbleSort(T[] ar ...

  5. Linux的别名使用

    直接定义别名 编辑当前用户下的.bashrc 文件: vim  ~/.bashrc 添加别名为 lmysql 的命令语句 : alias lmysql='mysql -uroot -p -Dtest ...

  6. JMeter使用指南--转

    JMeter使用指南 本文重点介绍JMeter工具在测试中地位以及其中一些难以理解或者手册中含糊不清的感念,读者可以通过本文了解这些概念,然后再根据自己的需要查阅JMeter中各个组件的具体用法来完成 ...

  7. 叠罗汉II

    叠罗汉是一个著名的游戏,游戏中一个人要站在另一个人的肩膀上.为了使叠成的罗汉更稳固,我们应该让上面的人比下面的人更轻一点.现在一个马戏团要表演这个节目,为了视觉效果,我们还要求下面的人的身高比上面的人 ...

  8. 546B. Soldier and Badges

    题目链接 题意: n个数,要保证这n个数完全不相同,求需要把原来的数增加多少,求这个值得最小值   Java 程序 import java.io.PrintStream; import java.ut ...

  9. 安卓四大组件之--service

    服务:长期后台运行的没有界面的activity,程序写法和activity类似. 安卓系统进程管理是按照一定规则的: 1.默认情况下,关闭掉一个应用程序,清空了这个应用程序的任务栈,应用程序的进程还会 ...

  10. 295. Find Median from Data Stream

    题目: Median is the middle value in an ordered integer list. If the size of the list is even, there is ...