DNS概述
DNS(Domain Name System)是互联网中用于将域名转换为对应IP地址的分布式命名系统。
为什么会有DNS
IP地址不便于记忆,DNS使用户可以通过易记的域名快速访问各种网络资源。
域名结构
以www.example.com为例
.com是一级域名
example是二级域名
www是主机名
#主机名用于标识特定的设备或计算机,而子域名用于对主域名下的特定部分进行分类或组织
域名解析类型
- A记录:将域名解析为IPv4地址。
- AAAA记录:将域名解析为IPv6地址。
- CNAME记录:将域名解析为另一个域名,可用于创建别名。
- MX记录:指定接收某域名邮件的邮件服务器地址。
- NS记录:指定管理域名解析的权威域名服务器。
- PTR记录:用于反向解析,将IP地址解析为域名。
本地host文件位置
/etc/hosts
DNS架构
- 根域 使用“.”表示,位于域命名空间层次结构的最高层; 在根域服务器中只保存了其下层的一级域的DNS服务器名称和IP地址对应关系;
- 顶级域/一级域 顶级域位于根域下层,可以分为两类: 组织域(.com,.net,.org,.gov,.edu,.mil等) 国家域(.iq,.tw,.hk,.jp,.cn等);
- 二级域 二级域位于顶级域下层,是指为了在Internet上使用而注册到个人或企事业单位的域名;
- 子域 子域是根据具体情况从二级域中按部门或地理位置创建;
- 主机名 位于DNS域命名空间的最低层,主要指计算机的主机名;
查询方式
- 正向解析:由域名查找IP地址;
- 反向解析:由IP地址查找域名;
原理详解
- 用户所要查找的域名,程序会发送域名解析请求
- 先查询本地DNS缓存,如果有解析历史就直接访问
- 如果没有本地DNS缓存,就在hosts文件中查找相关配置,如果有相关配置就直接访问
- 如果hosts文件中没有相关配置,会向本地DNS服务器发送递归查询,等待反馈
- 本地DNS服务器先检查本地DNS缓存,如果有缓存直接访问,没有缓存就发起迭代查询
- 迭代查询会先向根域服务器发起请求,然后找到一级域服务器
- 再向一级域服务器发送迭代请求,找到二级域服务器
- 本地DNS服务器会一直发起迭代查询,直到找到权威服务器并发起递归查询,等待权威服务器反馈对应IP地址
- 本地DNS服务器将IP地址反馈给程序,递归查询结束
bind服务端程序
什么是bind
BIND是DNS服务器软件。
BIND 服务器可以提供域名解析服务,能够接收客户端的 DNS 查询请求,并返回相应的 IP 地址。
安装DNS服务程序
[root@localhost ~]# yum -y install bind bind-utlis
查询DNS配置文件路径
[root@localhost ~]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf #DNS配置文件路径
/etc/named.iscdlv.key
/etc/named.rfc1912.zones #域名文件路径
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost #数据库文件示例存放路径
/var/named/named.loopback
配置文件格式
[root@localhost ~]# vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
// allow-query { localhost; };
域名文件格式
[root@localhost ~]# vim /etc/named.rfc1912.zones
10 // See /usr/share/doc/bind*/sample/ for example named configuration files.
11 //
12
13 zone "hzw.com" IN {
14 type master;
15 file "hzw.com.zone";
数据库文件格式
[root@localhost ~]# cp -p /var/named/named.localhost /etc/named.conf
cp:是否覆盖"/etc/named.conf"? y
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.137.101
www A 192.168.137.105
配置网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑网卡配置
systemctl restart network #重启网络服务
开启服务
systemctl start named
host master.hzw.com