开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情
Linux 使用Bind提供域名解析服务
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号UDP 53号端口作为数据通信端口(域名解析),使用TCP53号端口实现数据同步(主从同步)。
DNS工作过程:
1.客户机首先会查看本地的hosts文件,如果有记录则返回,无则继续. 2.客户端查看本地缓存,如果有记录则返回,无则继续. 3.客户端将请求转发给本地DNS服务器,请求解析. 4.本地DNS服务器,查看域名是否有记录,有则本地解析返回,否则进行下一步. 5.本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步. 6.本地DNS服务器,向全球13个根域服务器发起DNS请求,根域返回对应的地址列表. 7.使用某一个域的IP地址,发起DNS请求,域返回kernel域服务器地址列表. 8.使用某一个kernel域IP地,发起DNS请求,kernel域返回本地DNS服务收到后,返回给客户机.
客户端(Web浏览器)访问网页的全过程:
1.首先客户端向DNS服务器请求解析域名. 2.DNS收到请求后相应,或者迭代或者递归,当查询到服务器IP后,返回给客户. 3.客户端取得IP地址后,向网页服务器发送请求.
DNS递归与迭代查询:
递归查询: 是客户端与服务器之间的查询过程,压力在服务器端 迭代查询: 是服务器与服务器之间的查询过程,压力在客户端
DNS的资源记录类型:
| 参数 | 说明 | 解释 |
|---|---|---|
| SOA | 起始授权机构 | 这里记录时间等信息 |
| NS | 名称服务器 | 只记录了完全合格域名(FQDN) |
| A | 主机 | 正向解析(域名到IP的解析) |
| PTR | 指针 | 反向解析(IP到域名的解析) |
| MX | 邮件交换记录 | 指定邮件优先级 |
| SRV | 服务 | 列出提供特定服务的服务器 |
| CNAME | 别名 | 将多个名字映射到同一台计算机 |
安装Bind服务程序
◆编译安装Bind◆
[root@localhost ~]# wget ftp://ftp.isc.org/isc/bind9/9.6.1/bind-9.6.1.tar.gz
[root@localhost ~]# tar -xzvf bind-9.6.1.tar.gz
[root@localhost ~]# cd bind-9.6.1/
[root@localhost ~]# ./configure --enable-largefile --enable-threads --prefix=/usr/local/named
[root@localhost ~]# make && make install
◆Yum安装Bind◆
[root@localhost ~]# yum install -y bind bind-chroot bind-libs
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package 32:bind-9.9.4-61.el7.x86_64 already installed and latest version
Package 32:bind-chroot-9.9.4-61.el7.x86_64 already installed and latest version
Package 32:bind-libs-9.9.4-61.el7.x86_64 already installed and latest version
Nothing to do
部署DNS实现解析
DNS正向解析是指根据域名(主机名),查找到对应的IP地址,也就是说,当用户输入一个域名后,Bind服务会自动进行查找,并将匹配到的IP地址返回给客户端,这也是最常用的DNS工作模式.
DNS反向解析的作用是,将用户提交的IP地址解析为对应的域名信息,它也可以针对某个IP进行反向解析,大致判断有多少个网站运行在上面.
以下实验,将配置一个DNS解析服务.(注意:192.168.1.20解析成lyshark.org 且 lyshark.org解析成192.168.1.20).
1.首先通过yum仓库,安装bind域名解析系统,和bind-chroot禁锢模块
[root@localhost ~]# yum install -y bind bind-chroot bind-libs
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package 32:bind-9.9.4-61.el7.x86_64 already installed and latest version
Package 32:bind-chroot-9.9.4-61.el7.x86_64 already installed and latest version
Package 32:bind-libs-9.9.4-61.el7.x86_64 already installed and latest version
Nothing to do
2.编辑bind主配置文件,修改前面标有星号的参数
[root@localhost ~]# vim /etc/named.conf
options {
★listen-on port 53 { any; }; #侦听任何ipv4地址
★listen-on-v6 port 53 { ::any; }; #侦听任何ipv6地址
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"; #记录内存使用情况
★allow-query { any; }; #允许任何主机查询
recursion yes; #允许递归查询
dnssec-enable yes; #是否支持Dnssec
dnssec-validation yes; #Dnssec再次确认开关
bindkeys-file "/etc/named.iscdlv.key"; #ISC DLV KEY 的路径
managed-keys-directory "/var/named/dynamic"; #管理密钥路径
pid-file "/run/named/named.pid"; #进程ID文件路径
session-keyfile "/run/named/session.key"; #会话密钥文件
};