在Debian上用Bind 配置DNS服务器
1 什么是DNS
初学者可能不理解DNS到底是什么,干什么用。我是在1998年大学毕业时才听说这个词的。那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,DNS是什么?
——DNS,DomainName Service,或者Domain Name Server,域名服务/域名服务器。
你在你的浏览器里面输入http://www.linuxsir.com之后,之所以可以上去,就是因为有了DNS。
简单地说,DNS把一串名字,转换成了IP地址。你可能会说:如果我直接使用IP地址,那就不需要DNS了吗?对!不过,请你接着往下看。
2 为什么需要DNS
2.1 互联网需要DNS
现在几乎整个互联网都是基于TCP/IP的。在这个世界里,不管你访问哪个网站、哪台机器,必须得知道它的IP地址才可以。好,我告诉你,202.106.185.203这个地址,是新浪网的IP地址,你每次上网,都得再浏览器的地址栏里面输入http://202.106.185.203 才可以访问新浪。你可能会说:没问题,不就一串数字嘛,我记得住!可是,你想一下,在Internet上,有多少台主机啊!你可能会记住其中几台甚至几十 台的IP地址,但是你肯定记不住全部。
正是由于IP地址不好记,人们才想了个办法,让你只需要记住名字,然后系统通过这个名字,到数据库里面去查找它的IP地址,然后再把查到的IP地址反馈给你,比如反馈给浏览器,最后,浏览器用这个由DNS给的IP地址去访问你想去的站点。
2.2 局域网需要DNS
那么,在局域网内部呢?需要DNS吗?
太需要了!你不要觉得,单位就这么几台机器,用hosts解析,不也一样吗?你可千万记住这个教训,当公司越来越大,hosts的维护量将大的惊人!我所在的公司,前不久就面临了这种尴尬。所以,一定要有一台DNS,然后在公司内部定义一个规范的主机命名规则,这才是个好网管,呵呵。
3 BIND介绍
Bind是使用最广泛的DomainName Server,它是Berkeley Internet Name Domain Service的简写,伯克里大学编写的。这个大学可真厉害,写了不少著名程序。
原本bind的版本一直在4.8.x 4.9.x 左右,后来一口气跳到8.1.x,是因为大幅度改进了功能,并修复了漏洞。现在bind有两个版本在同时发展,bind 8.x 和 bind 9.x,最新版本是8.3.3和9.2.1。
3 安装
3.1 软件版本
目前debian的sid,同样提供了8版本的bind和9版本的bind,后者的软件包名字叫做bind9.deb,版本是最新的9.2.1版。
3.2 安装
安装过程非常简单:
# apt-get install bind9
4 配置
由于我们前面第三章在配置邮件服务器的时候,使用了hosts文件来解析IP地址,现在我们需要把它去掉,让系统通过DNS来解析它所需要的IP地址。
我们制作基本的配置。至于高级功能,我们将在本文的下一个版本里描述。
4.1 去掉hosts信息
如果你阅读过本文第三章,你就会知道,我有两台机器,一台笔记本电脑安装了win2000,名字叫notepad;另一台台式机装了Debian,机器名叫debian。他们都属于test.com这个域,这个域名没有在ISP那里注册,是我们内部用 的。我分别编辑win2000机器上的\winnt\system32\drivers\etc\hosts这个文件和debian机器上的/etc/hosts,去掉下面的这些行:
192.1.110.120debian.test.com debian
192.1.110.122notepad.test.com notepad
这时你可以在win2000机器上启动OutlookExpress,做一下收取邮件的动作,它会说找不到debian.test.com——这就对了,因为hosts文件里面没有指向这个名字的IP地址, 而且,我们也没有给win2000指定DNS服务器,所以它肯定找不到debian.test.com。
4.2 在客户机上设置DNS
在我的Win2000机器里面,在桌面上右击“网上邻居”选择属性,在出现的窗口中右击“本地连接”选择属性,然后双击TCP/IP,在右下角的“首选DNS”里面,输入192.1.110.120。这是我的Debian机器在局域网上的IP地址。如果你用的是 win98,那么情况差不多,在一个叫做DNS的标签里面设置首选DNS。我很久不用98了,差不多忘了。
如果你是个急性子,你会发现,诶?怎么设上了DNS了,我的OutlookExpress还是说找不到debian.test.com?呵呵,别急别急,我们的DNS服务器还没弄好呐!
4.3 在Debian上设置DNS
我们要事先把Debian机器的DNS指向它自己。修改/etc/resolv.conf,修改成:
search test.com
nameserver192.1.110.120
你不会把我的IP地址也抄上吧,呵呵。
4.4 配置DNS服务器
4.4.1 应用环境
我们把实验环境重新描述一下。
◆一个C类网段地址(本例中假定是192.1.110.0)
◆企业域名为test.com,没有在ISP注册。(主域名服务器地址 192.1.110.120,主机名为 debian.test.com)
◆企业网通过路由器与Internet连接
假如你的应用环境与上述条件不同,也请往下看,本文会在上述例子的基础上针对以下情况作修正:
◆多个网段
◆封闭的内部网
◆只能访问局部公共网的情况(如169网、上海热线等)
我们将使用一个叫做rndc的工具,rndc可以用于启动、中止、重启动、刷新DNS数据、输出DNS数据等多种调试功能。
4.4.2 配置named.conf
DNS服务器的主体是域名服务器进程 named ,named 启动后向DNS客户机提供域名解析服务,把域名转换成IP地址。
named启动时需要读取一个初始化文件,缺省情况下是 /etc/bind/named.conf,这是bind的基本配置文件,不过这里面并不包含DNS数据。
注意,你也许会在网上找到一些教程,这些教程有的是以bind 4.x为蓝本的,所以它的 named.conf里面的注释符号是分号“;”,但是自动bind 8开始,语法变了。下面我们来说一下:
; 这是bind4.x的注释,前面用分号
//不过从bind8开始,有三种注释符号可以用: C样式, C++样式, 或者shell样式:
/*这是C样式的注释符号 */
//这是 C++样式的注释符号
#这是shell样式的注释符号
请你先把默认的/etc/bind/named.conf备份一下,我将给大家写一个简单的named.conf,用于做Caching-only的DNS配置。
// 指定 named 从 /var/cache/bind 目录下读取 DNS 数据文件。
// 这个目录用户可自行指定并创建,指定后所有的DNS 数据文件都存放在此目录下。
options {
directory "/var/cache/bind";
};
// 指定 named 作为 test.com 域的主域名服务器。
// db.test 文件中包含所有*.test.com 形式的域名转换数据。
zone"test.com" in {
type master;
file "db.test";
};
// 指定 named 作为 192.1.110 网段地址转换主服务器。
// db.192.1.110 文件中包含了所有 192.1.110.* 形式的地址到域名的转换数据。
zone"110.1.192.in-addr.arpa" in {
type master;
file "db.192.1.110";
};
// 指定 named 作为127.0.0网段地址转换主服务器。
// db.127.0.0 文件中包含了127.0.0.* 形式的地址到域名的转换数据。
//(127.0.0网段地址是局域网接口的内部 loopback 地址)
zone"0.0.127.in-addr.arpa" in {
type master;
file "db.127.0.0";
};
// 指定 named 从 db.cache 文件中获得Internet 的顶层“根”服务器地址。
zone "."in {
type hint;
file "db.cache";
};
要注意第二和第三个区域中的网段地址是倒写的,另外,各个区域所使用的数据文件的文件名也是可以自行决定的。
请把上面的内容保存为你的/etc/bind/named.conf。
4.4.3 准备数据文件
上面的那个named.conf,相信你已经看明白了。那里面提到,在/var/cache/bind这个目录下面,应该有DNS数据文件db.test、db.192.1.110、db.127.0.0 还有 db.cache。下面我们就要建立这些文件。
4.4.3.1 建立 db.test 文件
根据/etc/bind/named.conf 的定义,我们在 /var/cache/bind 目录下建立 db.test,其中应该包括所有在test.com 域内的主机节点。但在机器数量较多时,为了调试方便,建议一开始只把几台节点的数据放入文件,待 named 正常工作后再把其他节点的数据补充进去。下面是 db.test的例子:
@ IN SOAdebian.test.com. root.debian.test.com. (
200211131 ; serial,todays date + todays serial #
28800 ; refresh,seconds
7200 ; retry,seconds
3600000 ; expire,seconds
86400 ) ; minimum,seconds
NS debian.test.com.
MX 10debain.test.com.
; 域名服务器列表
test.com. IN NS debian.test.com.
; 计算机名称和地址
localhost.test.com. IN A 127.0.0.1
debian.test.com. IN A 192.1.110.120
notepad.test.com. IN A 192.1.110.122
; 别名
www IN CNAME debian.test.com.
ftp IN CNAME debian.test.com.
其中第一行是SOA 记录,定义了域名数据的基本信息,依次是 DNS 服务器名、DNS 管理员邮件地址,括号内的第一个数字是文件版本号,每次本文件内容修改后,必须更改此号。其余数字与DNS服务器直接的数据交换有关,在这里我们不需要改 动。
括号后面有一条NS记录和一条MX记录,定义了域名服务器本身的域名和username@test.com形式邮件地址所对应的邮件服务器名字。
在此以下是各种域名/地址转换数据,其中A记录是DNS域名到IP地址的记录,是必须有的。
CNAME定义了一些主机的别名,比如我们将debian.test.com作为公司的www和ftp服务器,所以我们提供了www.test.com和ftp.test.com作为debian.test.com的别名,用户只需要根据习惯就可以访问公司的www、ftp服务 器了,如果将来我们换用别的主机作www和ftp服务器,只需要修改CNAME记录就可,对用户没有影响。
注意: CNAME记录最后的带域名的主机名后必须带一个“.”。
复制这个文件到bind的工作目录/var/cache/bind,这个目录是我们刚才在/etc/bind/named.conf里面定义的。
4.4.3.2 建立 db.127.0.0文件
这是个反向DNS数据文件。 反向数据文件是这样用的:知道 IP地址,查询主机名。每个网段分别有一个数据文件。
反向 DNS数据文件中的主要部分是 PTR 记录,PTR 记录中的 IP 地址都只有主机号,named 会根据 named.conf 的定义自动加上前面的网络号,注意后面的主机名要附加一个“.”
对于内部网段 127.0.0通常只有一个地址,即 127.0.0.1 loopback 地址,db.127.0.0 内容如下:
@ IN SOAdebian.test.com root.debian.test.com. (
2002111300 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NSdebian.test.com.
1 IN PTR localhost.
把这个文件到复制/var/cache/bind目录下面。
4.4.3.2 建立 db.192.1.110 文 件
把所有相同网段的主机IP地址和主机名,都写在里面:
@ IN SOAdebian.test.com root.debian.test.com. (
2002111300 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NSdebian.test.com.
; 所有主机都写在这儿
120 PTRdebian.test.com.
122 PTRnotepad.test.com.
同样,要把这个文件到复制/var/cache/bind目录下面。
4.4.3.3 建立 db.cache 文件
默认情况下,我们在安装bind9的时候,应该有个文件在/etc/bind/db.root,这个文件就是我们的想要的根的定义。由于我们在 named.conf中指定的文件名是 db.cache,所以我们把它复制为db.cache:
# cp /etc/bind/db.root/var/cache/bind/db.cache
5 测试
我们使用rndc这个工具来控制bind。
5.1 让新配置文件生效
因为我们刚才改了配置,所以,需要重新加载一下:
# rndc reload
然后还需要重新配置一下:
# rndc reconfig
如果有问题,你可以使用debian为我们准备的脚本重新启动bind:
# /etc/init.d/bind9 restart
5.2 在win2000机器上测试
在win2000上(就是我们的notepad.test.com),使用OutlookExpress,收发邮件。
看,正常了吧!证明,我们的win2000通过192.1.110.120这台DNS服务器,找到了debian.test.com这台机器的IP地址了。
5.3 测试工具介绍
在debian上,我推荐大家使用dig或者host来测试DNS设置,因为nslookup快要退休了,以后版本的软件可能不再提供nslookup这个工具了。要使用这些工具,需要安装dnsutils:
# apt-get install dnsutils
然后,就可以使用dig来测试DNS了:
# dig -x 192.1.110.120
第一次运行,可能比较慢,别着急,等一会。
6 TODO
这是本文的0.1版,纯粹针对初学者的,仅仅实现了最普通的功能。
在下一个版本,我将深入讲解DNS的设置。
7 结束语
本文是《Debian服务器设置入门》系列教程之第五章,建议您按照顺序阅读,有问题可以和作者kanaka联系。
8 参考文献
《在Linux上建立DNS服务器》,曹江华,2001年12月27日。地址是:http://www.ccidnet.com/html/tech/os/2001/12/27/92_3895.html
让我们一起感谢原文作者!
在Debian上用Bind 配置DNS服务器的更多相关文章
- Ubuntu/CentOS使用BIND配置DNS服务器
------ubuntu server 12---------- 1.安装bind9 sudo apt-get -y install bind9 bind9utils 2.配置 /etc/bind/ ...
- 如何配置DNS服务器(局域网——域名指向某个IP地址)
单击“开始”,指向“管理工具”,然后单击“DNS”,打开 DNS 管理器. 如有必要,向管理单元添加适用的服务器,然后连接该服务器.在控制台树中,单击适用的 DNS 服务器. 在“操作”菜单上 ...
- centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课
centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更 ...
- 使用Bind服务配置DNS服务器
bind是什么 bind是DNS服务器软件 ,他的服务名称是named 功能区分: 正向解析:根据主机名查找对应的IP地址 反向解析:根据IP地址查找对应的主机名(域名) 工作形式上区分: 主服务器: ...
- redhat配置dns服务器bind
配置Oracle11g的RAC需要使用DNS服务器来解析SCAN IP,本文就是以此为例介绍bind服务器的使用.首先科普一下bind服务器,属于企业级产品了,还是开源的: Bind是Berkeley ...
- 烂泥:centos安装及配置DNS服务器
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要在centos配置DNS服务器,要先安装DNS软件BIND.当然我们也可以安装其他的DNS软件,比如国内的开源DNS软件DNSPod. 在此我们以通过 ...
- Linux下搭建Oracle11g RAC(2)----配置DNS服务器,确认SCAN IP可以被解析
从Oracle 11gR2开始,引入SCAN(Single Client Access Name) IP的概念,相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCAN IP和SCAP IP ...
- CentOS7安装和配置dns服务器
(1)dns介绍 1.基本介绍 名字解析: NetBIOS名:localhost wins hosts FQDN:完全限定域名,www.baidu.com hosts文件: 作用:实现名字解析,主要为 ...
- 在Unix上用 BIND建立名称服务器(naem server)
在Unix上用 BIND建立名称服务器(naem server) 安装 apt install -y bind9 yum install -y bind bind-utils 下载源码并解压缩,htt ...
随机推荐
- border边框的宽度/样式/颜色 全部值
border 用emmet写border的时候, 缩写是:bd. 不是b, 也不是bdr: b会扩展成bottom, bdr 会扩展成 border-right, border的宽度: 1px 基本上 ...
- 关于帧中继和ppp的补充笔记
帧中继: · 两个设备都要启用 帧中继功能, 否则是不能 ping通的 · 两个设备上的接口serial要 no shutdown · · 一定要配置dlci地址(号). 否则就不能起来pvc 可以 ...
- fedora配置网络
网络配置包括3个部分: ipadd的配置 gateway profile dns profile 格式区别: 1和2的格式都是: CONFIG_ITEM = value; 3的格式是: nameser ...
- SWFUpload 2.5.0版 官方说明文档 中文翻译版
原文地址:http://www.cnblogs.com/youring2/archive/2012/07/13/2590010.html#setFileUploadLimit SWFUpload v2 ...
- [原] Intellij IDEA开发Android,祝还在使用eclipse的早日脱离苦海
注: 现在推荐使用Android Studio,以后google在Android Studio上个性差异化的东西越来越多, 所以越早使用Android Studio越好,看看更新文档,使我们开发更方便 ...
- [译]Mongoose指南 - Connection
使用mongoose.connect()方法创建连接 mongoose.conect('mongodb://localhost/myapp'); 上面的代码是通过默认端口27017链接到mongodb ...
- 【Solr】copy字段的应用
目录 界面查询应用 熟悉Schema.xml copy域的应用 回到顶部 界面查询应用 添加一个文档 查询添加的文档 以上详细介绍了query里面的参数详解. 当不输入任何条件时,进行查询,看看返回结 ...
- Javascript实现AutoComplete自动匹配功能
功能分析: 避免客户端频繁的访问服务器,因此客户端需要一个timer,监听键盘按键间隔时间,300-600毫秒能够接受. 服务端对要查找的数据源如果不大的话,应该尽量缓存在服务端内存中,而不是每次查找 ...
- 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
http://www.cnblogs.com/beginor/archive/2013/01/13/2858228.html
- 跟着百度学PHP[4]-OOP面对对象编程-2-属性和方法
简单的说 变量就是成员属性函数就是成员方法(方法有三:构造方法[即为__construct].成员方法.析构方法[__destruct]) 成员方法和成员属性都是可以加修饰词.比如封装性的方法或者属性 ...