高速缓存文件
dns端
使用一个机器做dns端,首先配置yum源,在yum上搜索DNS,包的名称为bind.x86_64,安装完成之后可以使用rpm -ql bind 来查询启动命令,
启动命令,查询/usr/lib/systemd/system/下的文件,
下来启动named服务,第一次服务启动不了是因为他的密码文件/etc/rndc.key加密字符太短,使用cat /dev/random可以查看,掩盖太短解决的办法为在机子里输入字符,系统会自动捕捉并产生加密字符,named服务就可以启动了。
再关闭火墙,
使用netstat -antlpu | grep named命令查看端口,
配置/etc/named.conf文件,
listen-on port 53 { any; }; ##本身大括号里面加的是ip地址,意为监听这个ip下的53端口,但是我们需要所有人都可以使用这个机器的dns服务,所以将ip地址改为any,意为所有人。
allow-query { any; }; ##本身大括号里面加的是localhost,只有本机可以使用这个服务,但是我们需要其他人可以进行使用,所以将括号中的内容更改为any。
forwarders { 114.114.114.114; }; ##这一行本身是没有的,加入这一行,可以进行寻址服务,前提是dns主机可以ping通114.114.114.114。
dnssec-validation no; ##这一行本身为yes,selinux服务不让缓存,如果要想使用named高速缓存,需要将这个改为no。
##大括号中写完需要使用;来结束。
网络也需要设置
客户端需要将/etc/resolv.conf 文件中
nameserver xxxxxxx 这一行的ip改为dns端的ip。
测试
dig 域名
status: SERVFAIL 显示为这个需要将dnssec-validation这个的yes改为no。
status: NOERROR 这个就没有错误了
搭建权威dns
正向解析
编辑主配置文件,自己提供答案
首先删除forwarders { 114.114.114.114; };这一行,不在外面进行寻址,
在最后可以加入
zone "westos.org" IN {
type master;
file "westos.org.zone";
};
##在westos.org.zone文件中进行寻址
但是一般不在这个主配置文件中进行修改,会显得比较乱,最后两行有别的提示,
include "/etc/named.rfc1912.zones";##所有的域名配置文件
进入这个配置文件中,可以看到所有的域名配置都在这里,
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
##这个为模版文件,
zone “localhost” IN { ##localhost改为二级域名(好比baidu.com)
file “named.localhost.zone”; ##这一行是该域名的配置文件,该配置文件是没有的,需要自己进行建立。
如何建立named.localhost,首先进入/var/named/目录named.localhost为一个模版文件,将这个文件复制成为自己的named.localhost.zone文件注意的是,复制时需要cp -p将属性一并复制。
进入自己的named.localhost.zone文件
$TTL 1D ##这个表示缓存时间
@ IN SOA @ rname.invalid. ( ##第一个@表示/etc/named.rfc1912.zones文件zone "localhost" IN { 中的localhost,第二个@需要删掉自己写域名,后面rname.invalid.写自己的名字,这个到时候会给服务端进行显示。每次写完了以后记得最后加'.'不加的话系统就会在后面再加/etc/named.rfc1912.zones文件中的"localhost"
0 ; serial
1D ; refresh ##刷新时间为一天
1H ; retry ##若寻址失败1个小时后再试
1W ; expire ##缓存最大保存天数是一万天
3H ) ; minimum ##最小保存为3小时 ##这些时间一般不改都使用默认的
NS @ ##这个@改成自己的域名
dns A ip地址 ##寻址ip
www A ip地址 ##寻址ip
内部使用不太规范的域名
在上面的文件中,后面加上
www CNAME x.域名. ##(注意最后面的‘.’,没有这个‘.’可能寻址就会失败)
##输入www的时候就会自动寻址到x.westos.org.下,接着设置x的ip(ip可以设置多个,做到简单的螺旋寻址,每次输入的时候ip不一样)。
x A 172.25.254.xxx
x A 172.25.254.xxx
MX 邮件交换记录
设置依然在自己的named.localhost.zone文件中,
设置格式
westos.org. MX 1 172.25.254.102 (注意org后面的‘.’,没有这个‘.’可能寻址就会失败)
##前面为名字 功能 优先级 ip地址
查看使用 dig -t mx westos.org,
输出为
;; QUESTION SECTION:
;westos.org. IN MX
;; ANSWER SECTION:
westos.org. 86400 IN MX 1 172.25.254.102.
####################################################################################################################################################
邮件格式
mail 用户@mx地址
标题 回车
主内容 回车
. 回车
这样用户就发出去了
####################################################################################################################################################
ptr 反向解析
(和正向解析没有关系)
反向解析和正向解析更改的配置文件相同,在/etc/named.rfc1912.zones,但是反向解析在最下面几行,模版为
zone "1.0.0.127.in-addr.arpa" IN { ##引号中的ip地址需要倒着写,例如172.25.254的ip就要这样254.25.172.in-addr.arpa,
type master;
file "named.loopback"; ##引号中写正向ip.ptr,这个也是一个文件,需要在/var/named文件中复制,复制的模版是named.loopback
allow-update { none; };
};
里面配置文件为
$TTL 1D
@ IN SOA @ rname.invalid. ( ##第二个@需要改为域名服务器 后面写管理员名字
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
dns A 127.0.0.1 ##后面为主机ip
xxx PTR localhost. ##xxx表示同一网段的最后面的ip,就好比172.25.254.xxx
,
重启服务后使用 dig -x 172.25.254.xxx来查看解析
输出为,
;; QUESTION SECTION:
;xxx.254.25.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
xxx.254.25.172.in-addr.arpa. 86400 IN PTR www.westos.org.
双向解析
cp -p 域名.zone 域名.output 复制文件,第二个文件作外网解析,更改里面的ip地址方便查看效果。
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.output 复制文件,第二个文件作外网解析,更改里面的文件路径指向 westos.org.output,
在/etc/named.conf文件中最后几行加上
view string optional_class {
match-clients { address_match_element; ... };
最后的效果为
view output {
match-clients { 172.25.254.102; }; ##只让这个ip可以连接内网,让本机登陆内网则需要改为localhost
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.output";
};
view any {
match-clients { any ; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
};
主从服务器
设置主服务器
/etc/named.rfc1912.zones 下
zone "westos.org" IN {
type master;
file "westos.org.zone";
allow-update { none; };
also-notify {172.25.254.202; }; ##设置子服务器的ip
};
设置子服务器
在子服务器/etc/named.rfc1912.zones 下
zone "westos.org" IN {
type slave; ##标签表示为子服务器
masters {172.25.254.102; }; ##主服务器的ip
file "slaves/westos.org.zone";
allow-update { none; };
};
在/etc/named.conf里配置和主服务器的相同
设置完成之后重启服务,查看/var/named/slaves,在其中有westos.org.zone文件则这个子服务器就可以进行同步了。
同步不能自动,需要告诉程序,在/var/named/westos.org.zone中 2019103001 ; serial
修改前面的数字,只能往大的加,不能减小,不能重复,所以设置的方法为,年月日第几次,总共10个数字
更新
首先将westos.org.zone 进行备份,(!!记得加-p)
配置 /etc/named.rfc1912.zones文件
将自己写的命令中的allow-update { none; };这一行,将none改为可以对这台主机进行更新的ip地址。
重启服务
到可以对这台主机进行更新的机器上使用nsupdate的命令
下来继续输入
> server 原配置主机的ip
>update add 设置的新域名 86400 A 域名寻址ip ## 添加域名 86400秒为一天
>send
这时会提示SERVFAIL 更新失败了,原因是/var/named在组中没有写权限。
chmod g+w /var/named/ 给目录加上权限。
再次输入命令,生成.jnl文件就已经配置完成了
密钥更新
将上一步的westos.org.zone的所有文件删除,将备份的文件复制回来,
第一步创建密钥,使用
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST 自己设置的钥匙名字 ## -a 加密方式 -b 加密字长度 -n 哪种方式
密钥在当前目录,设定完成后可以给密钥单独创建一个文件,将密钥挪过来。
密码的模版为 /etc/rndc.key 复制该文件到/etc/设置名字.key (注意加-p)
进入复制好的文件中,
key "passykey" { ##名字不能打错,是一开始创建密钥自己创建的名字
algorithm hmac-md5; ##加密方式
secret " hxkDsrkFYkMv23Ntao8qNQ=="; ## 这个加密字符是从Kpassykey.+157+58302.private 文件中来的,
再更改/etc/named.conf主配置文件
在没有大括号包主的地方加入 includ"/etc/自己刚设置的名字.key";
再配置 /etc/named.rfc1912.zones文件
allow-update { none; };这一行,的none中的内容改为, key ‘使用dnssec-keygen命令创建的钥匙名’
再将两把钥匙发到另一台机器上,
在另一台机器上使用
>nsupdate -k Kpassykey.+157+58302.private 命令
>server 172.25.254.119
>update delete b.passy.com
>send