DNS服务搭建
-
了解什么是DNS
-
DNS运行原理
-
如何安装,配置DNS
DNS域名管理系统
公司内网中需要通过域名访问到开发的web应用,获得更好的访问体验。因此需要在内网中搭建DNS服务器解析域名,让开发、测试、运维人员可以通过内网DNS服务访问到公司内部应用。
任务背景
解析内网域名,能够访问内网web应用。把www.it.cluster解析到内网服务器IP
/etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=8.8.8.8 DNS2=114.114.114.114
DNS概述
DNS(Domain Name System)域名管理系统
域名:由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便地访问互联网,而不用记住能够被机器直接读取的IP地址。
==域名就是ip的别名,ip不好记忆==
==域名与ip的关系是否是一对一? 不是的,服务器可能都具备负载均衡的策略==
www.baidu.com www.google.com ping www.baidu.com -> 183.2.172.17
计算机通过IP地址进行互相访问。由于IP地址过于复杂,域名可以代替IP实现计算机的访问(高级/上层应用,底层还是IP地址)。
每个域名都会通过DNS服务器解析为对应的IP地址。
DNS的正向解析
将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机。
域名 --> IP(A记录)
DNS的反向解析
将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名。
IP --> 域名(PTR记录)
DNS的结构
域名:www.it.com DNS结构:www.it.com. -> 从右向左解析
www
- 这是主机名或特定的服务标识符。在这个例子中,“www”通常指代的是提供网站服务的主机。不过,这可以是任何东西,比如“mail”,“ftp”,或其他你想要命名的主机或服务。
it
- 这是二级域名(Second-Level Domain, SLD)。在许多情况下,这是用户自定义的部分,用来标识具体的组织、品牌或项目。
com
- 这是最顶级域名(Top-Level Domain, TLD)。它代表了域名的最高层级分类,常见的有
.com
(商业实体),.org
(非营利组织),.net
(网络服务提供商)。以及国家代码顶级域名如
.cn
(中国),.uk
(英国)等。
根域(.)
在整个DNS系统的最上方一定是:(小数点)这个DNS服务器(称为root),也叫"根域"。
根域全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个(位于英国和瑞典),亚洲1个(位于日本)。
一级域名(顶级域|国家域)
com、net、edu、gov、org、cc、iol、cn、uk、us、ru、ja、ko
-
.com:商业公司
-
.net:互联网公司
-
.edu:教育(中小学、高中、大学...)
-
.gov:政府
-
.io:存储设备,redis
-
.cn:中国域名(国家域)
二级域名(自己购买管理)
qq.com、baidu.com、google.com
域名机构
收费(新网|万网)
老牌免费域名:TK顶级域名、TK域名DNS、TK域名商
DNS工作原理
递归查询(Recursive Query)
查询过程:在递归查询中,客户端(如用户的计算机)向本地DNS服务器发送域名解析请求。
如果本地DNS服务器没有所需的DNS记录,它将代表客户端进行进一步的查询,直到找到目标记录或确定无法找到为止。
之后,它会将结果返回给客户端。
特点
-
客户端只需要发起一次请求,并等待最终的结果。
-
本地DNS服务器承担了更多的工作,因为它需要追踪整个查询过程。
-
更适合于普通用户,因为用户不需要关心复杂的查询流程。
适用场景:通常用于客户端与DNS服务器之间的交互。
迭代查询(Iterative Query)
查询过程:在迭代查询中,当客户端(通常是另一个DNS服务器)向另一台DNS服务器发出查询请求时,若该DNS服务器没有直接的答案,则不会为客户端继续查询其他DNS服务器。
相反,它会返回一个指向下一个应该被查询的DNS服务器的地址。
客户端随后需要自行向这个新的DNS服务器发起查询,这个过程可能会重复多次,直到获得最终的IP地址或确定找不到为止。
特点
-
客户端需要自己完成多次查询请求,直到得到最终答案。
-
每个DNS服务器只负责提供已知信息或指引到更合适的DNS服务器,负担较小。
-
更适合于DNS服务器之间的查询。
适用场景:通常用于DNS服务器间的通信,特别是根DNS服务器和顶级域(TLD)服务器之间的查询。
总结
-
客户端负担:递归查询中小,因为只需发起一次请求;迭代查询中较大,因为可能需要发起多个请求。
-
服务器负担:递归查询中较大,因为服务器要负责完整的查询过程;迭代查询中小,因为只需返回最佳查询点或主机地址。
-
实际应用:两者常常结合使用,在实际的DNS解析过程中,客户端通常首先发起递归查询给本地DNS服务器,而本地DNS服务器则通过一系列的迭代查询来完成解析过程。
DNS服务器的搭建
DNS服务器端软件
DNS的域名解析都是udp/53
主从之间的数据传输默认使用tcp/53
DNS服务器端软件:
Bind是一款开放源码的DNS服务器软件,由美国加州大学Berkeley(伯克利)分校开发和维护,全名为Berkeley Internet Name Domain。它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
DNS服务器搭建步骤
环境准备
IP | hostname | type |
---|---|---|
192.168.66.138 | dns-server | DNS服务 域名解析使用 |
192.168.66.143 | web-server | web服务 提供web业务访问 |
192.168.66.144 | client | 测试访问web服务 |
更改主机名称与IP地址
# hostnamectl set-hostname client.it.cn # hostnamectl set-hostname dns.it.cn # hostnamectl set-hostname web.it.cn # vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=none IPADDR=10.1.1.11 NETMASK=255.255.255.0 GATEWAY=10.1.1.2 # 更改UUID编号的后3位,必须是唯一的
使用MX进行连接
关闭防火墙与SELinux
# systemctl stop firewalld # systemctl disable firewalld # setenforce 0 # vim /etc/selinux/config SELINUX=disabled
配置YUM源(有网配置公网YUM源、无网就配置光盘或自建YUM源)
yum clean all yum makecache
安装DNS软件
DNS服务器:
# yum install bind -y
安装完毕后,可以使用rpm -q查询是否安装成功:
# rpm -q bind # rpm -ql bind # 日志轮转文件 /etc/logrotate.d/named # 配置文件目录 /etc/named # 主配置文件 /etc/named.conf # zone文件, 定义域 /etc/named.rfc1912.zones # 服务管理脚本 /usr/lib/systemd/system/named.service # 二进制程序文件 /usr/sbin/named # 检测配置文件 /usr/sbin/named-checkconf # 检测域文件 /usr/sbin/named-checkzone # 根域服务器 /var/named/named.ca # 正向解析区域文件模板 /var/named/named.localhost # 反向解析区域文件模板 /var/named/named.loopback # dns服务器下载文件的默认路径 /var/named/slaves # 进程pid /var/run/named
DNS正向解析配置(域名=>IP)
-
/etc/named.conf
主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器) -
/etc/named.rfc1912.zones
主要定义域名如何解析(正向解析),解析到具体哪个IP地址
对named.conf以及named.rfc1912.zones进行备份
cp /etc/named.conf /etc/named.conf.bak cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
named.conf主配置文件详解(访问权限控制)
vim /etc/named.conf
添加任何主机都可以访问的权限:
listen-on port 53 { 127.0.0.1; 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { localhost; any; };
zones子配置文件详解(域名应该指向哪个IP地址)
zone "localhost" IN {type master;file "named.localhost";allow-update { none; }; };
vim /etc/named.rfc1912.zones zone "it.cluster" IN {type master;file "it.cluster.zone";allow-update { none; }; };
在/var/named目录创建it.cluster.zone文件定义正向解析
cd /var/named cp -p /var/named/named.localhost /var/named/it.cluster.zone # 扩展:-p 代表复制文件时保留文件的原有属性
编辑it.cluster.zone文件,定义域名的指向
vim /var/named/it.cluster.zone
$TTL 1D @ IN SOA @ rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS @A 127.0.0.1AAAA ::1 www A 192.168.66.143
在这个DNS区域文件配置中,
www
是一个域名的标识符,通常用来指代网站的主机名。具体来说:
www
这一行表示一个A记录(Address Record),它将域名映射到一个IPv4地址。www.it.cluster.
(完整形式)指向了IP地址192.168.66.143
。当用户在浏览器中输入
www.it.cluster
时,DNS系统会解析这个名称,并返回对应的IP地址192.168.66.143
,从而使用户的浏览器能够找到并连接到托管在该IP地址上的网站服务器。
zone文件详解
# $TTL 缓存的生存周期 # @ = zonename = it.cluster 当前域名 # IN 互联网 # SOA 开始授权 # NS dns服务端 nameserver # A ipv4 # AAAA IPV6 # CNAME 别名 # MX 邮件交互记录 5 数字代表优先级 数字越小优先级越高 # 0 ; serial 更新序列号 # 1D ; refresh 更新间隔(从服务器下载数据) # 1H ; retry 失败重试 # 1W ; expire 区域文件的过期时间 # 3H ) ; minimum 缓存的最小生存周期 # D Day、H Hour、W week
检查named.conf与zones文件
named-checkconf /etc/named.conf named-checkconf # 检查 it.cluster.zone 文件 cd /var/named named-checkzone it.cluster it.cluster.zone
启动DNS服务(named)
systemctl restart named systemctl enable named netstat -tunlp | grep named
Web服务搭建
yum install httpd -y systemctl start httpd systemctl enable httpd echo 'DNS Test ...' > /var/www/html/index.html
测试DNS服务器的正向解析
Client:客户端服务器操作
添加DNS服务器
# 临时 # echo 'nameserver 192.168.66.138' > /etc/resolv.conf # 注:电脑重启,网络刷新restart network,VMware挂起,临时DNS都会失效 # 如果本机ip不行换成固定ip127.0.0.1的形式 # 永久添加 # vim /etc/sysconfig/network-scripts/ifcfg-ens33 DNS1=192.168.66.138 systemctl restart network
客户端默认会使用
/etc/resolv.conf
文件中配置的 DNS 服务器进行解析。[root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManager search localdomain nameserver 192.168.66.2 nameserver 192.168.66.138配置中的
search localdomain
可能导致客户端将www.it.cluster
解析为www.it.cluster.localdomain
,从而查询失败。
使用nslookup检测正向解析是否生效
nslookup www.it.cluster
使用elinks命令行浏览器或curl来实现访问
# yum install elinks -y # elinks http://www.it.cluster # curl http://www.it.cluster