DNS
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分 布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数 串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。 DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明, RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。
DNS域名
- 根域
- 一级域名:Top Level Domain: tld,com, edu, mil, gov, net, org, int,arpa 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
- 二级域名
- 三级域名
- 最多127级域名
- ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理
-
域名结构如下图:
DNS1.png
cat /var/named/named.ca
查看DNS 13个根(需要先安装bind)
DNS解析
- 一次完整的查询请求经过的流程:
Client -->hosts文件-->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
- 解析答案:
- 肯定答案:
- 否定答案:请求的条目不存在等原因导致无法返回结果
- 权威答案:
- 非权威答案:
相关配置文件
名字解析,仅本地有效
vi /etc/hosts
ISP的DNS服务器IP记录处。
vi /etc/resolv.conf
设置优先选择使用hosts还是resolv.conf的配置
vi /etc/nsswitch.conf
-
一般来说,Linux的默认主机名和ip的对应解析都是以hosts文件为优先,因为在nsswitch.conf里已经配置好了。当然你可以选择更改,查看nsswitch.conf文件,找到hosts选项:
DNS2.png
上面files就是使用hosts,DNS则是使用resolv.conf,你调换一下,就可以更改优先顺序。
搭建DNS
首先搭建DNS之前需要安装DNS所需要的软件,这里我们使用“BIND”的这个软件,他是有伯克莱大学发展出来的,全名为“Berkeley Internet Name Domain”,首先查询是否安装bind包。
- BIND的安装配置
dns服务程序包:bind
程序名:named
程序包:yum list all bind*
1. bind:服务器
2. bind-libs:相关库
3. bind-utils:客户端
4. bind-chroot:/var/named/chroot/ 默认将根锁在/var/named/chroot目录中
安装bind
查询是否安装bind包
rpm -qa | grep '^bind'
查看安装包信息
yum info bind
安装bind包
yum install bind
查看当前文件包的文件列表(配置文件,数据库,日志,服务器软件,等...)
rpm -ql bind
测试环境下,如果服务过多,容易出错,可以选择禁止一些服务,关闭防火墙
(1)getenforce
显示Enforcing
(2)vim /etc/selinux/config
修改禁用服务:
SELINUX=permissive
SELINUXTYPE=targeted
(3)setenforce 0
重启生效
(4)iptables -vnL
查看防火墙
(5)systemctl disable firewalld
(6)systemctl stop firewlld
关闭防火墙,清空
设置开机启动
systemctl start named
启动服务
systemctl enable name
查看端口号是否开启(53端口号)
ss -nutl
查看ip是否正常,如果不正常手动修改文本ip(正常忽略)
cdnet | vim ifcfg-eth1
(1)测试拼包,检查能否访问网络
ping www.baidu.com
(2)备份配置文件
cp -p /etc/named.conf{,.bak}
(3)修改配置文件
vi /etc/named.conf
将127.0.0.1;后面加上自己的Ip地址,或则嫌麻烦直接改成localhost;就可以了,localhost是机器里的关键字,代表机器所有ip。
将allow-query这一项括号里改为{ localhost(这是允许本机连接);加上你要连接的机器的ip,比如172.16.XX.XXX(这样你的机器就可以访问了);如果你是公司访问,就将公司的ip地址段加进去;如果你想所有人访问就加上any;或者直接注释掉,在开头加上#}
(2)然后重新加载配置文件,
systemctl reload named
上述步骤做完之后,本机器就已经是一个DNS服务器了,然后可以将DNS指向自己,就是刚刚修改配置文件里,添加DNS1=127.0.0.1指向自己。(127.0.0.1是本机的意思,如果是另一台服务器,就直接指向DNS服务器就可以了)
当然现在DNS做完了,很简单,但是这里是什么都没有的...后面还要做主从服务器,子域,view,当然还要自己编译安装一个DNS,那么下次在写...bye!