假如我们希望我们的网站,比如www.lee.com被别人通过域名访问到,那么我们需要向代理商注册---国内有万网,新网,国外有狗爹等,代理商会帮助你向根域注册,如果你的网站访问量很小,代理商会从他们自己公司的服务器里挑一台通过虚拟主机帮你解析(赚你的钱)。如果你希望通过自己公司里的DNS服务器去解析,那么需要在代理商提供给我们的主机页面后台修改DNS指向到我们自己的DNS服务器,就是NS记录和A记录指向自己的服务器。根域告知我们.com的位置(根域服务器通过子域授权认证了.com服务器),我们需要让.com的服务器通过子域授权到代理商的DNS服务器
linux上DNS的实现是依靠bind这个软件,但是这个软件的进程名叫named
我们需要的包是bind,bindutils和bind-libs(提供各种库)
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号端口,rndc.key提供了进程间通信的共享密钥
解析库文件:/var/named/目录下的.zone文件(通常命名方式),保存本地的区域文件----一台dns服务器能为多个区域解析,所以zone文件会有多个,这个目录下应该有根区域文件,也就是上图中的named.ca了,本地的正反解文件就是named.localhost和named.loopback
接下来我们配置主从DNS服务器,从服务器会向主服务器请求同步数据,达到了分摊负载功能
前提:
主从复制:
1、应该为一台独立的名称服务器;
2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器实现主服务器可以通知从服务器来请求数据;
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;
4、主服务器得允许从服务器作区域传送;
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致;否则,应该从高,主低;
192.168.3.132-----主DNS服务器的named.conf文件配置
说明:
(1).使用//注释:
(2).花括号的两边必须有空格
option下:
listen-on指定了监听在哪个地址的哪个端口上
directory指定了dns服务器工作目录,也就是zone文件放置的位置
allow-query指定那些网段的主机可以通过本DNS服务器查询解析
recursion指定是否允许客户端主机到本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配置
查看从DNS服务器/var/named/slaves目录下发现同步成功:
当修改了区域解析数据库后需要手动将序列号加1来触发增量通知(IXFR)
我们来测试一下:
正解:dig -t指定正解时资源记录类型,@后面指定用哪个dns服务器解析。dig不会查询hosts文件,直接查询dns服务器
flags段中:aa表示权威答案
查询选项:
+[no]trace:跟踪解析过程
+[no]recurse:进行递归解析
dig命令其他用法请看man手册,这里举一个例子:+trace跟踪路由
模拟区域全量传送:正向:
使用host命令查询
反解示例:host -t PTR 172.16.100.11 172.16.100.11
使用nslookup查询:
有两个命令可以用来检查name.conf文件和zone文件的语法有没有错误
使用rndc命令可以查看dns服务器状态信息:使用rndc reload可以实现不重启named服务读取配置文件,修改了zone文件后可以使用这个命令生效,不用重启。
reload: 重载主配置文件和区域解析库文件
reload zone: 重载区域解析库文件
retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;
notify zone: 重新对区域传送发通知;
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志;
trace: 开启并且递增debug级别;
trace LEVEL: 指定使用的级别;指定(数字)级别
注意:/var/named目录权限为640,下面的文件为了安全也应该把权限改为640,自己创建的zone文件默认属主是root,应该把属主和属组拥有者改成named用户,放置named服务因为没权限无法读取zone文件。
提醒:主从服务器时间应该同步,并且bind版本最好保持一致!