部署搭建DNS服务器

article/2025/11/7 14:22:38

部署搭建DNS服务器

  • 域名服务器
    • DNS域名解析流程
    • 域名类型
  • DNS主服务器搭建
    • 正向解析配置
      • 配置正向区域数据文件
      • DNS服务器测试
    • 反向解析配置
      • 配置反向区域数据文件
      • DNS服务器测试
  • DNS从服务器搭建
    • 正向反向解析配置
    • DNS服务器测试

域名服务器

  • DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。
  • DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。
  • 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
  • 域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

DNS域名解析流程

在这里插入图片描述

  • 互联网上的每一台电脑都被分配一个IP地址,数据的传输实际上是在不同IP地址之间进行的。包括我们在家上网时使用的电脑,在连上网以后也被分配一个IP地址,这个IP地址绝大部分情况下是动态的。也就是说你关掉调制解调器,再重新打开上网,你的上网接入商会随机分配一个新的IP地址。
  • 网站服务器本质上也是一台连上网的电脑,只不过配置上更适合作为服务器,并且放在数据中心,保持低温,低尘环境,同时有安全保卫。这些服务器使用固定IP地址连入互联网。
  • 一个域名解析到某一台服务器上,并且把网页文件放到这台服务器上,用户的电脑才知道去哪一台服务器获取这个域名的网页信息。这是通过域名服务器来实现的。
  • 域名服务器DNS是英文Domain Name Server的缩写。每一个域名都至少要有两个DNS服务器,这样如果其中一个DNS服务器出现问题,另外一个也可以返回关于这个域名的数据。DNS服务器也可以有两个以上,但所有这些DNS服务器上的DNS记录都应该是相同的。
  • 在DNS服务器中保留有该域名的DNS记录,比如A记录,MX记录。A记录是用来指定主机名(或域名)对应的IP地址。MX记录用来解析域名的邮件服务器。在很多情况下。
  • 当一个浏览者在浏览器地址框中打入某一个域名,或者从其他网站点击了链接来到了这个域名,浏览器向这个用户的上网接入商发出域名请求,接入商的DNS服务器要查询域名数据库,看这个域名的DNS服务器是什么。然后到DNS服务器中抓取DNS记录,也就是获取这个域名指向哪一个IP地址。
  • 在获得这个IP信息后,接入商的服务器就去这个IP地址所对应的服务器上抓取网页内容,然后传输给发出请求的浏览器。

域名类型

  • 一是国际域名(international top-level domain-names,简称iTDs),也叫国际顶级域名。这也是使用最早也最广泛的域名。例如表示工商企业的 .com .top,表示网络提供商的.net,表示非盈利组织的.org等。
  • 二是国内域名,又称为国内顶级域名(national top-level domainnames,简称nTLDs),即按照国家的不同分配不同后缀,这些域名即为该国的国内顶级域名。200多个国家和地区都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等。

实验目的

  • 搭建DNS高速缓存服务器
  • 提供域名解析服务
# 实验环境
CentOS Linux release 7.5.1804 (Core)
# Linux主机作为DNS服务器, ip地址:192.168.100.20

DNS主服务器搭建

# 安装BIND,伯克利internet域名服务yum clean all              # 清除yum源的缓存
yum repolist               # 重载yum源
yum list | grep '^bind\.'  # 查询yum仓库是否有bind安装包
yum install bind* -y       # 安装bind服务# BIND 服务器端程序
主要执行程序:/usr/sbin/named
默认监听端口:53
主配置文件 /etc/named.conf
保存 DNS 解析记录的数据文件位于 /var/named/
# 配置主配置文件 /etc/named.confcp /etc/named.conf /etc/named.conf.backup       # 主配置文件备份
vim /etc/named.conf
options {                                       # 全局配置listen-on port 53 { 192.168.100.20; };  # 监听53号端口,ip地址使用提供服务的本地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/name/data/named_mem_stats.txt";#内存统计文件的位置allow-query     { any; };           #允许使用本解析服务的网段,可以使用any允许所有zone "." IN {                               #正向解析“.”根区域type hint;                          #类型为根区域file "named.ca";              #区域数据文件为named.ca,记录13台根域服务器的域名和IP地址等信息
};
include "/etc/named.rfc1912.zones";  #包含区域配置文件里的所有配置
include "/etc/named.root.key";# 查看A记录映射关系表
cat /var/named/named.ca

在这里插入图片描述

# 修改区域配置文件,添加正向解析配置
vim /etc/named.rfc1912.zones# 文件有模板 可以复制粘贴后进行修改

正向解析配置

# 在文件中添加如下几行
zone "pakho.com" IN {         # 正向解析为“pakho.com”type master;          # 类型:主缓存 masterfile "pakho.zone"     # 指定区域数据文件为pakho.zone
};

配置正向区域数据文件

# 复制主配置文件
cp -p /var/named/named.empty  /var/named/pakho.zone 
# 保留源文件的权限和属主的属性复制
# 检查是否复制完成 拷贝文件是否具有属主属性

在这里插入图片描述

# 配置正向区域数据文件
vim /var/named/pakho.zone           #进入配置文件
$TTL 3H                             #有效解析记录的生成周期
@       IN SOA  pakho.com. admin.pakho.com. (#@表示当前的DNS区域名表示这个域名  SOA表示授权信息开启 后面表示邮件地址因为@有特殊含义 所以使用.代替   0       ; serial   #更新序列号,可以是10以内的整数1D      ; refresh  #刷新时间,重新下载地址数据的间隔1H      ; retry    #重试延迟,下载失败后的重试延迟1W      ; expire   #失效时间,超过该时间仍无法下载则放弃3H )    ; minimum  #无效解析记录的生存周期@       IN      NS      ns1.pakho.com. #记录当前区域DNS服务器的名称IN      MX 10   ns1.pakho.com. #MX为邮件服务器 10表示优先级 数字越大优先级越低
ns1     IN      A       192.168.100.20 #记录正向解析域名对应的IP,即将域名与IP绑捆
ftp     IN      A       192.168.100.20
sam     IN      A       192.168.100.20#"@"这里是一个变量,表示当前DNS区域
#SOA标记用于同步主从服务器的区域数据,如更新序列号相同则不会更新
#“pakho.com.”此为完全合格域名(FQDN),后面有个“.”不能漏掉
#“admin.pakho.com.”表示管理员邮箱,这里的@是变量,所以用“.”代替
hostnamectl set-hostname ns1.pakho.com. # 修改主机名 更改主机名后重新登录

在这里插入图片描述
常见域名解析类型:

  • A地址(Address):记录正向解析条目,域名指向IPV4地址
  • AAAA:域名指向IPV6地址
  • NS域名服务器(Name Server):记录当前区域的DNS服务器的主机地址
  • MX邮件交换(Mail Exchange):记录当前区域的邮件服务器的主机地址,数字10表示(当有多个MX记录时)选择邮件服务器的优先级,数字越大优先级越低
  • CNAME别名(Canonical Name):记录某一个正向解析条目的其他名称
  • SRV:记录特定服务的服务器
  • TXT:文本长度512 通常做反垃圾邮件
  • CAA:CA证书颁发机构授权校验
# 配置文件语法检查工具
named-checkconf -z /etc/named.conf# 仅检查语法不检查逻辑关系
# 当显示的全为0时表示没有语法错误

在这里插入图片描述

# 启动DNS服务器服务,关闭防火墙
rpm -ql bind                                    # 查看一下BIND服务名称
systemctl start named && systemctl enable named # 启动服务 设置为开机自启动
systemctl stop firewalld                        # 关闭防火墙# 此时查看端口发现53号端口正在监听

在这里插入图片描述

DNS服务器测试

windows10测试

  • 如下配置网络 网关为虚拟机网关 DNS服务器为Linux服务器

在这里插入图片描述

  • 解析成功

在这里插入图片描述

Linux测试

# 使用一台全新的Linux作为测试机
vim /etc/sysconfig/network-scripts/ifcfg-ens32  #进入网卡配置
DNS1="192.168.100.20" #将DNS服务器修改为192.168.100.20 对应我们搭建的DNS服务器# 中间省略部分配置
ifdown ens32;ifup ens32   #重启网卡# ping一个A记录存在的地址
# 返回是192.168.100.20 表示本地DNS进行的解析

在这里插入图片描述
工作原理:

  • 查找本地hosts文件
  • 没有的话找dns服务器,dns先查找本地缓存,有的话返回
  • 没有的话查找根域,做迭代递归查询

ping 一个A记录不存在的地址

在这里插入图片描述

使用nslookup进行测试

# 测试服务器安装nslookup
[yum clean all             # 防止出现乱码先清空yum缓存
yum repolist               # 刷新yum仓库
yum install bind-utils -y  # 下载nslookup

通过nslookup解析

# 测试一:解析本地缓存不存在的地址
nslookup www.baidu.com
Server:         192.168.100.20      #DNS服务器
Address:        192.168.100.20#53   #地址加端口号Non-authoritative answer:           #发现本地没有这个地址于是解析到了公网
www.baidu.com   canonical name = www.a.shifen.com. 
Name:   www.a.shifen.com
Address: 14.215.177.39
Name:   www.a.shifen.com
Address: 14.215.177.38
# 测试二:解析本地缓存存在的地址
nslookup ftp.pakho.com
Server:         192.168.100.20
Address:        192.168.100.20#53Name:   ftp.pakho.com         #发现本地缓存存在这个地址于是解析到了本地
Address: 192.168.100.20

反向解析配置

基于刚才的配置进行反向解析配置

# 修改区域配置文件,添加反向解析配置  
vim /etc/named.rfc1912.zones                  #进入配置文件
zone "100.168.192.in-addr.arpa" IN {          #添加反向解析配置type master;file "pakho.com.arpa";                #区域配置文件为pakho.com.arpa
};

配置反向区域数据文件

# 复制主配置文件
cp -p /var/named/named.localhost  /var/named/pakho.com.arpa
# 保留源文件的权限和属主的属性复制
# 检查是否复制完成 拷贝文件是否具有属主属性

在这里插入图片描述

# 配置反向区域数据文件
vim /var/named/pakho.com.arpa  #进入配置文件
$TTL 1D
@       IN SOA  pakho.com. admin.pakho.com. (0       ; serial     #更新序列号,可以是10以内的整数1D      ; refresh    #刷新时间,重新下载地址数据的间隔1H      ; retry      #重试延迟,下载失败后的重试延迟1W      ; expire     #失效时间,超过该时间仍无法下载则放弃3H )    ; minimum    #无效解析记录的生存周期IN      NS      ns1.pakho.com.
20      IN      PTR     ns1.pakho.com. 
20      IN      PTR     ftp.pakho.com.
20      IN      PTR     sam.pakho.com.  #前面的数字需要改成你该服务器网段最后的IP地址#我的是192.168.100.20 就改成了20systemctl restart  named  #重启服务

DNS服务器测试

验证

  • windows10验证

在这里插入图片描述

# Linux验证
nslookup 192.168.100.20   #使用nslookup验证 反向解析成功
20.100.168.192.in-addr.arpa     name = sam.pakho.com.
20.100.168.192.in-addr.arpa     name = ns1.pakho.com.
20.100.168.192.in-addr.arpa     name = ftp.pakho.com.

DNS从服务器搭建

准备工作

  • 开启另一台服务器
  • IP地址配置和主服务器同一网段
yum install bind* -y

配置主配置文件

  • 主配置文件 /etc/named.conf
  • 添加标红一行 对应的是从服务器的IP地址

在这里插入图片描述

# 从服务器的主配置cp /etc/named.conf /etc/named.conf.backup       # 主配置文件备份
vim /etc/named.conf                             # 进入主配置文件
options {listen-on port 53 { 192.168.100.21; };  # 设置监听端口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; };               # 所有者可访问,这里可以是网段也可以是IP

正向反向解析配置

# 修改区域配置文件,添加正&反向解析配置vim /etc/named.rfc1912.zones #进入配置文件
zone "pakho.com" IN {                      #正向解析文件type slave;                        #类型为slave  file "slaves/pakho.zone";masters {192.168.100.20;};          #定义一个masters 为主服务器的ip地址
};
zone "100.168.192.in-addr.arpa" IN {       #反向解析文件type slave;						   #类型为slavefile "slaves/pakho.com.arpa";masters {192.168.100.20;};          #定义一个masters 为主服务器的ip地址    
};
# 配置网络
# 开启一台虚拟机进入网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-ens32  #配置网卡
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="6b9e423d-c32d-4074-8b6f-f6c4e47a6f9b"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.100.10"
PREFIX="24"
GATEWAY="192.168.100.2"
IPV6_PRIVACY="no"
DNS1="192.168.100.21"                           # 将DNS设置为从服务器地址 systemctl restart network   # 重启网络systemctl restart named     # 重启DNS服务

DNS服务器测试

通过nslookup解析测试

  • 回到客户端测试
# 测试一:解析本地缓存不存在的地址
nslookup www.baidu.com
Server:         192.168.100.21
Address:        192.168.100.21#53Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 14.215.177.38
Name:   www.a.shifen.com
Address: 14.215.177.39
# 测试二:解析本地缓存存在的地址
nslookup ftp.pakho.com
Server:         192.168.100.21
Address:        192.168.100.21#53     #本地服务器为192.168.100.21端口为53Name:   ftp.pakho.com
Address: 192.168.100.20               #解析到主服务器成功
# 测试三:从服务器反向解析
nslookup 192.168.100.20   #从服务器反向解析成功
20.100.168.192.in-addr.arpa     name = ns1.pakho.com.
20.100.168.192.in-addr.arpa     name = sam.pakho.com.
20.100.168.192.in-addr.arpa     name = ftp.pakho.com.

http://chatgpt.dhexx.cn/article/j2QWbu7L.shtml

相关文章

智能DNS服务器搭建

前期准备 查看IP [rootlocalhost ~]# ip a | grep ens 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 192.168.200.111/24 brd 192.168.200.255 scope global ens32 3: ens34: <BROADCAST,MULTICAST…

DNS:快速搭建公司内网DNS解析服务器

背景 是这样的&#xff0c;公司办公室有小机房&#xff0c;研发测试开发环境在这&#xff0c;但是CTO吧&#xff0c;觉得测试环境通过ip访问太复杂&#xff0c;难记&#xff0c;通过黄页打开觉得太low&#xff0c;虽然办公室出口也有公网ip&#xff0c;直接可以解析进来&#…

DNS搭建

环境 server1&#xff1a;bigpeng1 IP&#xff1a;172.25.1.101 GW&#xff1a;172.25.1.1 DNS&#xff1a;172.25.1.101 server2&#xff1a;bigpeng2 IP&#xff1a;172.25.1.102 GW&#xff1a;172.25.1.1 DNS&#xff1a;172.25.1.101 client&…

基于bind的DNS服务器搭建

文章目录 域名分类域名解析顺序搭建DNS服务器 域名分类 国家域名可分为顶级域名、二级域名&#xff0c;三级域名。 按管理机构的不同分为.com、.net、.org、.cc 、.tv等根域为后缀的域名 缓存域名服务器&#xff1a;通过向其他域名服务器查询获得域名解析记录&#xff0c;将查…

DNS服务器的原理及搭建

文章目录 原理搭建DNS服务器正向解析 原理 DNS&#xff08;Domain Name System&#xff09;是互联网上的一项服务&#xff0c;它作为将 域名 和 IP 地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。 想要了解域名&#xff08;Domain Name&#xff09;…

简述DNS原理,搭建主-辅服务器,搭建智能DNS

文章目录 一、DNS是什么二、DNS的域名解析过程三、搭建主辅DNS服务器1.设置主DNS服务器2.设置辅DNS服务器 四、访问控制&#xff0c;子域授权五、使用bind搭建智能DNS 一、DNS是什么 DNS(Domain Name Service的缩写)的作用就是根据域名查出IP地址。IP地址是由32位二进制数字组…

搭建DNS服务器实现域名解析

一、DNS服务的概述 1、DNS概述 DNS&#xff08;Domain Name System&#xff09;域名系统&#xff0c;在TCP/IP 网络中有非常重要的地位&#xff0c;能够提供域名与IP地址的解析服务&#xff0c;而不用去记住能够被机器直接读取的IP数串。 通过域名&#xff0c;最终得到该域名对…

DNS智能解析的搭建与配置

分类&#xff1a; LINUX 原文地址&#xff1a;DNS智能解析的搭建与配置 作者&#xff1a;十年梦生 9月份整整忙了一个月&#xff0c;都抽不出时间来写篇文章&#xff0c;这几天趁着10.1终于有时间来写些东西了&#xff0c;将9月份所做的一些东西来做下总结。 今天先写个DNS智能…

基于bind搭建智能dns

题目要求 1.step 1 : 搭建bind服务器&#xff0c;完成对域名 bs.你的名字.org 配置 2.step 2&#xff1a;完成对出口ip的归属地查询 3.step 3&#xff1a;构建归属地acl&#xff0c;完成对不同主机匹配智能解析 4.step 4&#xff1a;利用dig&#xff08;加trace参数&#xff0…

实现智能DNS

文章目录 1 实现智能DNS1.1 GSLB1.2 CDN(Content Delivery Network)内容分发网络1.2.1 CDN工作原理1.3 智能DNS相关技术1.3.1 bind中ACL1.3.2 bind有四个内置的acl1.3.3 访问控制的指令1.3.4 view视图1.3.4.1 view&#xff1a;视图&#xff0c;将ACL和区域数据库实现对应关系&a…

bind搭建智能DNS

小生不才&#xff0c;明知文拙脑蠢&#xff0c;却喜挥笔泼墨&#xff0c;畅叙幽情。才疏学浅&#xff0c;未能熟读圣贤之书&#xff0c;以至学识浅薄&#xff0c;明然众人也&#xff0c;有何不足处望不吝赐教。 DNS域名解析服务(Domain Name System)是用于解析域名与IP地址…

DNS服务搭建

目录 DNS简介 DNS解析原理 DNS的相关配置 DNS主从服务 DNS缓存服务 DNS智能解析&#xff08;分离解析&#xff09; DNS简介 DNS的功能 DNS 域名系统(Domain Name System) 的缩写&#xff0c;它的功能是将域名解析成ip。我们日常上网浏览网页时&#xff0c;在浏览器&#…

基于Java的Cplex入门

Cplex是一种数学优化技术。主要用于提高效率、快速实现策略并提高收益率。Cplex提供灵活的高性能优化程序&#xff0c;解决线性规划 (Linear Programming)、二次方程规划 (Quadratic Programming)、二次方程约束规划 (Quadratically Constrained Programming) 和混合整型规划 (…

python 调用cplex-学术版

转载 https://zhuanlan.zhihu.com/p/101713127 本文要解决的问题&#xff08;默认你已经对python有一定的使用经验&#xff09;&#xff1a;如何用python调用cplex求解器。 这次不能信官网&#xff0c;害我踩了一下午坑(其实是官网表述文件和实际不符&#xff0c;而且还少了一…

CPLEX教程 | Cplex介绍,CPLEX教育版和安装Cplex

前言 最近学习列生成算法&#xff0c;需要用到优化求解器。所以打算学习一下cplex这个商业求解器。 当然也有其他更多的选择&#xff0c;这里暂时以比较容易上手和性能比较好的cplex开始吧。其实&#xff0c;小编也早就想学习使用这个cplex了&#xff0c;毕竟是个好东西。 所…

cplex求解1

python环境下cplex安装 发现了一个简单的方法&#xff0c;直接使用 Anaconda 安装 cplex 包&#xff0c;因为 cplex 把自己最新的 python 包都发到 Anaconda 云里面了。 &#xff08;1&#xff09;打开 dos 命令行窗口&#xff0c;输入&#xff1a; conda install -c IBMDeci…

基于Cplex的分支定价

前言 分支定界&#xff08;branch and bound&#xff09;和分支定价&#xff08;branch and price&#xff09;仅一字之差&#xff0c;这两者之间也有着紧密联系&#xff0c;简单来说分支定价分支定界列生成。个人觉得在运筹学领域&#xff0c;分支定价算法也算是比较高级的算…

安装 cplex 求解器

安装 cplex 求解器 安装 cplex 求解器和python-docplexcplex 安装matlab 用户安装 cplexpython 版本 安装 cplex 求解器和python-docplex cplex 安装 cplex 是解决优化问题的一个工具箱&#xff0c;用来线性规划、混合整数规划和二次规划的高性能数学规划求解器。可以理解成…

Python配置CPLEX

大致的安装步骤如下 1.百度搜索CPLEX&#xff0c;进入官网&#xff0c;获取许可后&#xff0c;下载并安装&#xff08;要能找到自己的安装路径&#xff09; 2.安装完成后&#xff0c;可以直接用ide进行编程&#xff0c;但是&#xff0c;还可以用Python来调用CPLEX 3.给Pytho…

C++用户的Cplex使用指南(一)——在VS2019中运行Cplex程序

在VS2019中运行Cplex程序 前言 Cplex是IBM开发并仍在维护更新的商业求解器&#xff0c;也是目前使用人数最多的求解器&#xff0c;类似的还有Gurobi&#xff0c;两者各有各的特点&#xff08;两家颇有渊源&#xff0c;感兴趣的可以了解一下&#xff09;。 Cplex的一些基本概…