A-A+

构建简单的DNS服务器的方法

2016年02月20日 站长资讯 暂无评论

如何实现dns服务器?下面介绍一个简单的构建方法,供大家参考。这里不涉及任何路由器、FTP和交换机,只说DNS服务器本身。

dns实验做测试的时候能够解析,但是在互联网上无法得到:

假设我已经注册了一个域xiaoxiongboke.com,ip地址网段为:172.16.100.0/24的掩码。

ns 172.16.100.1

www 172.16.100.1,172.16.100.3

mail 172.16.100.2

ftp www

DNS:BIND

早期:Berkeley Internet Name Domain

现在:ISC www.isc.org

这个网站提供了两种服务:BIND与dhcpd。

目前版本:9.7.2

步骤:

yum list all|grep "^bind"

卸载: rpm -e utils libs

yum install bind97-libs bind97-utils

bind97是一定要装的;

yum install bind97

bind97:

/etc/named.conf

BIND进程的工作属性

区域的定义

/etc/rndc.key

rndc: Remote(偏僻的,遥远的) Name Domain Controller(让rndc命令能够远程执行的秘钥文件)远程控制dns服务器进程开启重启甚至

修改主配置文件的一个非常常用的命令。因此rndc文件是一个可以让rndc命令可以远程工作的一个。事实上bind自身的文件叫做rndc.conf;

一般来讲有一个就够了。

密钥文件

配置信息:/etc/rndc.conf

/var/named/

区域数据文件;区域数据文件默认情况下需要管理员自己去创建,至于叫什么名字,有管理员自己去定义。

/etc/rc.d/init.d/named

{start|stop|restart|status|reload|configtest}

所以安装完毕之后,就可以使用这些命令了。重读其数字文件和数据文件。

二进制程序的名字:named;只不过软件包的名字叫做bind。

yum install bind97-devel

当我们针对bind软件进行二次开发的时候需要用bind-devel

bind-chroot:(加强服务器系统安全性而言需要使用chroot包,但是对刚学习的你们而言,请确保这个软件包一定不要装)

默认: named

用户:named

组:named

将named运行的进程统统搬到一个假的根的位置。统统放到/var/named/chroot/下面,让它以它为根。请确保这个软件包一定不要装。

/var/named/chroot/

etc/named.conf

etc/rdnc.key

sbin/named

var/named/

另外一个软件包名字:

yum info caching-nameserver;能够让我们的服务器称为缓存名称服务器。缓存服务器跟主dns服务器的配置一般来说是没有区别的。

如我们要配置一个主dns服务器,首先我们要配置一个缓存dns服务器。而后再配置我们所需要的域,它就成了主dns服务器了。

缓存-->主-->从

rpm -ql bind97 查看bind包里面有两个重要的命令,一个叫做named-checkconfig;另外一个叫做name-checkzone;

named-checkconfig

named-checkzone

/etc/named.conf和/etc/named.rfc1912.zones都是安装完bind97包之后,自动生成的。

cd /var/named

cat named.ca其下面全是根域名服务器;

dig:Domain Information Gropher(到域名服务器里面去查找它的相关信息)

service named start 开启dns服务器;

DNS:

监听的协议及端口:

53/udp

53/tcp

953/tcp, rndc

cat /etc/named.conf

SOCKET: 套接字

IP:PORT

通过套接字编程,能够让两个服务器间的进程进行通信。

C/S: Client/Server

172.16.100.1:53

192.168.0.13

192.168.0.12:53

172.16.100.1:53

0.0.0.0:53 表示所有地址的服务都监听;

  1. recursion yes;表示允许递归查询;  
  2. vim  named.conf  
  3. [root@localhost etc]# vim /etc/named.conf  
  4.   
  5. options {  
  6. directory "/var/named";  
  7. };  
  8. zone "." IN {  
  9. type hint;  
  10. file "named.ca"  
  11. };  
  12. zone "localhost" IN {  
  13. type master;  
  14. file "named.localhost";  
  15. };  
  16. zone "0.0.127.in-addr.arpa" IN {  
  17.         type  master;  
  18.         file "named.loopback";  
  19. };  
  20.   
  21. [root@localhost etc]# named-checkconf #检查主配置文档的语法错误;  
  22.   
  23. [root@localhost etc]# named-checkzone "." /var/named/named.ca  #检查根区域文件  
  24. zone ./IN: has 0 SOA records  
  25. zone ./IN: not loaded due to errors.  
  26. [root@localhost etc]# named-checkzone "localhost" /var/named/named.localhost   #检查localhost区域文件  
  27. zone localhost/IN: loaded serial 0  
  28. OK  
  29. [root@localhost etc]# named-checkzone "0.0.127.in-arpa" /var/named/named.loopback  
  30. zone 0.0.127.in-arpa/IN: loaded serial 0  
  31. OK  

区域说明:

区域:

  1. zone "ZONE NAME" IN {  
  2. type {master|slave|hint|forward};   #hin他表示根区域;  
  3. };  

主区域:

file "区域数据文件"; #是个相对路径,相对于directory而言;

从区域:

file "区域数据文件"; #是个相对路径,相当于directory而言;

masters { master1_ip; };#指定主服务器的IP地址

临时性地关闭SELinux:

# getenforce

Enforcing

# setenforce 0 关闭selinux

# setenforce 1打开selinux

永久关闭:

# vim /etc/selinux/config

DNS区域:

  1. vim /var/named/xiaoxiongboke.com.zone  
  2. [root@localhost named]# cat /var/named/xiaoxiongboke.com.zone   
  3. $TTL 600  
  4. xiaoxiongboke.com.  IN  SOA  ns1.xiaoxiongboke.com.   admin.xiaoxiongboke.com. (  
  5.         20150521  
  6.         1H  
  7.         5M  
  8.         2D  
  9.         6H )  
  10.   
  11.             IN  NS     ns1  
  12.             IN  MX  10 mail  
  13. ns1         IN  A     172.16.100.1  
  14. mail        IN  A     172.16.100.2  
  15. www         IN  A     172.16.100.1  
  16. www         IN  A     172.16.100.3  
  17. ftp         IN    CNAME    www  

测试DNS服务器:

dig -t RT NAME @IP #t表示resource type

[root@localhost named]# dig -t A www.xiaoxiongboke.com

dig -t NS xiaoxiongboke.com

dig -x IP: 表示根据IP查找FQDN

checkconfig --list |grep named

checkconfig --level 345 named on
host -t RT(RESORCE TYPE) NAME: 查询名称的解析结果

例如:[root@localhost ~]# host -t A www.xiaoxiongboke.com

www.xiaoxiongboke.com has address 172.16.100.3

www.xiaoxiongboke.com has address 172.16.100.1

nslookup: 交互式

nslookup:(同时windows也支持这种交互式命令)

server IP #设定dns服务器是那个;

set q=RT #设定资源指定类型;

NAME #此为第一行的名字;

定义反向区域文件:

反向区域如何定义?

  1. 100.16.172.in-addr.arpa  
  2. [root@localhost named]# cat 172.16.100.zone   
  3. $TTL 600  
  4. @       IN  SOA  ns1.xiaoxiongboke.com.   admin.xiaoxiongboke.com. (  
  5.         20150521  
  6.         1H  
  7.         5M  
  8.         2D  
  9.         6H )  
  10.   
  11.             IN  NS     ns1.xiaoxiongboke.com.  
  12. 1           IN  PTR    ns1.xiaoxiongboke.com.  
  13. 1           IN  PTR    www.xiaoxiongboke.com.  
  14. 2           IN  PTR    mail.xiaoxiongboke.com.  
  15. 3           IN  PTR  
标签:

给我留言