Linux 下DNS详解

配置之前先了解一下bind DNS服务器软件:BIND是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器,对于类UNIX系统来说,已经成为事实上的标准。

为了构架DNS服务器来解析域名或ip地址,我们得安装BIND和caching-nameserver。为了TCP和UDP53数据包能通过,我们也有必要配置路由器。

安装 BIND 软件包

1、安装

# yum -y install bind caching-nameserver

2、配置

下面的例子是以公网IP(172.16.0.80/29),局域网IP(192.168.0.0/24),域名(linuxde.net)作说明。在配置你自己的服务器时,请使用你自己的IP和域名。

# vim /etc/named.conf

options {
directory "/var/named";
# query range
allow-query { localhost; 192.168.0.0/24; };
# transfer range
allow-transfer { localhost; 192.168.0.0/24; };
# recursion range
allow-recursion { localhost; 192.168.0.0/24; };
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
# here is the section for internal informations
vimew "internal" {
match-clients {
localhost;
192.168.0.0/24;
};
zone "." IN {
type hint;
file "named.ca";
};
# set zones for internal
zone "linuxde.net" IN {
type master;
file "linuxde.net.lan";
allow-update { none; };
};
# set zones for internal
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.db";
allow-update { none; };
};

zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast";
allow-update { none; };
};

zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
};

vimew "external" {
match-clients {
any;
};

zone "." IN {
type hint;
file "named.ca";
};

# set zones for external
zone "linuxde.net" IN {
type master;
file "linuxde.net.wan";
allow-update { none; };
};

# set zones for external *note
zone "80.0.16.172.in-addr.arpa" IN {
type master;
file "80.0.16.172.db";
allow-update { none; };
};
};

include "/etc/rndc.key";

# *note : For How to write for reverse resolvimng, Write network address reversely like below.

the case for 192.168.0.0/24
network address? 192.168.0.0
range of network? 192.168.0.0 - 192.168.0.255
how to write? 0.168.192.in-addr.arpa

case of 172.16.0.80/29
network address? 172.16.0.80
range of network? 172.16.0.80 - 172.16.0.87
how to write? 80.0.16.172.in-addr.arp

设置Zones

创建zone文件以便服务器能解析域名IP。

1、内部zone文件

这个例子使用的是内网地址(192.168.0.0/24),域名(linuxde.net),请根据自己的具体情况配置。

# vim /var/named/linuxde.net.lan

$TTL    86400
@        IN    SOA   ns.linuxde.net. root.linuxde.net. (
               2007041501   ;Serial
               3600         ;Refresh
               1800         ;Retry
               604800       ;Expire
               86400        ;Minimum TTL

)
               # define name server
               IN    NS     ns.linuxde.net.
               # internal IP address of name server
               IN    A       192.168.0.17
               # define mail exchanger
               IN    MX 10   ns.linuxde.net.

               # define IP address and hostname
ns             IN    A       192.168.0.17

2、外部zone文件

这个例子使用的是外网地址(172.16.0.80/29),域名(linuxde.net),请替换成自己的。

# vim /var/named/linuxde.net.wan

$TTL      86400
@          IN    SOA    ns.linuxde.net. root.linuxde.net. (
                 2007041501    ;Serial
                 3600          ;Refresh
                 1800          ;Retry
                 604800        ;Expire
                 86400         ;Minimum TTL
)
                 # define name server
                 IN        NS   ns.linuxde.net.
                 # external IP address of name server
                 IN        A    172.16.0.82
                 # define Mail exchanger
                 IN        MX 10 ns.linuxde.net.

                 # define IP address and hostname
ns               IN        A     172.16.0.82

创建zone文件使服务器能够反向解析IP到域名。

3、内部zone文件

这个例子使用的是内网地址(192.168.0.0/24),域名(linuxde.net),请使用自己的设置替换。

# vim /var/named/0.168.192.db

$TTL    86400
@       IN    SOA  ns.linuxde.net. root.linuxde.net. (
              2007041501     ;Serial
              3600           ;Refresh
              1800           ;Retry
              604800         ;Expire
              86400          ;Minimum TTL
)
              # define name server
              IN        NS    ns.linuxde.net.

              # define range that this domain name in
              IN        PTR   linuxde.net.
              # define IP address and hostname
              IN        A     255.255.255.0

17            IN        PTR   ns.linuxde.net.

4、外部zone文件

这例子使用外网地址(172.16.0.80/29),域名(linuxde.net),请替换成自己的。

# vim /var/named/80.0.16.172.db

$TTL     86400
@        IN    SOA  ns.linuxde.net. root.linuxde.net. (
               2007041501     ;Serial
               3600           ;Refresh
               1800           ;Retry
               604800         ;Expire
               86400          ;Minimum TTL
)
               # define name server
               IN        NS   ns.linuxde.net.

               # define range that this domain name in
               IN        PTR  linuxde.net.
               # define IP address and hostname
               IN        A     255.255.255.248

82             IN        PTR   ns.linuxde.net.

启动BIND

1、完成BIND的配置后,在启动named之前,还需要建立chroot环境。

# yum -y install bind-chroot
# /etc/rc.d/init.d/named start
# chkconfig named on

2、操作检验

确认服务器已经正确解析域名或IP地址。

# dig ns.linuxde.net.
; <<>> DiG 9.3.4 <<>> ns.linuxde.net.
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54592
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
 
;; QUESTION SECTION:
;ns.linuxde.net.           IN   A
 
;; ANSWER SECTION:
ns.linuxde.net. 86400   IN   A    192.168.0.17
 
;; AUTHORITY SECTION:
linuxde.net.     86400   IN   NS   ns.linuxde.net.
 
;; Query time: 0 msec
;; SERVER: 192.168.0.17#53(192.168.0.17)
;; WHEN: Thu Mar 8 19:35:19 2007
;; MSG SIZE rcvd: 68

# dig -x 192.168.0.17
; <<>> DiG 9.3.4 <<>> -x 192.168.0.17
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45743
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;17.0.168.192.in-addr.arpa.           IN   PTR
 
;; ANSWER SECTION:
17.0.168.192.in-addr.arpa. 86400   IN   PTR   ns.linuxde.net.
 
;; AUTHORITY SECTION:
0.168.192.in-addr.arpa.     86400   IN   NS     ns.linuxde.net.
 
;; ADDITIONAL SECTION:
ns.linuxde.net.          86400   IN   A       192.168.0.17
 
;; Query time: 0 msec
;; SERVER: 192.168.0.17#53(192.168.0.17)
;; WHEN: Thu Mar 8 19:37:50 2007
;; MSG SIZE rcvd: 107

配置从DNS服务器

配置从DNS服务器比较简单。下面的例子主DNS是“ns.linuxde.net”,从DNS是“ns.example.info”。

1、在主DNS服务器的zone文件作如下配置

# vim /var/named/linuxde.net.wan

$TTL     86400
@        IN   SOA   ns.linuxde.net. root.linuxde.net. (
              # update serial
              2007041501      ;Serial
              3600            ;Refresh
              1800            ;Retry
              604800          ;Expire
              86400           ;Minimum TTL
)
              IN         NS   ns.linuxde.net.
              # add name server
              IN         NS   ns.example.info.
              IN         A    172.16.0.82
              IN         MX 10 ns.linuxde.net.

ns            IN         A    172.16.0.82

# rndc reload
server reload successful

2、配置从DNS服务器

# vim /etc/named.conf

# add these lines below
    zone "linuxde.net" IN {
          type slave;
          masters { 172.16.0.82; };
          file "slaves/linuxde.net.wan";
};

# rndc reload
server reload successful
# ls /var/named/slaves
linuxde.net.wan         # zone file in master DNS has been just transfered

设置别名记录,如果你想为你的主机设置另一个名称,在zone文件定义CNAME记录

# vim /var/named/server-Linux.info.wan

$TTL    86400
@       IN    SOA   ns.server-linux.info. root.server-linux.info. (
              # update serial
              2007041501      ;Serial
              3600            ;Refresh
              1800            ;Retry
              604800          ;Expire
              86400           ;Minimum TTL
)
              IN        NS    ns.server-linux.info.
              IN        A     172.16.0.82
              IN        MX 10 ns.server-linux.info.

ns            IN        A     172.16.0.82
# aliase IN CNAME server‘s name
ftp          IN       CNAME   ns.server-linux.info. 

# rndc reload
server reload successful

以下是一个整理的主配文件参数解释(仅供参考)/**/代表注释:

options { /*OPTIONS选项用来定义一些影响整个DNS服务器的环境,如这里的DI RECTORY用来指定在本文件指定的文件的路径,如这里的是将其指定到 /var/named 下,在这里你还可以指定端口等等。不指定则端口是53
*/
directory "/var/named";
}; //

//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN { //在这个文件中是用zone关键字来定义域区的,一个zone关键字定义一个域区
type hint;
/*在这里type类型有三种,它们分别是master,slave和hint它们的含义分别是:
master:表示定义的是主域名服务器
slave :表示定义的是辅助域名服务器
hint:表示是互联网中根域名服务器
*/
file "named.ca"; //用来指定具体存放DNS记录的文件
};

zone "localhost" IN { //定义一具域名为localhost的正向区域
type master;
file "localhost.zone" ;
allow-update { none; };
};
zone "test.net" IN { //指定一个域名为test.net的正向区域
type master;
file "test.net”
allow-update { none;};
};

zone "0.0.127.in-addr.arpa" IN { //定义一个IP为127.0.0.*的反向域区
type master;
file "named.local";
allow-update { none; };
};
zone "0.192.168.in-addr.arpa" IN { //定义一个IP为168.192.0.*反向域区
type master;
file "168.192.0";

/var/named/test.net文件
@ IN SOA linux.test.net. Webmaster.test.net. ( SOA表示授权开始
/*上面的IN表示后面的数据使用的是INTERNET标准。而@则代表相应的域名,如在这里代表test.net,即表示一个域名记录定义的开始。而linux.test.net则是这个域的主域名服务器,而webmaster.test.net则是管理员的邮件地址。注意这是邮件地址中用.来代替常见的邮件地址中的@.而SOA表示授权的开始
*/
2003012101 ; serial (d. adams) /*本行前面的数字表示配置文件的修改版本,格式是年月日当日修改的修改的次数,每次修改这个配置文件时都应该修改这个数字,要不然你所作的修改不会更新到网上的其它DNS服务器的数据库上,即你所做的更新很可能对于不以你的所配置的DNS服务器为DNS服务器的客户端来说就不会反映出你的更新,也就对他们来说你更新是没有意义的。
*/
28800 ; refresh
/*定义的是以为单位的刷新频率 即规定从域名服务器多长时间查询一个主服务器,以保证从服务器的数据是最新的
*/
7200 ;retry
/*上面的这个值是规定了以秒为单位的重试的时间间隔,即当从服务试图在主服务器上查询更时,而连接失败了,则这个值规定了从服务多长时间后再试
*/
3600000 ; expiry
/*上面这个用来规定从服务器在向主服务更新失败后多长时间后清除对应的记录,上述的数值是以分钟为单位的
*/
8400 )
/*上面这个数据用来规定缓冲服务器不能与主服务联系上后多长时间清除相应的记
录
*/
IN NS linux
IN MX 10 linux
linux IN A 168.192.0.14
it-test1 IN A 168.192.0.133
www IN CNAME linux

/*上面的第一列表示是主机的名字,省去了后面的域。
NS:表示是这个主机是一个域名服务器,
A:定义了一条A记录,即主机名到IP地址的对应记录
MX 定义了一邮件记录
CNAME:定义了对应主机的一个别名

/var/named/168.192.0
@ IN SOA linux.test.net. webmastert.linux.net. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS linux.test.net.
/*以上的各关键字的含义跟test.net是相同的
14 IN PTR linux.test.net.
133 IN PTR it-test1.test.net.
/*
上面的第一列表示的是主机的IP地址。省略了网络地址部分。如14完整应该是:
168.192.0.14
PTR:表示反向记录
最后一列表示的是主机的域名。
时间: 2024-10-15 14:43:57

Linux 下DNS详解的相关文章

Linux系统DNS详解(BIND)

一.Linux运维实战之DNS基础    DNS服务作为网络的一种基础架构,在网络中有举足轻重的地位.它担负着整个网络用户计算机的名称解析工作.没有正确的名称解析,服务器就无法识别各客户机.我们在日常进行的浏览网页等上网活动,无一例外都在使用DNS服务.*******************************************************************************    DNS的基本知识:        DNS服务器的组成        DNS域名称

Linux下iptables详解

一.介绍 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,类似于网络设备中的ACL.它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘或网络出口.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略.规则,以达到让它对出入网络的IP.数据进行检测. 目前市面上比较常见的有3.4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关. 对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和

Linux下task_struct详解

   背景:为了管理进程,操作系统必须对每个进程所做的事情进行清楚地描述,为此,操作系统使用数 据结构来代表处理不同的实体,这个数据结构就是通常所说的进程描述符或进程控制块.在linux系统中,这就是task_struct结构,在include\linux\sched.h文件中定义. 每个进程都会被分配一个task_struct结构,它包含了这个进程的所有信息,在任何时候操作系统都能跟踪这个结构的信息.这个结构是linux内核汇总最重要的数据结构,下面我们会详细的介绍. task_struct结

【未完】Linux下memcached详解

参考文档: 1.Linux下设置memcached访问IP http://blog.sina.com.cn/s/blog_484d87770101om9r.html 2.Memcached个人熟悉全过程 http://blog.csdn.net/why7282299/article/details/8970499 3.linux下memcached的启动/结束的方式 http://www.2cto.com/os/201203/125164.html

12 Linux下crontab详解

1. 概述: crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. 2. 任务调度的分类: 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等.在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件.                 

Linux下SElinux详解

1.SElinux 全称:Security-Enhanced Linux,灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中,仅                    集合最小权限访问, 2. 查看文件上下文: ls -Z [[email protected] ~]# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-r--r--. root root system

Linux下lampp详解 (转)

重要文件解释: ProFTPD:一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发.发布的免费软件,可以随意修改源始码.它是完全独立而完整.重新改写的FTP Server. 主要特色: 一个单一的和 Apache 的 httpd.conf 类似的配置文件 每个目录下的 .ftpaccess 文件(和 Apache 的. htaccess 类似) 很容易配置的,多个虚拟 FTP 服务器以及匿名 FTP 服务

Linux下mount 详解

介绍 在Linux系统中,磁盘分区是不能够直接访问的,需要将其挂载到系统中的某一个目录中(挂载点),然后通过访问挂载点来实现分区的访问. Unix类的操作系统如此,Windows也是一样:但Unix类的操作系统是通过mount进行的,挂载文件系统时要有挂载点,在安装Linux的过程中,有时会提示我们分区,然后建立文件系统,接着是选择挂载点.我们在Linux系统的使用过程中,也会挂载其它的硬盘分区,也要选中挂载点,挂载点通常是一个空置的目录,最好是我们自建的空置目录: 一些临时设备也使用一些临时的

Linux下Awk详解(转载)

什么是Awk Awk是一种小巧的编程语言及命令行工具.(其名称得自于它的创始人Alfred Aho.Peter Weinberger 和 Brian Kernighan姓氏的首个字母).它非常适合服务器上的日志处理,主要是因为Awk可以对文件进行操作,通常以可读文本构建行. 我说它适用于服务器是因为日志文件,转储文件(dump files),或者任意文本格式的服务器终止转储到磁盘都会变得很大,并且在每个服务器你都会拥有大量的这类文件.如果你经历过这样的情境--在没有像Splunk或者其他等价的工