DNS
DNS查询
DNS又称域名解析地址主要用于将请求的域名转换成为IP地址
为域名和IP地址互相映射的一个分布式的一个分布式数据库,DNS协议运行再UDP协议之上,使用端口53
测试命令
named-checkconf和named-checkzone命令查看这些配置文件里有没有错误
[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkconf /etc/named.rfc1912.zones
[root@localhost named]# named-checkzone zhang.com /var/named/zhang.com.zone
zone zhang.com/IN: loaded serial 0
OK
[root@localhost named]# named-checkzone 163.168.192.in-addr.arpa 192.168.163.arpa
zone 163.168.192.in-addr.arpa/IN: loaded serial 0
OK
文件位置
默认主配置文件:/etc/named.conf
区域配置文件:/etc/named.rfc1912.zones保存着域名和IP地址的对应关系和所在位置
区域数据库文件:/var/named
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
named.ca named.empty named.localhost named.loopback slaves
named.ca | 根服务器 |
---|---|
named.empty | 正向解析模板文件 |
named.localhost | 正向解析文件 |
named.loopback | 反向解析文件 |
slaves | 从服务器 |
A记录代表域名解析IP
PTR:IP解析域名
MX:邮箱
CNAME:别名
#正向解析(域名解析IP)
[root@localhost named]# cat named.localhost
$TTL 1D #缓存时间一天
@ IN SOA @ rname.invalid. (
#授权信息的开始 #DNS区域地址 管理员邮箱
0 ; serial #更新序列号
1D ; refresh #更新时间
1H ; retry #重试延时
1W ; expire #失效时间
3H ); minimum #无效解析记录的缓存时间
NS @
#NS名称服务器,表示这个主机位域名服务器
A 127.0.0.1
#主机头 A记录 IP
AAAA ::1
#解析位IPv6地址
正向解析
#安装DNS服务和测试工具
[root@localhost ~]# yum -y install bind
[root@localhost ~]# yum -y install bind-utils
#修改主配置文件
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; };
#配置区域文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
添加:
zone "zhang.com" IN {
type master;
file "zhang.com.zone";
};
#配置区域数据库文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[root@localhost named]# cp -p named.localhost zhang.com.zone
[root@localhost named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback zhang.com.zone
[root@localhost named]# vim zhang.com.zone
添加:
$TTL 1D
zhang.com. IN SOA ns1.zhang.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.zhang.com.
A 127.0.0.1
www A 192.168.163.15
ns1 A 192.168.163.15
news CNAME WWW
#重启服务
[root@localhost named]# systemctl restart named
#最后测试
[root@localhost named]# nslookup
> www.zhang.com
Server: 192.168.163.15
Address: 192.168.163.15#53
Name: www.zhang.com
Address: 192.168.163.15
> news.zhang.com
Server: 192.168.163.15
Address: 192.168.163.15#53
news.zhang.com canonical name = WWW.zhang.com.
Name: www.zhang.com
Address: 192.168.163.15
反向解析
[root@localhost named]# vim /etc/named.rfc1912.zones
添加:
zone "163.168.192.in-addr.arpa" IN {
type master;
file "192.168.163.arpa";
};
[root@localhost named]# cp -p named.loopback 192.168.163.arpa
[root@localhost named]# vim 192.168.163.arpa
$TTL 1D
163.168.192.in-addr.arpa. IN SOA ns1.zhang.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.zhang.com.
A 127.0.0.1
15 PTR www.zhang.com.
[root@localhost named]# systemctl restart named
[root@localhost named]# nslookup 192.168.163.15
15.163.168.192.in-addr.arpa name = www.zhang.com.
[root@localhost named]# nslookup 192.168.163.15
15.163.168.192.in-addr.arpa name = www.zhang.com.
从服务器
在另外一台虚拟机上,/etc/named.conf文件的配置和前面一样
[root@localhost ~]# vi /etc/named.rfc1912.zones
添加:
zone "zhang.com" IN {
type slave;
file "slaves/zhang.com.zone";
masters {192.168.163.15;};
};
zone "163.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.163.arpa";
masters {192.168.137.15;};
};
[root@localhost ~]# cd /var/named/slaves
[root@localhost slaves]# ls
[root@localhost slaves]# systemctl restart named
[root@localhost slaves]# ls
192.168.163.arpa zhang.com.zone
最后验证成功!!!
实验遇到的问题
正向解析:
[root@localhost ~]# nslookup www.zhang.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: www.zhang.com
Address: 52.128.23.153
解决方法:发现DNS服务没启动
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@localhost ~]# systemctl start named
反向解析:
[root@localhost named]# nslookup
> 192.168.163.15
> ** server can't find 15.163.168.192.in-addr.arpa: NXDOMAIN
解决方法:
检查/etc/resolv.conf文件的DNS是否写的是本机IP,网络配置里的DNS也要指向本机IP。最后测试,成功!
总结
做实验的过程中遇到了许多的问题,但自己还是一点一点的解决了,虽然说找错误这个过程很痛苦,但找到过后的成就感是很爽的。