前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DNS域名原理介绍

DNS域名原理介绍

作者头像
人不走空
发布2024-03-24 09:55:13
780
发布2024-03-24 09:55:13
举报
文章被收录于专栏:学习与分享学习与分享

.DNS 介绍

1.1什么是域名?

域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。具有独一无二,不可重复的特性。

1.2什么是 DNS?

域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。

域名的解析工作由DNS服务器完成。可以理解为DNS就是翻译官。

正向解析:域名 --> IP 地址 反向解析:IP 地址 --> 域名

1.3域名的组成和分类

常见格式:www.baidu.com 完整格式:www.baidu.com.

  • . 根域,可省略不写
  • com 顶级域,由ICANN组织指定和管理
    • 国家地区域名:cn(中国)、hk(香港)、sg(新加坡)等
    • 通用顶级域名:com(商业机构)、org(非营利组织)、edu(教育机构)等
    • 新通用顶级域名:red(红色、热情)、top(顶级、高端)等
  • baidu 二级域(注册域),可由个人或组织申请注册
  • www 三级域(子域),服务器网站名代表
  • 主机名:s1.www.baidu.com.中的s1就是主机名,一般用来表示具体某一台主机

拓展:com.cn属于“二级域名”,是cn顶级域的子域

2.域名解析过程

如客户机发起查询请求

www.kernel.org

1.客户机首先查看查找本地hosts文件,如果有则返回,否则进行下一步 2.客户机查看本地缓存,是否存在本条目的缓存,如果有则直接返回,否则进行下一步。 3.将请求转发给指向的 DNS 服务器。 4.查看域名是否本地解析,是则本地解析返回,否则进行下一步。 5.本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步。 6.向全球13个根域服务器发起DNS请求,根域返回org域的地址列表。 7.使用某一个 org 域的 IP 地址,发起 DNS 请求,org 域返回 kernel 域服务器地址列表。 8.用某一个kernel域IP地址,发起DNS请求,kernel域返回www.kernel.org主机的IP地址,本地 DNS 服务收到后,返回给客户机,并在本地 DNS 服务器保存一份。

3.DNS 软件信息

软件名称:bind

服务名称:named

软件端口:

UDP 53 数据通信(域名解析)

TCP 53 数据同步(主从同步)

配置文件:

  • 主配置文件:/etc/named.conf(服务器运行参数)

options { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; #设置服务器监听网卡(可以写具体某一个IP,也可以写成any) 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; }; #设置可以访问服务器的客户端IP(可用any)

  • 区域配置文件:/etc/named.rfc1912.zones(服务器解析的区域配置,正反向区域定义信息)

zone "localhost.localdomain" IN { #正向区域配置文件标签,修改为要解析的域 type master; #DNS服务器类型(master/slave) file "named.localhost"; #正向数据配置文件名称(默认保存在/var/name/下) allow-update { none; }; #允许数据更新的列表(填写IP地址) }; zone "1.0.0.127.in-addr.arpa" IN { # 反向区域配置文件标签,仅修改IP位置,并且将IP反写例如:0.168.192.in-addr.arpa type master; file "named.loopback"; allow-update { none; }; };

  • 数据配置文件:/var/named/xx.xx(主机名和IP地址的对应解析关系,及主从同步信息)
代码语言:javascript
复制

$TTL 1D #域名有效解析生存周期(一般指缓存时间) @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ #设置DNS服务器的域名 A 127.0.0.1 #IPv4的域名IP解析记录 AAAA ::1 #IPv6的 域名IP解析记录 ~ # @: 域名有效解析生存周期(一般指缓存时间) # SOA:SOA标记(起始授权机构的资源记录,描述了域名的管理品 电子邮件地址 和一此时间参数 #serial 配置文件修改版本(如:20190826) #refresh 更新频率(从向主的查询周期) # retry 更新失败的重试时间周期 # expire 无法更新时的失效周期 #minimum 缓存服务器无法更新时的失效时间

记录类型:

A:

地址记录,用来指定域名的IPv4地址的记录

CNAME:

将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录

TXT:

可填写任何东西,长度限制255.绝大多数的TXT记录是用来做SPF的(反垃圾邮件)

NS:

域名服务器记录,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录。

AAAA:

地址记录,用来指定域名的IPv6地址的记录

MX:

邮件交换记录,如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录。

DNS 实验搭建

4.1 DNS服务搭建

先关闭服务器和客户机上的防火墙和SELinux

1.软件安装
代码语言:javascript
复制

yum install bind -y

2.配置主配置文件(/etc/named.conf)
代码语言:javascript
复制

options { listen-on port 53 { any; }; #监听网卡改为any listen-on-v6 port 53 { any; }; 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

3.配置区域文件(/etc/named.rfc1912.zones)

注:先对区域文件进行备份,删除多余的模板,只留下一个正向和一个反向(反向修改时,网络位的反写格式,如192.168.100.20 -> 100.168.192.)

代码语言:text
复制
zone "ajaj.com" IN {
 type master;
 file "ajaj.localhost"; #自定义正向解析文件名
 allow-update { none; };
 };



 zone "100.168.192.in-addr.arpa" IN {
 type master;
 file "ajaj.loopback"; # 自定义反向解析文件名
 allow-update { none; };
 };

4.配置数据文件/var/named/

A. 先复制生成正向解析文件和反向解析文件

代码语言:text
复制
cp -a named.localhost ajaj.localhost
 cp -a named.loopback ajaj.loopback

B. 编辑正向解析文件(注意域名结尾的“.”)

代码语言:text
复制
vim ajaj.localhost
 $TTL 1D
 @ IN SOA ajaj.com. rname.invalid. (
 0 ; serial
 1D ; refresh
 1H ; retry
 1W ; expire
 3H ) ; minimum
 NS dns.ajaj.com.
 dns A 192.168.100.20
 www A 192.168.100.21

C.编辑反向解析文件(注意域名结尾的".")

代码语言:text
复制
vim ajaj.loopback
 $TTL 1D
 @ IN SOA ajaj.com. rname.invalid. (
 0 ; serial
 1D ; refresh
 1H ; retry
 1W ; expire
 3H ) ; minimum
 NS dns.ajaj.com.
 20 PTR dns.ajaj.com.
 21 PTR www.ajaj.com.

5.重启DNS服务
代码语言:text
复制
systemctl restart named
6.客户端测试

在网卡配置文件中添加 DNS 服务器的地址,然后用 nslookup 测试。

代码语言:text
复制
[root@localhost ~]# nslookup www.ajaj.com
 Server: 192.168.100.20
 Address: 192.168.100.20#53

 Name: www.ajaj.com
 Address: 192.168.100.21

4.2 DNS主从

实验目的: 减轻主服务器的压力 先关闭服务器和客户机上的防火墙和SELinux

实验准备: 一台主服务器、一台从服务器、一台测试机

搭建过程:

1.搭建主服务器步骤

安装 bind 软件

代码语言:text
复制
yum install bind -y

主配置文件的修改

代码语言:text
复制
options {
 listen-on port 53 { any; };
 listen-on-v6 port 53 { any; };
 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; };

区域配置文件的修改

代码语言:text
复制
zone "ajaj.com" IN {
 type master;
 file "ajaj.localhost";
 allow-update { 192.168.100.21; };
 };



 zone "100.168.192.in-addr.arpa" IN {
 type master;
 file "ajaj.loopback";
 allow-update { 192.168.100.21; };
 };
 

主 DNS 的区域配置文件中 allow-updata 参数添加从服务器 IP 地址。

配置数据文件

代码语言:text
复制
cp -a named.localhost ajaj.localhost
 cp -a named.loopback ajaj.loopback

正向数据文件

代码语言:text
复制
vim ajaj.localhost
 $TTL 1D
 @ IN SOA ajaj.com. rname.invalid. (
 0 ; serial
 1D ; refresh
 1H ; retry
 1W ; expire
 3H ) ; minimum
 NS dns.ajaj.com.
 dns A 192.168.100.20
 www A 192.168.100.23

反向数据文件

代码语言:text
复制
vim ajaj.loopback
 $TTL 1D
 @ IN SOA ajaj.com. rname.invalid. (
 0 ; serial
 1D ; refresh
 1H ; retry
 1W ; expire
 3H ) ; minimum
 NS dns.ajaj.com.
 20 PTR dns.ajaj.com.
 23 PTR www.ajaj.com.

启动 named 服务

代码语言:text
复制
systemctl start named

4.搭建从服务器步骤:

安装 bind 软件

代码语言:text
复制
yum install bind -y

修改主配置文件

代码语言:text
复制
vim /etc/named.conf

 options {
 listen-on port 53 { any; };
 listen-on-v6 port 53 { any; };
 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; };

配置区域文件

代码语言:text
复制
注意:从配置文件的类型需要修改为 slave,并且需要填写主服务器的地址
 zone "ajaj.com" IN {
 type slave;
 masters { 192.168.100.20; };
 file "slaves/ajaj.localhost";
 };



 zone "100.168.192.in-addr.arpa" IN {
 type slave;
 masters { 192.168.100.20; };
 file "slaves/ajaj.loopback";
 };
 文件保存位置修改为 file“slaves/atguigu.localhost”;

重启服务

代码语言:text
复制
systemctl start named

在测试机上填写从服务器的IP,并使用nslookup测试

代码语言:text
复制
nslookup www.ajaj.com
 Server: 192.168.100.21
 Address: 192.168.100.21#53

 Name: www.ajaj.com
 Address: 192.168.100.23

4.3DNS缓存服务器

先关闭服务器和客户机上的防火墙和SELinux

实验作用: 加快解析速度,提高工作效率

实验软件:

dnsmasq

配置文件:

代码语言:text
复制
/etc/dnsmasq.conf
 domain=域名
 #需要解析的域名
 server=ip
 #主 DNS 服务器 IP
 cache-size=15000
 #声明缓存条数

重启服务:

代码语言:text
复制
systemctl restart dnsmasq

测试效果:

在测试机上填写DNS 缓存服务器服务器的 ip 地址

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • .DNS 介绍
    • 1.1什么是域名?
      • 1.2什么是 DNS?
        • 1.3域名的组成和分类
        • 2.域名解析过程
        • 3.DNS 软件信息
        • DNS 实验搭建
          • 4.1 DNS服务搭建
            • 1.软件安装
            • 2.配置主配置文件(/etc/named.conf)
            • 3.配置区域文件(/etc/named.rfc1912.zones)
            • 4.配置数据文件/var/named/
            • 5.重启DNS服务
            • 6.客户端测试
          • 4.2 DNS主从
            • 1.搭建主服务器步骤
            • 4.搭建从服务器步骤:
          • 4.3DNS缓存服务器
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com