Linux下DNS服务器的安装与配置

在做软件样本分析的时候(主要是该样本的网络流量的分析),不可避免的会需要自己架设一个DNS服务器以配合IP欺骗的技术来试图获取软件样本的网络流量。下面就将以CentOS 5.2为例介绍一下在Linux上架设DNS服务器的办法。

安装bind

Linux下的dns功能是通过bind软件实现的。在CentOS下面安装bind很方便:

yum install bind

相关的配置文件

1./etc/hosts

定义了主机名和ip地址的对应,其中也有将要运行dns这台电脑的ip地址和主机名。初始内容如下:

  1. # Do not remove the following line, or various programs  
  2. # that require network functionality will fail.  
  3. 127.0.0.1               TestServer localhost.localdomain localhost  
  4. ::1             localhost6.localdomain6 localhost6  

2. /etc/host.conf

当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/host.conf确定主机名解释顺序。示例:

  1. order hosts,bind    #名称解释顺序  
  2. multi on            #允许主机拥有多个IP地址  
  3. nospoof on          #禁止IP地址欺骗  

3. /etc/resolv.conf

该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:

nameserver   #定义DNS服务器的IP地址

domain       #定义本地域名

search       #定义域名的搜索列表

sortlist     #对返回的域名进行排序

/etc/resolv.conf的一个示例:

  1. domain ringkee.com  
  2. search www.ringkee.com ringkee.com  
  3. nameserver 202.96.128.86  
  4. nameserver 202.96.128.166  

4. /etc/named.conf

这个文件是bind的主配置文件。这个文件比较复杂,我们先看一个例子,然后再逐段解释。

需要注意的是对于在CentOS里面自带的bind因为启动脚本更改了根目录的原因,在这里以及后面提到的所有文件的存放路径都是相对于/var/named/chroot/目录来说的,比如这里的/etc/named.conf的真实路径为/var/named/chroot/ect/named.conf。

  1. /*  
  2. * log option  
  3. */  
  4. logging {   
  5. channel default_syslog { syslog local2; severity error; };  
  6. channel audit_log { file "/var/log/named.log"; severity error; print-time yes; };  
  7. category default { default_syslog; };   
  8. category general { default_syslog; };   
  9. category security { audit_log; default_syslog; };   
  10. category config { default_syslog; };   
  11. category resolver { audit_log; };   
  12. category xfer-in { audit_log; };   
  13. category xfer-out { audit_log; };   
  14. category notify { audit_log; };   
  15. category client { audit_log; };   
  16. category network { audit_log; };   
  17. category update { audit_log; };   
  18. category queries { audit_log; };   
  19. category lame-servers { audit_log; };  
  20. };  
  21.   
  22. options {  
  23. directory "/var/named";  
  24.   
  25. };  
  26.   
  27. zone "." {  
  28. type hint;  
  29. file "named.ca";  
  30. };  
  31. zone "localhost" IN {  
  32.   type master;  
  33.   file "localhost.zone";   
  34. };  
  35. zone "0.0.127.in-addr.arpa" IN {  
  36.    type master;  
  37.    file "named.local";   
  38.    allow-update { none; };  
  39. };  
  40.   
  41. zone "linuxidc.com" {  
  42. type master;  
  43. file "linuxidc.com.zone";  
  44. };  
  45. zone "1.168.192.in-addr.arpa" {  
  46. type master;  
  47. file "linuxidc.com.rev";  
  48. };  

下面部分将逐段进行解释。

4.1 日志设定

  1. /*  
  2. * log option  
  3. */  
  4. logging {   
  5. channel default_syslog { syslog local2; severity error; };  
  6. channel audit_log { file "/var/log/named.log"; severity error; print-time yes; };  
  7. category default { default_syslog; };   
  8. category general { default_syslog; };   
  9. category security { audit_log; default_syslog; };   
  10. category config { default_syslog; };   
  11. category resolver { audit_log; };   
  12. category xfer-in { audit_log; };   
  13. category xfer-out { audit_log; };   
  14. category notify { audit_log; };   
  15. category client { audit_log; };   
  16. category network { audit_log; };   
  17. category update { audit_log; };   
  18. category queries { audit_log; };   
  19. category lame-servers { audit_log; };  
  20. };  

这一部分是日志的设置,其中最主要的是 file "/var/log/named.log" 这一句指定了日志文件的位置,要正常启动named,必须要保证这一文件是存在的,并且named 进程对它有读写权限。

4.2 options

  1. options {  
  2. directory "/var/named";  
  3. //    listen-on-v6 { any; };  
  4.   
  5. /*   
  6.  * If you've got a DNS server around at your upstream provider, enter  
  7.  * its IP address here, and enable the line below.  This will make you  
  8.  * benefit from its cache, thus reduce overall DNS traffic in the Internet.  
  9.  */  
  10. //forwarders {  
  11. //  your.upper.DNS.address;  
  12. //};  
  13.   
  14. /*  
  15.  * If there is a firewall between you and nameservers you want  
  16.  * to talk to, you might need to uncomment the query-source  
  17.  * directive below.  Previous versions of BIND always asked  
  18.  * questions using port 53, but BIND 8.1 uses an unprivileged  
  19.  * port by default.  
  20.  */  
  21. // query-source address * port 53;  
  22.   
  23. /*  
  24.  * If running in a sandbox, you may have to specify a different  
  25.  * location for the dumpfile.  
  26.  */  
  27. //dump-file "/etc/named_dump.db";  
  28. };  

这一部分是一些基本的配置项:

directory "/etc/named"; 指定域名解析等文件的存放目录(须手动建立);

listen-on-v6 { any; }; 支持ipv6的请求;

forwarders {

your.upper.DNS.address;

}; 指定前向DNS,当本机无法解析的域名,就会被转发至前向DNS进行解析。

dump-file "/etc/named_dump.db"; 指定named_dump.db文件的位置。

4.3线索域和回环域

  1. zone "." {  
  2. type hint;  
  3. file "named.ca";  
  4. };  
  5. zone "localhost" IN {  
  6.   type master;  
  7.   file "localhost.zone";            //正向解析文件  
  8. };  
  9. zone "0.0.127.in-addr.arpa" IN {  
  10.    type master;  
  11.    file "named.local";              //反向解析文件  
  12.    allow-update { none; };  
  13. };  

指定线索域和本地回环域,这一部分使用一些标准的例子就可以。

在这里type类型有三种,它们分别是master,slave和hint它们的含义分别是:

master:表示定义的是主域名服务器

slave :表示定义的是辅助域名服务器

hint:表示是互联网中根域名服务器

文件“named.ca”; 指定该域的解析文件,其目录为options中directory "/var/named";指定的。在本例中为/var/namd。如果缺少named.ca,可以试试看从这里下载:ftp://ftp.rs.internic.net/domain/named.root

或者是使用如下命令产生一份named.ca:

dig -t NS . > named.ca

[注:如果根节点查询不全则可以使用一下命令]

dig -t NS  .  @a.root-servers.net  > named.ca

文件“localhost.zone”定义了回环域的正向解析文件,其内容可以为:

  1. $TTL   86400   //全局ttl值.以下记录不指定,则使用全局值  
  2. localhost.  600  IN  SOA  localhost.  admin.localhost. (   
  3. 2011081601 //序列号 版本号  
  4. 1H         //H小时 M分钟 D天 W星期 默认为秒  
  5. 10M        //重试时间间隔  
  6. 7D         //过期时间  7D找不到主服务器 则自杀  
  7. 1D )       //否定回答ttl值  
  8.     IN   NS                   localhost.  
  9. localhost.          IN    A                    172.0.0.1  

文件“named.local”定义了回环域的反向解析文件,其内容可以为:

  1. $TTL 86400  
  2. @   600 IN  SOA localhost.  admin.localhost. (  
  3. 2011081601  
  4. 1H  
  5. 10M  
  6. 7D  
  7. 1D )  
  8.     IN       NS     localhost.  
  9. 1   IN      PTR     localhost.  

关于正向解析文件与反向解析文件的内容会在后文中进行详细解释。

4.4 自定义域

  1. zone "linuxidc.com" {  
  2. type master;  
  3. file "linuxidc.com.zone";  
  4. };  
  5. zone "1.168.192.in-addr.arpa" {  
  6. type master;  
  7. file "linuxidc.com.rev";  
  8. };  

这一部分是配置文件中我们需要重点关心的部分:

type master;

type master 指明该域主要由本机解析;

zone "0.168.192.in-addr.arpa" {

type master;

}; 指定ipv4地址逆向解析

type master 指明该域主要由本机解析;

至此我们就初步建立了一个标准的named 的主配置文件,接下来建立对应的域名解析或逆向解析文件。

相关推荐