DNS
作用
DNS是 域名系统 的英文缩写,作为将域名与IP地址相互映射的一个分布式数据库,让人可以通过域名访问互联网
- 正向解析 将域名解析为IP
- 反向解析 根据IP查找对应域名
域名结构
http://www.sina.com.cn./
http://主机名.子域.二级域.顶级域.根域 /
每一级的域名长度限制63字符,总长度不能超过253字符
根据域名查看网站ip
nslookup www.naidu.com host www.naidu.com dig www.naidu.com
DNS端口
- TCP 53 用于连接DNS服务器
- UDP 53 用于解析地址
DNS系统的分布式数据结构
根域 域名空间顶层,用“ . ”表示
顶级域 一般代表组织机构或国家
二级域 标明顶级域内的一个特定的组织(可有可无)
子域 二级域下创建的各级域统称为子域
主机名 位于域名空间最底层,具体的计算机。
DNS解析过程(面试常问)
解析过程分迭代模式和递归模式。
迭代查询较为常用,因为他不像递归查询一样容易占用上层域服务器的资源
递归模式解析过程:
客户端发出请求 查找本地缓存域服务器,若没有
将相关请求转发给根域服务器解析,
根域服务器将请求转发给相应顶级域服务器,
顶级域服务器再转发给二级域服务器,
二级域服务器再转发给子域服务器,根据主机名解析出ip地址,
逐层返回给客户端,客户端即可使用ip地址访问对方主机。
同时本地缓存域服务器记录对应关系,以便下一次的访问。
迭代模式解析过程:
客户端发出请求 查找本地缓存域服务器,若没有
向根域服务器发送解析请求,返回顶级域服务器地址
向顶级域服务器发送解析请求,返回二级域服务器地址
向二级域服务器发送解析请求,返回子域服务器地址
向子域服务器发送解析请求,解析出IP地址并返回结果给本地缓存域服务器
本地缓存域服务器返回结果给客户端,并且记录对应关系,以便下一次的访问
DNS服务器类型
主域名服务器
负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
从域名服务器当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
缓存域名服务器只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名顺务器查询的结果,并放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
转发域名服务器负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
设置DNS服务器地址
Linux系统
- vim /etc/resolv.conf → nameserver IP (直接保存生效)
- /etc/sysconfig/network-scripts/ifcfg-ens33 (需要重启)
windows系统
- 网卡适配器→属性→ipv4→DNS服务器地址
本地host文件映射
hosts文件映射 更快 优先级更高
但是 hosts文件 只对本机有效,所以集群管理时 DNS解析 更方便
优先选择本地hosts文件映射,然后才是网络请求DNS服务器
Linux系统
- 更改/etc/hosts 本地映射 [IP 域名1 域名2 ...]
windows系统
- 更改C:/windows/system32/drivers/etc/hosts
DNS服务器搭建
安装bind软件包
yum install -y bind
配置正向解析
查看需要修改的配置文件的路径
rpm -qc bind #查询bind软件配置文件所在路径 /etc/named.conf #主配置文件 /etc/named.rfc1912.zones #区域配置文件 /var/named/named.localhost #区域数据文件,在rfc1912文件中可自由指定位置,对应即可
1.修改主配置文件(修改监听端口 允许解析的主机)
注意格式!地址后要;并且加一个空格!!!
vim /etc/named.conf options { listen-on port 53 { 192.168.80.101; }; #✨监听53端口 IP地址填入网卡地址 也可any表示所有 #listen-on-v6 port 53 { ::1; }; #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 { 192.168.80.101/24; 172.16.100.0/24; }; #✨允许使用本DNS解析服务的网段 也可any表示所有 recursion yes; #递归查询 .............................................. zone "." IN { #正向解析 . 根区域 type hint; #类型为根区域 file "named.ca"; #区域数据文件为named.ca 记录了13台根域服务器的域名与IP }; #此条定义了一个根域,文件位于named.ca include "/etc/named.rfc1912.zones"; #引入区域配置文件里的所有配置,为了方便管理不写在一起
2.修改区域配置文件(修改需要解析的域名和其数据文件位置)
vim /etc/named.rfc1912.zones zone "xue.com" IN { #✨设置域名 正向解析xue.com区域 type master; #✨设置为主域名服务器 file "xue.com.zone"; #✨设置区域数据文件存放位置 allow-update { none; }; };
systemctl restart named
3.修改区域数据文件(记录域名与IP对应关系 主从域服务器设置)
复制一定要带上文件权限!这个文件的属主是named!不带权限复制会出错!
cd /var/named/ cp -p named.localhost xue.com.zone #保留源文件的权限和属主的属性复制 cp -a named.localhost xue.com.zone #-a 比-p功能更全 相当于组合选项
注意配置文件中域名后都有个 . 若缺少会导致失效!
vim /var/named/xue.com.zone $TTL 1D #有效解析记录的生存周期 1天 @ IN SOA @ mailbox.xue.com. ( #等同下条 @ IN SOA xue.com. admin.xue.com. ( #✨邮箱(管理员地址)为admin@xue.com 但是@指代当前域名,用 . 代替 #“@"符号表示当前的DNS区域名,如果仅是正向解析不用改,可用xue.com.替代 #SOA用于同步主从服务器区域数据 #mailbox.xue.com为域名的邮箱名 #此段只需要关注serial序列号主从不能一样,其他一般默认 20230419 ; serial #✨更新序列号,可以是 10 位以内的整数,主从不能一样 1D ; refresh #刷新时间,重新下载地址数据的间隔,1天 1H ; retry #重试延时,下载失败后的重试间隔 1小时 1W ; expire #失效时间,超过该时间仍无法下载则放弃 1周 3H ) ; minimum #无效解析记录的生存周期 3小时 NS @ #与下一条同义,@代表当前域名 NS xue.com. #✨记录当前区域的DNS服务器的名称 A 192.168.80.101 #✨记录主机IPv4地址 #AAAA ::1 #记录主机IPv6地址,此处不用ipv6,注释掉 IN MX 10 mail.xue.com. #Mx为邮件交换记录,数字越大优先级越低,通过域名找到邮件服务器 www IN A 192.168.80.33 #✨IN A代表正向解析 记录www.xue.com对应的IP mail IN A 192.168.80.66 #✨IN A代表正向解析 记录mail.xue.com对应的IP ftp IN CNAME www #✨CNAME使用别名,ftp是www的别名,解析为www相同IP * IN A 192.168.80.222 #✨泛域名解析,*代表任意主机名,除了上方设置的以外的主机名全部解析为此IP
注意@位置,可以填域名也可以用@指代
启动DNS服务
systemctl start named #软件名为bind,服务名为named netstat -lntup | grep :53 #验证端口
journalctl -xe vim /var/log/messages #按 G 到底 #若报错查看日志
关闭防火墙
systemctl stop firewalld setenforce 0
修改客户机DNS服务器地址
客户机DNS服务器地址为刚刚配置的地址
vim /etc/resolv.conf #DNS配置文件中指定服务器地址 nameserver 192.168.80.101
DNS配置文件路径vim /etc/resolv.conf (面试会问)
验证
此时成功获取到刚刚设置的域名与ip映射关系
配置反向解析(很少用到 了解即可)
1.修改主配置文件(刚刚已经修改过)
2.修改区域配置文件(修改需要解析的网段和其数据文件位置)
vim /etc/named.rfc1912.zones zone "80.168.192.in-addr.arpa" IN { #只需要写网段 不需要写主机 倒序 type master; file "xue.com.local"; allow-update { none; }; };
systemctl restart named
3.修改区域数据文件(记录IP与域名对应关系 主从域服务器设置)
复制一定要带上文件权限!这个文件的属主是named!不带权限复制会出错!
cd /var/named/ cp -p named.localhost xue.com.local #保留源文件的权限和属主的属性复制 cp -a named.localhost xue.com.local #-a 比-p功能更全 相当于组合选项
注意配置文件中域名后都有个 . 若缺少会导致失效!
vim xue.com.local $TTL 1D @ IN SOA xue.com. admin.xue.com. ( #此处的@在反向解析时必须修改(正向解析可以不改) 20230419 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS xue.com. #域名 A 192.168.80.101 #域服务器地址(此处本机作为域服务器) 33 IN PTR www.xue.com. 66 IN PTR mail.xue.com. #与正向解析反着写。PTR:反向指针
重启DNS服务
systemctl restart named
关闭防火墙
systemctl stop firewalld setenforce 0
修改客户机DNS服务器地址
vim /etc/resolv.conf nameserver 192.168.80.101
验证
主从域服务器设置
主服务器 192.168.80.101
从服务器 192.168.80.102
验证客户机 192.168.80.103
1.修改主配置文件(主服务器已经设置 这里只需要设置从服务器)
注意格式!地址后要;并且加一个空格!!!
##########从服务器########## vim /etc/named.conf options { listen-on port 53 { any; }; #✨✨改了any 也可为192.168.80.102(本机) 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 { any; }; #✨✨改了any 也可为192.168.80.102(本机)
2.修改区域配置文件(主服务器要允许从服务器获取数据 从服务器填写主服务器地址)
##########主服务器########## vim /etc/named.rfc1912.zones zone "xue.com" IN { #✨设置域名 正向解析xue.com区域 type master; #✨设置为主域名服务器 file "xue.com.zone"; #✨设置区域数据文件存放位置 allow-transfer{ 192.168.80.102; }; #✨✨设置允许从服务器获取数据 }; zone "80.168.192.in-addr.arpa" IN { #✨只需要写网段 不需要写主机 倒序 type master; file "xue.com.local"; allow-transfer{ 192.168.80.102; }; #✨✨反向解析也设置允许从服务器获取数据 }; ##########从服务器########## vim /etc/named.rfc1912.zones zone "xue.com" IN { type slave; #✨✨设置从服务器 masters { 192.168.80.101; }; #✨✨设置主服务器地址 file "slaves/xue.com.zone"; }; zone "80.168.192.in-addr.arpa" IN { type slave; masters { 192.168.80.101; }; #✨✨设置反向解析 file "slaves/xue.com.local"; };
systemctl restart named
3.修改区域数据文件(主服务器已经设置过 从服务器无须设置自动同步)
关闭主服务器和从服务器防火墙
systemctl stop firewalld setenforce 0
修改客户机DNS服务器地址
客户机DNS服务器地址为刚刚配置的地址
##########192.168.80.103验证客户端########## vim /etc/resolv.conf #DNS配置文件中指定服务器地址 nameserver 192.168.80.101 #主 nameserver 192.168.80.102 #从
验证
关闭主服务器
#####主服务器##### systemctl stop named
此时解析全部走从服务器
补充: 默认域名
/etc/resolv.conf ——search
vim /etc/resolv.conf search xue.com
此时只需要输入主机名(www、ftp)即可补全后面的域名