假如我们希望我们的网站,比如www.lee.com被别人通过域名访问到,那么我们需要向代理商注册---国内有万网,新网,国外有狗爹等,代理商会帮助你向根域注册,如果你的网站访问量很小,代理商会从他们自己公司的服务器里挑一台通过虚拟主机帮你解析(赚你的钱)。如果你希望通过自己公司里的DNS服务器去解析,那么需要在代理商提供给我们的主机页面后台修改DNS指向到我们自己的DNS服务器,就是NS记录和A记录。根域告知我们.com的位置(根域服务器通过子域授权认证了.com服务器),我们需要让.com的服务器通过子域授权到代理商的DNS服务器
linux上DNS的实现是依靠bind这个软件,但是这个软件的进程名叫named
我们需要的包是bind,bind-libs和bindutils
bind-utils为我们提供了一些测试工具,比如dig,nslookup,host命令
bind还提供了安全包,bind-chroot,安装了bind-chroot的话bind会把dns服务圈禁在/var/named/chroot目录下,即使黑客攻破了dns,也不会影响到真正的系统,因为dns的根目录被从我们系统的根目录上剥离开来了
安装bind后生成的配置文件:
服务脚本:/etc/rc.d/init.d/named
主配置文件:/etc/named.conf,/etc/named.rfc1912.zones,/etc/rndc.key
rndc:默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程,提供辅助性管理功能,使用tcp953号端口
解析库文件:/var/named/目录下的.zone文件(通常命名方式),保存本地的区域文件----一台dns服务器能为多个区域解析,所以zone文件会有多个,这个目录下应该有根区域文件,也就是上图中的named.ca了,本地的正反解文件就是named.localhost和named.loopback
接下来我们配置主从DNS服务器,从服务器会向主服务器请求同步数据,达到了分摊负载功能
配置文件大括号两边应该有空格
192.168.3.132-----主DNS服务器的named.conf文件配置
option下:
listen-on指定了监听在哪个地址的哪个端口上
directory指定了dns服务器工作目录,也就是zone文件放置的位置
allow-query指定那些网段的主机可以通过本DNS服务器查询解析
recursion指定是否允许为非本dns域内管理的主机到本dns服务器查询时是否为他们递归到根节点查询
logging下:
指定日志文件存放位置
severity指定安全日志级别
zone下:
type指定dns服务器类型,这里是主dns服务器
file:指定zone文件存放位置
allow-transfer:指定主从同步时传送zone文件给那些主机(在主dns服务器上配置此条)
masters:指定主从复制时主dns服务器在哪(在从dns服务器上配置此条)
正解zone文件:/var/named/magedu/magedu.zone
如果使用泛域名解析:(泛域名解析等理论部分请查看上一篇博客)---简单说就是用户输入错误域名我们帮助用户重定向到某一网页,主机
上面的zone文件没有添加从DNS的NS记录,和A记录,所以当主dns重启时,默认不会通知从DNS来更新自己的数据,所以合规的做法是:
反解zone文件:/var/named/magedu/100.16.172.arpa
192.168.3.132----从DNS服务器named.conf配置
重启后查看53号端口被DNS监听了:
查看从DNS服务器/var/named/slaves目录下发现同步成功:
查看日志发现提示了主从复制成功:
我们来测试一下:
正解:dig -t指定正解时资源记录类型,@后面指定用哪个dns服务器解析。dig不会查询hosts文件,直接查询dns服务器
反解:用-x选项
dig命令其他用法请看man手册,这里举一个例子:+trace跟踪路由
模拟区域全量传送:正向:
反向:
使用host命令查询
使用nslookup查询:
有两个命令可以用来检查name.conf文件和zone文件的语法有没有错误
使用rndc命令可以查看dns服务器状态信息:使用rndc reload可以实现不重启named服务读取配置文件,修改了zone文件后可以使用这个命令生效,不用重启。
注意:/var/named目录权限为640,下面的文件为了安全也应该把权限改为640,自己创建的zone文件默认属主是root,应该把属主和属组拥有者改成named用户,放置named服务因为没权限无法读取zone文件。
提醒:主从服务器时间应该同步,并且bind版本最好保持一致!