ubuntu17.04自建dns服务器---bind的安装和配置

  1. 下载安装bind

apt-get install bind9 

2.配置bind


  • 2.1 文件结构
root@cnsz92vl01921:~# cd /etc/bind
root@cnsz92vl01921:/etc/bind# ll
total 64
drwxr-sr-x  3 root bind 4096 Oct 31 18:40 ./
drwxr-xr-x 99 root root 4096 Oct 31 16:32 ../
-rw-r--r--  1 root root 3954 Jan 16  2018 bind.keys
-rw-r--r--  1 root root  237 Jan 16  2018 db.0
-rw-r--r--  1 root root  271 Jan 16  2018 db.127
-rw-r--r--  1 root root  237 Jan 16  2018 db.255
-rw-r--r--  1 root root  353 Jan 16  2018 db.empty
-rw-r--r--  1 root root  270 Jan 16  2018 db.local
-rw-r--r--  1 root root 3171 Jan 16  2018 db.root
-rw-r--r--  1 root bind  463 Jan 16  2018 named.conf
-rw-r--r--  1 root bind  490 Jan 16  2018 named.conf.default-zones
-rw-r--r--  1 root bind  346 Oct 31 18:40 named.conf.local
-rw-r--r--  1 root bind  172 Oct 31 14:10 named.conf.options
-rw-r-----  1 bind bind   77 Oct 31 13:37 rndc.key
drwxr-s---  2 root bind 4096 Oct 31 19:30 zones/
-rw-r--r--  1 root root 1317 Jan 16  2018 zones.rfc1918

进入bind的主配置文件夹,bind读取的配置文件是named.conf,其内容为三个include,配置是分散在三个文件中。

root@cnsz92vl01921:/etc/bind# cat named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

named.conf.options存放的程序本身的一些设置

root@cnsz92vl01921:/etc/bind# cat named.conf.options 
acl "trusted"{                     //初始化一个名为"trusted"列表,里面存放着ip段,这里为所有ip
  any;
};

options {
  recursion yes;                        //开启dns递归解析
  allow-recursion {trusted;};            //允许递归解析的ip列表
  listen-on {any;};                     //侦听可以获取的网络上任何ip的dns请求
  allow-transfer{none;};

  forwarders{                          //转发dns请求
    114.114.114.114;
  };
};

named.conf.local存放着一些域的定义,譬如下面有一个叫做 sit.cmft.com的域,当需要解析的是*.sit.cmft.com这样的域名,就会使用该域进行查找,域名和ip的对应信息存储在数据库文件/etc/bind/zones/db.sit.cmft.com

root@cnsz92vl01921:/etc/bind# cat named.conf.local 
zone "sit.cmft.com"{
    type master;
    file "/etc/bind/zones/db.sit.cmft.com";
};

named.conf.default-zones中是存放着一些系统的默认的域定义,譬如 localhost

root@cnsz92vl01921:/etc/bind# cat /etc/bind/named.conf.default-zones

zone "." {
        type hint;
        file "/etc/bind/db.root";
};

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};
  • 2.2 配置一个域名
  • 2.2.1 概述
    在本机上搭建一个dns服务器,配置一个叫做testing.example.com的域名的ip为1.1.1.1
  • 2.2.2 设置服务器配置
    在配置文件中named.conf.options添加如下内容设置程序属性,该文件的主要配置含义都如下所示,其中注意:
    listen-on {any;}; 这里原本是listen-on 53 { any;};,默认为53端口,所以可以省略,这个any不代表整个网络上所有的包都能拿到,而是服务器主机网卡所有可以接触到的53端口的包都会被监听。
root@cnsz92vl01921:/etc/bind# cat named.conf.options 
acl "trusted"{                     //初始化一个名为"trusted"列表,里面存放着ip段,这里为所有ip
  any;
  //192.168.0.0/24;            //添加192.168.0.X整个网段
};

options {
  recursion yes;                        //开启dns递归解析
  allow-recursion {trusted;};            //允许递归解析的ip列表
  listen-on {any;};                     //侦听可以获取的网络上任何ip的dns请求
  allow-transfer{none;};

  forwarders{                          //对于本地无法解析的域名记录,转发公网dns请求
    114.114.114.114;
  };
};
  • 2.2.3 定义一个域
    named.local.conf中的内容如下所示,定义了一个名example.com的域,所有*.example.com的域名都会来通过这个域的数据库文件 /etc/bind/zones/db.example.com进行解析
root@cnsz92vl01921:/etc/bind# cat named.conf.local 

zone "example.com"{
    type master;
    file "/etc/bind/zones/db.example.com";
}

使用named-checkconf检查配置文件是否有无法错误

root@cnsz92vl01921:~# named-checkconf 
  • 2.2.4 编写域的数据库文件
    2.2.3中定义域中所写的路径下创建文件db.example.com( 名字、路径可以任意,但一定要和定义域中写的路径保持一致), 文件内容如下所示
root@cnsz92vl01921:/etc/bind/zones# cat db.example.com


$TTL    604800            //告知请求端,这些域名对应的ip的有效时间为604800
@   IN  SOA nameserver1.example.com. wangys003.cmft.com. (
                      2     ; Serial
                 604800     ; Refresh
                  86400     ; Retry
                2419200     ; Expire
                 604800 )   ; Negative Cache TTL
;

; A records
@       IN      NS      nameserver1.example.com.
@       IN      NS      nameserver2.example.com.
nameserver1.example.com.        IN    A    100.69.149.20
nameserver2.example.com.        IN    A    100.69.149.21

testing.example.com.            IN    A    1.1.1.1

$TTL 604800 域名的ip对应的有效时间


@ IN SOA n1.example.com. wangys003.cmft.com. (...) 定义这个域的一些属性
@是使用这个文件的域的简写,在这里就是exmple.com.
IN 表示是internet类型(还有其它的类型),
SOA n1.example.com. 表示域example.com的主名称服务器是nameserver1.example.com,dns服务器类型分为三类,其中主要的是主名称服务器从名称服务器,前者是从本地的数据文件获取域名的ip,而后者是从前者获取这些数据文件,也许是从服务器上的文件出于需要更新的缘故?所以需要在数据文件中标识出主名称服务器是什么?


@ IN NS nameserver1.example.com.
@是域example.com.的简写
NS nameserver1.example.com.,表示这个域的名称服务器是nameserver1.example.com
当遇到一个域名为 ***.example.com的时候,譬如testing.example.com将会从本地数据文件解析,如果超时或者不存在就会在去名称服务器上更新/获取。(猜测)
此外,NS还有子域转发的作用


nameserver1.example.com. IN A 100.69.149.20
表明nameserver1.example.com.对应的address为 100.69.149.20
testing.example.com. IN A 1.1.1.1
表明testing.example.com.对应的address为 1.1.1.1


检查数据库文件是否有写错

root@cnsz92vl01921:~# named-checkzone example.com /etc/bind/zones/db.example.com 
zone example.com/IN: loaded serial 2
OK
  • 2.2.5 测试

重启bind 服务器

root@cnsz92vl01921:~# /etc/init.d/bind9 restart 
[ ok ] Restarting bind9 (via systemctl): bind9.service.

可以修改本机的/etc/resolve.conf文件修改dns服务器地址进行测试,也可以使用dig指令进行测试, 指令格式为 : dig 域名 @dns服务器地址,由于此处dns的服务器是搭建在本地,所以使用了127.0.0.1,

root@cnsz92vl01921:/etc/bind# dig testing.example.com @127.0.0.1

; <<>> DiG 9.10.3-P4-Ubuntu <<>> testing.example.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53940
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;testing.example.com.           IN      A

;; ANSWER SECTION:
testing.example.com.    604800  IN      A       1.1.1.1         #所设定好的地址

;; AUTHORITY SECTION:
example.com.            604800  IN      NS      nameserver2.example.com.
example.com.            604800  IN      NS      nameserver1.example.com.

;; ADDITIONAL SECTION:
nameserver1.example.com. 604800 IN      A       100.69.149.20
nameserver2.example.com. 604800 IN      A       100.69.149.21

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 01 20:14:01 CST 2018
;; MSG SIZE  rcvd: 148

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,848评论 0 7
  • 一、BIND是什么 BIND是互联网应用最为广泛的DNS软件。 二、BIND的安装与使用 以下内容转自 http:...
    0_0啊阅读 3,048评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,561评论 18 139
  • 目录(持续更新) 基础-第0章-安装基础-第1章-基本操作基础-第2章-磁盘及文件系统管理基础-第3章-获得帮助基...
    sky92archangel阅读 843评论 0 1
  • extend这一部分真的看得我不知道要怎么说明好,难怪less中文网这一部分完全没有翻译。看着一部分的时候感觉无从...
    程恺阅读 1,503评论 0 1