任务背景
公司内网中需要通过域名访问到开发的web应用。获得更好的访问体 验。故需要在内网中搭建DNS服务器解析域名,开发、测试、运维人员。可 以通过内网DNS服务,访问到公司内部应用。
任务要求
自建dns服务器 解析内网域名,能够访问内网web应用 www.yuanyu.zhangmin 解析到服务器IP
任务拆解
搭建DNS服务 客户端配置DNS服务地址
DNS服务的作用:
DNS(Domain Name System,域名系统)服务在互联网中扮演着至关重要的角色。它的主要作用是将人类可读的域名(如 www.example.com)转换成机器可读的IP地址(如 192.0.2.1)。这个过程对于互联网的顺畅运行和用户的方便访问至关重要,因为它简化了网络地址的识别和记忆。具体来说,DNS服务的作用可以归纳为以下几点:
地址解析:当用户尝试访问一个网站时,他们通常是通过输入一个域名来完成的。然而,计算机之间的通信是基于IP地址进行的。DNS服务器能够将这个域名转换(或解析)成对应的IP地址,从而使计算机能够正确地找到并访问目标服务器。
负载均衡:通过DNS,网站管理员可以配置多个IP地址对应于同一个域名。当DNS服务器收到域名解析请求时,它可以根据策略(如轮询、基于地理位置等)返回不同的IP地址。这种方式可以实现负载均衡,将用户分散到不同的服务器上,从而提高网站的访问速度和可靠性。
邮件路由:除了Web访问外,DNS还用于电子邮件的发送和接收。它能够将电子邮件地址中的域名部分转换成对应的邮件交换(MX)记录,这些记录指示了哪些服务器负责处理发送到该域名的电子邮件。
增强安全性:通过DNSSEC(DNS Security Extensions,DNS安全扩展),DNS可以提供对DNS查询和响应的加密和验证,从而保护DNS数据免受篡改和欺骗性攻击(如DNS缓存投毒)。
内容分发网络(CDN)支持:CDN通过在全球各地部署多个服务器来加速内容的分发。DNS可以将用户的请求解析到离他们最近或负载最低的CDN节点,从而加快内容的加载速度。
别名(CNAME)记录:DNS允许使用别名记录来将一个域名映射到另一个域名。这可以用于多种场景,如将子域名映射到另一个服务或网站,或者为了品牌保护而将多个域名指向同一个网站。
反向DNS解析:虽然不常用于日常的网络访问,但反向DNS解析(PTR记录)可以将IP地址解析回域名。这主要用于邮件服务器验证和日志分析等场景。
综上所述,DNS服务是互联网基础设施中的关键组成部分,它使得用户能够方便、快捷地访问互联网上的各种资源。
DNS的结构
DNS(Domain Name System,域名系统)的结构是一个树状层次结构,类似于一棵倒立的树,其中包含了多个层级的域名服务器和域名。以下是对DNS结构的详细解析:
一、域名结构
顶级域名(TLD):
位于树状结构的顶层,是域名的最后一部分,如.com、.net、.org、.cn等。顶级域名分为通用顶级域名(gTLD)和国家及地区顶级域名(ccTLD)。 通用顶级域名如.com、.net、.org等,是由ICANN(互联网名称与数字地址分配机构)管理的。 国家及地区顶级域名如.cn(中国)、.us(美国)、.uk(英国)等,通常代表不同的国家和地区。 二级域名:
位于顶级域名之前,是域名的倒数第二部分。例如,在域名baidu.com中,baidu就是二级域名。 子域名:
在二级域名之前的部分,统称为子域名。子域名可以有多级,如www.mail.example.com中,mail和www都是子域名。 完全合格域名(FQDN):
一个完整的域名,包括所有的子域名、二级域名和顶级域名,并以点(.)结尾。例如,http://www.example.com就是一个FQDN。
二、DNS服务器结构
DNS服务器也按照树状结构进行分布,每一层都设有相应的域名服务器,以管理和解析该层的域名。
根域名服务器:
位于树状结构的顶端,是最高层次的DNS服务器。根域名服务器知道所有顶级域名服务器的IP地址。 目前全球有13个根域名服务器,它们负责维护整个DNS系统的根区数据。 顶级域名服务器:
负责管理在该服务器注册的所有二级域名。当本地域名服务器无法解析某个域名时,它会向根域名服务器查询,然后获取对应的顶级域名服务器的IP地址,并向其发起解析请求。 权威域名服务器:
在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。权威域名服务器存储了关于其管辖区域内域名的详细记录。 本地域名服务器(也称为递归解析服务器或Local DNS):
并不属于树状结构的DNS域名服务器,但它在DNS系统中起着至关重要的作用。当客户端发起DNS请求时,首先会将请求发送给本地域名服务器。本地域名服务器会尝试在自己的缓存中查找解析结果,如果找不到,则会向根域名服务器发起递归查询,直到找到对应的权威域名服务器并获取解析结果。
三、DNS解析流程
DNS解析过程是自顶向下进行的,具体流程如下:
用户在浏览器输入一个域名,并请求本地域名服务器进行解析。 本地域名服务器首先在自己的缓存中查找解析结果,如果找到则直接返回给用户。 如果本地域名服务器缓存中没有解析结果,它会向根域名服务器发起查询请求。 根域名服务器返回下一级顶级域名服务器的IP地址给本地域名服务器。 本地域名服务器向顶级域名服务器发起解析请求。 顶级域名服务器返回下一级权威域名服务器的IP地址给本地域名服务器。 本地域名服务器向权威域名服务器发起查询请求。 权威域名服务器返回域名对应的IP地址给本地域名服务器。 本地域名服务器将查询到的结果响应给浏览器,并在自身缓存一段时间以便后续查询。
综上所述,DNS的结构是一个复杂的树状层次结构,由多个层级的域名和域名服务器组成。这种结构使得DNS系统能够高效地管理和解析互联网上的域名。
DNS的工作原理:
查询方式
1.递归查询,逐级查询,一次到位,但是速度慢
2.迭代查询,多次查询一个地址,可以缓存
下载yum -y install bind -utils.x86-64
进行解析
解析.com
解析baidu.com
解析www.baidu.com
DNS服务搭建
环境准备
bind软件
setenforce 0
vim /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
安装bind软件
yum search bind
[root@dns ~]# yum -y install bind
安装可以使用rpm -ql是否安装
find查询文件
[root@dns ~]# rpm -qa|grep bind
bind-libs-9.11.4-26.P2.el7_9.16.x86_64
bind-9.11.4-26.P2.el7_9.16.x86_64
bind-libs-lite-9.11.4-26.P2.el7_9.16.x86_64
bind-export-libs-9.11.4-26.P2.el7_9.16.x86_64
bind-license-9.11.4-26.P2.el7_9.16.noarch
查看配置文件
[root@dns ~]# rpm -ql bind
/etc/logrotate.d/named
/etc/named
# 配置文件
/etc/named.conf
/etc/named.iscdlv.key
# 定义区域文件 正向和负向解析
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/rwtab.d/named
/etc/sysconfig/named/run/named
/usr/bin/arpaname
/usr/bin/named-rrchecker
/usr/lib/python2.7/site-packages/isc
/usr/lib/python2.7/site-packages/isc-2.0-py2.7.egg-info
/usr/lib/python2.7/site-packages/isc/__init__.py
/usr/lib/python2.7/site-packages/isc/__init__.pyc
/usr/lib/python2.7/site-packages/isc/__init__.pyo
/usr/lib/python2.7/site-packages/isc/checkds.py
/usr/lib/python2.7/site-packages/isc/checkds.pyc
/usr/lib/python2.7/site-packages/isc/checkds.pyo
/usr/lib/python2.7/site-packages/isc/coverage.py
#可执行文件
/usr/sbin/named
/usr/sbin/named-checkconf
/usr/sbin/named-checkzone
/usr/sbin/named-compilezone
/usr/sbin/named-journalp
# 日志文件
/var/log/named.log
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca
/var/named/named.empty/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves
启动服务
systemctl start named
/etc/named.conf
主要配置访问权限控制
配置哪些主机可以访问dns服务器
/etc/named.rfc1912.zones
主要定义域名如何解析,正向解析,解析到具体的ip地址
备份文件
[root@dns ~]# cp /etc/named.conf /etc/named.conf.bak
[root@dns ~]# cp /etc/named.rfc1912.zones
/etc/named.rfc1912.zones.bak
[root@dns ~]# ls -l /etc/named*
-rw-r----- 1 root named 1806 6月 11 22:41 /etc/named.conf
-rw-r----- 1 root root 1806 7月 23 00:19
/etc/named.conf.bak
-rw-r--r-- 1 root named 3923 6月 11 22:41
/etc/named.iscdlv.key
-rw-r----- 1 root named 931 6月 21 2007
/etc/named.rfc1912.zones
-rw-r----- 1 root root 931 7月 23 00:19
/etc/named.rfc1912.zones.bak
-rw-r--r-- 1 root named 1886 4月 13 2017
/etc/named.root.key
DNS正向解析详细过程
配置主配置文件named.conf
添加any,所有主机都可以访问
[root@dns ~]# vim /etc/named.conf
options {
# 允许任何主机访问
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文件
[root@dns ~]# vim /etc/named.rfc1912.zones
# 显示行
:set nu
# 复制内容
:19,23 co 42
42
43 zone "yuanyu.zhangmin" IN {
44 type master;
45 file "yuanyu.zhangmin.zone";
46 allow-update { none; };
47 };-p 保持文件原属性赋值
编辑域名文件
vim yuanyu.zhangmin.zone
zone文件格式说明
www.baidu.com
查询方式
递归
www.baidu.com.
迭代
缓存
一次递归,多次迭代
检查文件
/etc/named.conf和zone文件
启动dns服务
[root@dns named]# named-checkconf /etc/named.conf
[root@dns named]# named-checkconf /etc/named.rfc1912.zones
[root@dns named]#
[root@dns named]# named-checkzone yuanyu.zhangmin.zone
yuanyu.zhangmin.zone
zone yuanyu.zhangmin.zone/IN: loaded serial 0
OK
[root@dns named]# systemctl start named
[root@dns named]#
[root@dns named]# netstat -lnput|grep named
web服务部署yum -y install nginx
客户端进行DNS测试
添加dns服务器
临时
echo "nameserver 10.1.1.11" > /etc/resole.conf
永久
检测域名是否正确
[root@web ~]# echo "nameserver 10.1.1.11" >
/etc/resolv.conf
[root@web ~]#
#临时添加,重启network就还原了
[root@web ~]# vim /etc/sysconfig/network-scripts/ifcfg
ens33
# 添加dns服务就可以了
DNS:10.1.1.11
[root@web ~]# ping www.yuanyu.zhangmin
PING www.yuanyu.zhangmin (10.1.1.12) 56(84) bytes of data.
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=1
ttl=64 time=0.011 ms
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=2
ttl=64 time=0.026 ms
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=3
ttl=64 time=0.022 ms
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=4
ttl=64 time=0.043 ms64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=5
ttl=64 time=0.022 ms
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=6
ttl=64 time=0.015 ms
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=7
ttl=64 time=0.022 ms
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=8
ttl=64 time=0.021 ms
64 bytes from web.yuanyu.zhangmin (10.1.1.12): icmp_seq=9
ttl=64 time=0.022 ms
^C
--- www.yuanyu.zhangmin ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time
8007ms
rtt min/avg/max/mdev = 0.011/0.022/0.043/0.010 ms
[root@web ~]#
curl www.yuanyu.zhangmin
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<title>Welcome to CentOS</title>
<style rel="stylesheet" type="text/css">
[root@web ~]# yum -y install elinks.x86_64