存档

文章标签 ‘dns’

bind9详细安装配置手册

2011年3月10日 没有评论

1 什么是DNS  
  初学者可能不理解DNS到底是什么,干什么用。我是在1998年大学毕业时才听说这个词的。那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,DNS是什么?
  ——DNS,Domain Name 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是使用最广泛的Domain Name Server,它是Berkeley Internet Name Domain Service的简写,伯克里大学编写的。这个大学可真厉害,写了不少著名程序。
原本bind的版本一直在 4.8.x 4.9.x 左右,后来一口气跳到8.1.x,是因为大幅度改进了功能,并修复了漏洞。现在bind有两个版本在同时发展,bind 8.x 和 bind 9.x,最新版本是9.8

4.bind安装配置:

—————————————————————————————————————————————————-

bind9安装配置(里面有配置文件例子)
bind9图文安装详细步骤 (全过程配图)
BIND9管理员参考手册 (在线pdf,加载可能有点慢)
BIND-9-Administrator-Reference (中文文档,内容相对新)

—————————————————————————————————————————————————-

http://54im.com/down/doc/bind9/Bind-9-install-conf.htm
http://54im.com/down/doc/bind9/Bind-9-install.htm

http://54im.com/down/doc/bind9/BIND9管理员参考手册.pdf
http://54im.com/down/doc/bind9/BIND-9-Administrator-Reference.pdf

分类: linux 标签: , ,

把DNS服务器从windows移植到linux下

2011年3月10日 没有评论

转载:http://www.linuxsir.org/bbs/showthread.php?t=112552
最近公司到DNS server总是出问题, 于是下决心转移到linux下,但是里面有200多个域埃想来想去,总结出如下一套办法,供大家参考。如有不足网大家指正。

一、准备工作:

首先进入win2k, DNS 服务管理器,选 查看–列表;
然后导出列表到一个文件: mydomain.txt 反向解析域的列表都要导出,合并到一个文件里,进入 winntsystem32dns 将所有文件打包,和mydomain.txt 一起复制到linux下。

二、开始迁移:

1、生成配置文件:
主域配置文件:
执行如下脚本:

生成备份域配置文件: 执行这个脚本:

2、复制DNS记录:将从windows下复制过来到dns文件复制到 /var/named 下;

主备域此操作相同。

3、在/var/named下执行:

mv CACHE.DNS named.ca #配置文件windows和linux命名不同。

chown named:named * #更改所有者
chmod 644 * #更改权限

4、编辑 /etc/resolv.conf 如下:

5、启动named服务。 /etc/init.d/named start

6、关闭原来的NS服务器。
7、将linux服务器的IP改成win2k的IP。

OK 完成啦。。

分类: linux 标签:

Bind 9 配置全攻略

2011年3月9日 没有评论

配置语法

acl                                                       定义访问控制列表
controls                                          定义rndc命令使用的控制通道,若省略,则只允许经过rndc.key认证的127.0.0.1的rndc控制
include                                            包含其他文件到配置文件
key                                                   定义用于TSIG的授权密钥
logging                                           日志记录
lwres                                               将named同时配置成一个轻量级的解析器
options                                          定义全局选项
trusted-keys                               为服务器定义 DNSSEC 加密密钥
server                                            设置每个服务器的特有选项
view                                                定义域名空间的一个视图
zone                                                 定义一个区声明

注释

可以使用三种注释风格:

/* C语言风格 */
// C++ 风格
# shell 风格

include

建议使用绝对路径,如果使用相对路径,则是指相对 directory 选项指定的路径。下面是我的debian系统named.conf文件中的一个include使用示例:

root@jianlee:~/lab/koji/koji# tail -1 /etc/bind/named.conf
include “/etc/bind/named.conf.local”;

options

fedora10上bind的文件一个示例:

[root@dev3-57 demoCA]# sed -n -e ‘10,19p’ /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query { localhost; };
recursion yes;
};
options 中一般选项的含义:

directory “路径”
定义服务器区数据库文件的工作目录,配置文件中使用的所有相对路径都是一个这个目录为基目录。
notify yes/no
如 named 是主服务器,当区数据库变化时将自动通知相应区的从服务器,默认为yes。
recursion yes/no
是否使用递归式 DNS 服务器,默认为yes。
transfer-format one-answer/many-anser
设置从主服务器向从服务器复制数据的方式,使用在主域名服务器上,是否允许在一条消息中放入多条应答信息,默认值为 many-answer
forwarders {IPaddrs}
设置全局转发器,列出要用作转发器的服务器 IP 地址
forward only/first
若值为 only,则服务器缓存数据并查询转发器,但从不查询其他的任何服务器,若转发器不能响应查询则查询失败;若值为 first,则在转发查询失败或没有查到结果时,会在本地发起正常查询。默认为 first
zone
root@jianlee:~/lab/koji/koji# sed -n -e ‘20,23p’ /etc/bind/named.conf
zone “localhost” {
type master;
file “/etc/bind/db.local”;
};
type master/slave/hint/forward
说明一个区的类型。master指示此区为主域名服务器;slave指示此区为辅助域名服务器;hint指示此区为根服务器的线索;forward指示此区为转发区。
file “文件名”
指出此区的域信息数据库文件名

DNS 数据库

一个域的 DNS 数据库是由这个域的主域名服务器的管理员所维护的文本文件的集合。这些文件经常被称为区文件,区文件定义了一个区的域名信息。每个区文件都是由若干个资源记录(RR,resource records)和分析器指令所组成。

资源记录
标志资源记录格式 :

[name] [ttl] [class] type data
各个字段之间由空格或制表符分割,字段可以包含下面特殊字符:

; 注释
@ 表示当前域
() 允许数据夸行,通常用于 SOA 记录
* 仅用于 name 字符的通配符

name
name 字段说明资源记录引用的对象名,可以是一台单独的主机也可以是个域名。

•对象名可以是相对域名或全域名,全域名应该以“.”结束
•若几条连续的 RR 记录涉及同一个对象名,则第一条 RR 记录后的 RR 记录可以省略对象名
•若出现字段名字段,则必须出现在第一个字段
关于相对域名和全域名:

举例来说,在 ubuntu.org.cn 域中,相对域名 osmond 与全域名 osmond.ubuntu.org.cn. 等效;而 osmond.ubuntu.org.cn 由于没有以“.”结尾,被认为是一个相对域名,与其等效的全域名为 osmond.ubuntu.org.cn.ubuntu.org.cn.。因此在书写对象名时要特别小心。

ttl (time to live)
它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常省略该字段,而使用位于文件开始处的 $TTL 语句所指定值。

class
class 字段用于指定网络类型,可选的值有:IN、CH 和 HS,其中 IN (Internet)是广泛使用的一种。虽然 IN 是该字段的默认值,但通常我们会显示地指出。

type
type 字段用于说明 RR 的类型。常用的 RR 类型如下:

1 区记录

SOA (Start Of Authority) SOA 记录标示一个授权区定义的开始。SOA 记录后的所有信息是控制这个区的
NS (Name Server) 标识区的域名服务器以及授权子域

2 基本记录

A (Address) 用于将主机名转换为 IP 地址,任何一个主机都只能有一个 A记录
PTR (PoinTeR) 将地址转换为主机名
MX (Mail eXchanger) 邮件交换记录。控制邮件的路由

3 安全记录

KEY (Public Key) 储存一个关于DNS 名称的公钥
NXT (Next) 与 DNSSEC 一起使用,用于指出一个特定名称不在域中
SIG (Signatrue) 指出带签名和身份认证的区信息,细节见 RFC 2535

4 可选记录

CNAME (Canonical NAME) 给定主机的别名,主机的规范名在A记录中给出
SRV (Services) 指出知名网络服务的信息
TXT (Text) 注释或非关键的信息

RR的顺序:

•SOA RR 应该放在最前面
•通常 NS RR 紧跟在 SOA RR 之后
•其他记录的顺序无关紧要
data
取决于RR的类型

常用的资源记录

SOA 开始一个区
基本格式:

zone IN SOA Hostname Contact (
SerialNumber
Refresh
Retry
Expire
Minimum )
Hostname
存放本 Zone 的域名服务器的主机名
Contact
管理域的管理员的邮件地址
SerialNumber
本区配置数据的序列号,用于从服务器判断何时获取最新的区数据
Refresh
辅助域名服务器多长时间更新数据库
Retry
若辅助域名服务器更新数据失败,多长时间再试
Expire
若辅助域名服务器无法从主服务器上更新数据,原有的数据何时失效
Minimum
设置被缓存的否定回答的存活时间
jamond.net. IN SOA ubuntu.jamond.net. root.ubuntu.jamond.net. (
2006063000 ;序列号
3H ;3小时后刷新
15M ;15分钟后重试
1W ;1星期后过期
1D ) ;否定缓存TTL为1天
•对 Contact 来说,因为“@”在文件中有特殊含义,所以邮件地址 root@ubuntu.jamond.net 写为 root.ubuntu.jamond.net.
•对 SerialNumber 来说,它可以是 32 位的任何整数,每当更新区文件时都应该增加此序列号的值,否则 named 将不会把区的更新数据传送到从服务器
•缓存时间字段 Refresh、Retry、Expire、Minimum 可以使用时间单位字符 m、 h、d、w 分别表示分钟、小时、天、星期。
•各个缓存时间字段的经验值为
◦Refresh — 1 到 6 小时
◦Retry — 20 到 60 分钟
◦Expire — 1 周 到 1 月
◦Minimum — 1 到 3 小时
•Minimum 设置被缓存的否定回答的存活时间,而肯定回答(即真实记录)的默认值是在区文件开始处用 $TTL 语句设置的。

NS 标识一个区的权威服务器
包括主服务器和从服务器,并将子域授权赋予其他服务器,格式:

zone [ttl] IN NS hostname
示例:

jamond.net. IN NS ubuntu.jamond.net. ;指定 jamond.net. 的主服务器
jamond.net. IN NS dapper.jamond.net. ;指定 jamond.net. 的从服务器
osmond.jamond.net. IN NS ubuntu.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的主服务器
osmond.jamond.net. IN NS dapper.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的从服务器
若上面的记录紧跟在 SOA 记录后,也可以写成如下的形式:

IN NS ubuntu.jamond.net. ;指定 jamond.net. 的主服务器
IN NS dapper.jamond.net. ;指定 jamond.net. 的从服务器
osmond IN NS ubuntu.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的主服务器
osmond IN NS dapper.osmond.jamond.net. ;指定委派域 osmond.jamond.net. 的从服务器
A — DNS数据库的核心
提供主机名到IP地址的映射,格式为:

hostname [ttl] IN A IPAddress
举例:

ubuntu IN A 192.168.0.251
dapper IN A 192.168.0.252
ubuntu.osmond IN A 192.168.1.251
dapper.osmond IN A 192.168.1.252
PTR
PTR RR 提供了 IP 地址到主机名的映射。其格式为:

IPAddress [ttl] IN PTR hostname
例如: 在 168.192.in-addr.arpa 区中,前面的 ubuntu.jamond.net. 和 dapper.jamond.net. 所对应的 PTR 记录为

251.0 IN PTR ubuntu.jamond.net.
252.0 IN PTR dapper.jamond.net.
而在 0.168.192.in-addr.arpa 区中,前面的 ubuntu.jamond.net. 和 dapper.jamond.net. 所对应的 PTR 记录为

251 IN PTR ubuntu.jamond.net.
252 IN PTR dapper.jamond.net.
在 1.168.192.in-addr.arpa 区中,前面的 ubuntu.osmond.jamond.net. 和 dapper.osmond.jamond.net. 所对应的 PTR 记录为

251 IN PTR ubuntu.osmond.jamond.net.
252 IN PTR dapper.osmond.jamond.net.
在 PTR RR 中 hostname 应该使用全域名。例如 osmond.jamond.net 域的主机 ubuntu 应该写为 ubuntu.osmond.jamond.net. 。而 ubuntu.osmond.jamond.net 将被解析为 ubuntu.osmond.jamond.net.1.168.192.in-addr.arpa. 。

PTR RR 所提供的反向解析能够为任何对进入网络的请求进行认证的程序所使用,这些程序包括:sshd、tcpd、sendmail、syslogd 等。

MX
MX RR 用于邮件系统实现邮件路由。有关电子邮件的更多介绍请参见 FIXME 。 其格式为:

zone [ttl] IN MX preference host
其中 preference 是优先级字段,数值越小优先级越高。

例如:

jamond.net. IN MX 5 ubuntu.jamond.net.
jamond.net. IN MX 10 ubuntu.jamond.net.
CNAME
CNAME RR 用于设置主机的别名。 其格式为:

nikename [ttl] IN CNAME hostname
例如:

ubuntu IN A 192.168.0.251
www IN CNAME ubuntu
ftp IN CNAME ubuntu
文件内必须有规范名字的 A RR。

分析器指令
在区文件中还可以使用分析器指令,分析器指令可以为 RR 的输入提供方便。

•$ORIGIN — 设置默认域(或初始域)
•$TTL — 为没有定义精确的生存期的 RR 定义缺省的 TTL 值

实例

为其他机器提供DNS服务
默认bind9安装后都只监听127.0.0.1网络,即只为本机提供DNS服务,如果需要为局域网其他机器提供DNS服务,可以修改 listen-on 语句:

options {
listen-on port 53 { 127.0.0.1;172.16.70.30; };

};
可以把 listen-on 注释掉,或者加上本机的外网 IP 。bind9在各个linux发行版安装的路径不一样。

debian5.0 /etc/bind/named.conf /etc/bind/named.conf.options
fedora10 /etc/named.conf
其中fedora默认安装后,bind9只对本机提供DNS服务。debian5默认安装后可以为其他机器提供DNS服务。debian5的bind9全局选项单独放在 /etc/bind/named.conf.options 文件中。

分类: linux 标签:

bind的配置文件named.conf举例

2011年3月9日 没有评论

安装好bind后,默认没有bind的配置文件。这里我贴一个named.conf例子
named.conf 举例

分类: linux 标签:

DNS域名服务器的类型

2011年3月9日 没有评论

域名服务器的类型

     一个DNS 服务器可以同时作为多个域的主域名服务器和辅域名服务器,也可以只作为主,或只作为辅,或者做任何域的授权服务器而只使用自己的cache 来提供查询解析。Master服务器也经常叫做primary,slave 服务器也经常叫做secondary。不论是master/primary/主/一级域名服务器,还是slave/secondary/辅/二级域名服务器,都是这个域的授权服务器。所有的服务器都会将数据保存在缓存(cache)中,直到针对这些数据的TTL(Time To Live)值过期。

 主域名服务器

       primary master server 是一个domain 信息的最根本的来源。它是所有辅域名服务器进行域传输的源。主域名服务器是从本地硬盘文件中读取域的数据的。

 辅域名服务器(次级域名服务器)

      就是slave server,或叫作secondary server。次级服务器使用一个叫做域转输的复制过程,调入其它服务器中域的内容。通常情况下,数据是直接从主服务器上传输过来的,但也可能是从本地磁盘上的cache 中读到的。辅域名服务器可以提供必需的冗余服务。所有的辅域名服务器都应该写在这个域的NS 记录中。

隐藏服务器(stealth server)

      stealth server 可以针对一个域的查询返回授权的记录,但是它并没有列在这个域的NS记录里。Stealth 服务器可以用来针对一个域进行集中分发,这样可以不用在远程服务器上手工编辑这个域的信息了。在这种方式中,一个域的master 文件在stealth server 上存储的位置,经常叫做“hidden primary”配置。Stealth 服务器也可以将域文件在本地做一个拷贝,从而可以在所有官方的域名服务器都不能访问的情况下,也能更快地读取域的记录。

高速缓存域名服务器(caching only server)

     缓存服务器可以将它收到的信息存储下来,并再将其提供给其它的用户进行查询,直到这些信息过期。它的配置中没有任何本地的授权域的配置信息。它可以响应用户的请求,并询问其它授权的域名服务器,从而得到回答用户请求的信息。

转发服务器(forwarding server)

      一台缓存名服务器本身不能进行完全的递归查询。相反,它能从缓存向其它的缓存服务器转发一部分或是所有不能满足的查询,一般被称作转发服务器。可能会有一个或多个转发服务器,它们会按照顺序进行请求,直到全部穷尽或者请求得到回答为止。转发服务器一般用于用户不希望站点内的服务器直接和外部服务器通讯的情况下。一个特定的情形是许多DNS 服务器和一个网络防火墙。服务器不能透过防火墙传送信息,它就会转发给可以传送信息的服务器,那台服务器就会代表内部服务器询问因特网DNS 服务器。使用转发功能的另一个好处是中心服务器得到了所有用户都可以利用的更加完全的信息缓冲。

分类: linux 标签:

基于Web的BIND 9管理界面-xbaydns

2011年3月8日 没有评论

 xbayDNS

  协议:New BSD License
  作者:huangdong
  团队:新浪研发中心──系统研发
  网址:http://code.google.com/p/xbaydns/

  • 支持FreeBSD 7.0操作系统
  • 支持Mac OSX 10.5操作系统
  • 支持BIND 9.4.1P1
  • 支持DNS的初始化操作
  • 支持DNS的A、MX、NS、CNAME记录的管理
  • 支持ACL的管理
  • 支持View的管理
  • 支持基于View(TSIG)的域名记录管理
  • xbaydns是一个基于Web的BIND 9管理界面。与通常我们所知道的管理界面所不同的是,它尽可能的将DNS的管理简化,并帮助用户建立起一个容易管理、维护、扩展的DNS系统。

    一个普通的DNS服器可以提供域名的解析、代理、缓存这样的服务。我们期望DNS不但是一个服务,它更应该承担起GSLB、用户访问加速这样的任务。而在现实的环境中,应用DNS已经能够很好的完成这样的工作。所以沿着从前的经历,我们启动了xBayDNS这个项目,它的目的是让DNS服务在承担着GSLB和访问加速这样的工作时更容易管理。做为xBayDNS附加的礼物,也可以从中学到如何形成一个基于DNS的GSLB和用户访问加速的原理。

    出发点

    什么是GSLB呢?GSLB就是一个把互联网世界划分成片,让用户最快、不中断的访问服务的方法。一个简单的方法就像下图这样把用户按地域划分为片,让他们访问为该片区提供服务的服务器们

    在xBayDNS系统中我们把这看为四组对象:

    • 用户来源

    由ACL和View来定义出用户来源

    • 用户来源组

    将用户来源划分成组,这样方便群体操作

    • 服务器

    就是DNS的记录了,这些记录就是我们的一台台服务器

    • 服务器组

    把服务器分组,这样方便群体操作。

    工作原理

    视图

    在BIND中有一个功能特性:view。它的功能是按IP区别出不同的用户,把用户解析到不同的服务器上去。一个简单的应用就是一台DNS服务对于英国用户发出的www.abc.com这样的解析请求,它可以将www.abc.com解析到英国的服务器。而对于一个中国用户发出的www.abc.com这样的解析请求,解析到中国的服务器上去。这样就形成了在整个互联网上跨国家、跨机房的用户最短路径访问的能力。

    轮询

    在BIND中,同样是www.abc.com这样的记录,可以解析到多个IP上去。bind可以按我们的要求,将A、B、C三个用户的请求分到三个不同的IP上。这样它又可以实现在整个互联网上跨国家、跨机房的负载均衡的能力。

    实现

    在xBayDNS的1.0版本中,它先会实现两类功能,一类是对BIND的named.conf的管理,一类是对域名记录的管理:

    • 对named.conf的管理
      1. acl的管理
      2. view的管理
      3. zone的管理
      4. zone数据文件的初始化和删除管理
    • 对域名记录的管理

    以下我们会对这两种管理的方法进行说明。

    对named.conf的管理

    named.conf文件是BIND的启动配置文件,它里面存储了大量的BIND自身的设置信息。这个文件的特点是无法通过BIND的API进行管理,BIND对它只是读,没有写入的功能。另一个特点就是在BIND的主、辅服务器上的设置更是不相同。最重要的就是如果这个文件出现了错误,哪么一个BIND就无法对外正常提供服务(无法正常启动)。

    为了保证对这个文件进行操作时的准确性,我们采用了如下方法:

    • 生成的文件均在临时目录中,经过named-checkconf检查通过后才会更新正在使用的配置文件
    • 尽量使用named.conf的include文件,减少在编辑文件时的冲突

     

    对于named.conf的操作,通常如下图所示:

    对域名记录的管理

    通常来讲,域名记录的管理从数量和复杂度上都远高于对named.conf的操作。所以我们尽量使用BIND的API进行操作。这个API就是DNS协议中的update接口,由于这个接口是基于Socket的接口,所以对于数据文件的冲突、多台服务器间的复制等工作都交给BIND自身来进行。这样可以保证数据一但被BIND接受,哪么一定会是正确的。

    对于域名记录的操作,通常如下图所示:

     

    附注

    GSLB(Global Server Load Balance),它的作用是让每一个互联网的用户能够访问到与自己最近的服务,同时也基于整个互联网提供负载均衡的能力。

    ToDo

    • 我们还会对named.conf文件的操作可能产生的冲突进行深入的研究,尝试寻找一些更好的方法进行处理。欢迎大家提出自己的想法和建议。
    • 针对于named.conf的分发还没有细的研究,但是,在主服务器的工作告一段落后,我们会进行这方面的深入研究和实现。
    分类: linux 标签: , ,