Linux 配置DNS域名解析服务器
Posted m-zhuang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 配置DNS域名解析服务器相关的知识,希望对你有一定的参考价值。
1. DNS分布式结构
结构 | 含义 |
---|---|
. | 根(全球共13台) |
cn. jp. | 顶级域 |
com.cn. | com. 就是二级域 |
baidu.com.cn. | baidu. 就是子域(需要购买,全球唯一) |
2. 域名解析过程
查询:
本地缓存 ------> dns域名服务器 ------> 根服务器 ------> 顶级域 ------> 二级域 ------> 子域
先查本地的dns缓存,如果没有,到dns域名解析服务器查找,若是还是没有,就到根服务器找,找不到就到顶级域,找不到就去二级域找,找不到再到子域
返回:
查询结果 ------> dns域名服务器 ------> 本地缓存 ------> 用户 ------> ip地址
将返回结果先发送至域名解析服务器,域名解析服务器将结果发送到本地,再发送给用户
迭代:
查询 --- 从根服务器到子域的查询过程
递归:
返回 --- 从dns域名服务器到返回ip地址的过程
3. 解析方式
三种解析方式
正向解析:
从域名解析出ip地址
反向解析:
从ip地址解析出域名
主从服务器解析:
主服务器停止工作,从服务器可以继续承担任务
解析命令:
nslookup 域名/ip地址
可以正向解析也可以反向解析,但需要配置
4. bind 配置服务软件
bind 软件
开源软件
用于内网划分dns
外网地址划分需要注册、付费
内网地址划分不需要注册、免费,方便内部进行访问和使用
服务类型:
根区域 hint
主区域 master
从区域 slave
(1)安装bind软件
# 本地yum源和在线yum源都可以安装
[root@localhost ~]# yum -y install bind
(2)配置文件
① 主区域配置文件
作用:
用于配置服务、配置监听地址
位置:
/etc/named.conf
② 区域配置文件
作用:
指定区域数据文件
位置:
/etc/named.rfc1912.zones
③ 区域数据配置文件
作用:
配置正向及反向解析
位置:
/var/named/named.localhost
5. 配置DNS主服务器
配置主区域文件
# 备份配置文件
[root@localhost ~]# cd /etc
[root@localhost etc]# cp named.conf named.conf.bak20230520
[root@localhost etc]# vim named.conf
# 将解析服务器主机ip设置为本机的ip地址
# 允许所有网段的客户机访问
(1)正向解析
① 配置区域文件
# 备份配置文件
[root@localhost ~]# cd /etc
[root@localhost etc]# cp named.rfc1912.zones named.rfc1912.zones.bak
[root@localhost etc]# vim named.rfc1912.zones
# 设置域名为 host1.com
# 类型为master(主区域)
# 设置区域数据配置文件的文件名
② 配置区域数据配置文件
默认的区域数据配置文件在 /var/named/named.localhost
[root@localhost etc]# cd /var/named
[root@localhost named]# cp -a named.localhost host1.com.zone
[root@localhost named]# vim host1.com.zone
$TTL 1D
@ IN SOA host1.com. admin.host1.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS host1.com.
A 192.168.23.5
www IN A 192.168.23.10
IN MX 10 mail.host1.com.
mail IN A 192.168.23.15
AAAA ::1
# 重启named服务
[root@localhost named]# systemctl restart named
# 修改DNS域名解析配置文件(192.168.23.5 、23.10 、23.15 主机都要更改)
[root@localhost named]# vim /etc/resolv.conf
nameserver 192.168.23.5
③ 重启named服务
④ 修改DNS域名解析配置文件(192.168.23.5 、23.10 、23.15 主机都要更改)
⑤ 正向解析检测
(2)反向解析
① 配置区域文件
# 进入区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
# 添加反向解析配置
zone "23.168.192.in-addr.arpa" IN
type master;
file "host1.com.zone.local";
allow-update none; ;
;
② 配置区域数据文件
# 创建反向解析区域配置文件
[root@localhost ~]# cd /var/named
[root@localhost named]# cp -a host1.com.zone host1.com.zone.local
# 进入配置反向解析区域配置文件
[root@localhost named]# vim host1.com.zone.local
$TTL 1D
@ IN SOA host1.com. admin.host1.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS host1.com.
A 192.168.23.5
10 IN PTR www.host1.com.
15 IN PTR mail.host1.com.
AAAA ::1
③ 重启named服务
[root@localhost named]# systemctl restart named
④ 修改DNS域名解析配置文件(192.168.23.5 、23.10 、23.15 主机都要更改)
⑤ 反向解析检测
6. 配置DNS从服务器
(1)更改主服务器
# 更改主服务器
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "host1.com" IN
type master;
file "host1.com.zone";
allow-transfer 192.168.23.20; ;
;
zone "23.168.192.in-addr.arpa" IN
type master;
file "host1.com.zone.local";
allow-transfer 192.168.23.20;
;
# 重启主服务器named服务
[root@localhost ~]# systemctl restart named
(2)配置从服务器
① 配置主区域配置文件
# 从服务器安装bind软件
[root@localhost ~]# yum -y install bind
# 配置从服务器的主区域配置文件
[root@localhost ~]# vim /etc/named.conf
# 监听所有网段的客户机
# 允许所有网段的客户机访问
② 配置区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
# 添加正向解析和反向解析配置
zone "host1.com" IN
type slave;
file "slaves/host1.com.zone";
masters 192.168.23.5; ;
;
zone "23.168.192.in-addr.arpa" IN
type slave;
file "slaves/host1.com.zone.local";
masters 192.168.23.5; ;
;
# 重启named服务
[root@localhost ~]# systemctl restart named
③ 分别配置主、从服务器的DNS配置文件
root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.168.5
nameserver 192.168.168.20
④ 检验主、从服务器的区域数据配置文件是否同步
[root@localhost ~]# cd /var/named
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cd slaves/
[root@localhost slaves]# ls
host1.com.zone host1.com.zone.local
Linux网络服务——部署搭建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根服务器分布
- 美国VeriSign公司 2台
- 网络管理组织IANA(Internet Assigned Number Authority) 1台
- 欧洲网络管理组织RIPE-NCC(Resource IP Europeens Network Coordination Centre) 1台
- 美国PSINet公司 1台
- 美国ISI(Information Sciences Institute) 1台
- 美国ISC(Internet Software Consortium) 1台
- 美国马里兰大学(University of Maryland) 1台
- 美国太空总署(NASA) 1台
- 美国国防部 1台
- 美国陆军研究所 1台
- 挪威NORDUnet 1台
- 日本WIDE(Widely Integrated Distributed Environments)研究计划 1台
*全球总共13台根域名服务器
一、实验目的
- 搭建DNS高速缓存服务器
- 提供域名解析服务
二、实验环境
- Linux主机作为DNS服务器,ip地址:192.168.100.20
三、实验过程(如下)
DNS主服务器搭建
一、安装BIND
- BIND (Berkeley Internet Name Daemon)
- 伯克利 Internet 域名服务
- 官方站点:http://www.isc.org/
[root@pakho ~]# yum clean all #清除一下yum源的缓存
[root@pakho ~]# yum repolist #重新加载yum源
[root@pakho ~]# yum list | grep '^bind\\.' #查询yum仓库是否有bind安装包
[root@pakho ~]# yum -y install bind* #安装bind服务
BIND 服务器端程序
- 主要执行程序:/usr/sbin/named
- 默认监听端口:53
- 主配置文件 /etc/named.conf
- 保存 DNS 解析记录的数据文件位于 /var/named/
二、配置主配置文件
- 主配置文件 /etc/named.conf
[root@pakho ~]# cp /etc/named.conf /etc/named.conf.backup #主配置文件备份
[root@pakho ~]# 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记录映射关系表
[root@pakho ~]# cat /var/named/named.ca
三、修改区域配置文件,添加正向解析配置
[root@pakho ~]# vim /etc/named.rfc1912.zones #进入配置文件
文件有模板 可以复制粘贴后进行修改
正向解析配置
在文件中添加如下几行
zone "pakho.com" IN { #正向解析为“pakho.com”
type master; #类型:主缓存 master
file "pakho.zone" #指定区域数据文件为pakho.zone
};
配置正向区域数据文件
1)复制主配置文件
[root@pakho ~]# cp -p /var/named/named.empty /var/named/pakho.zone
#保留源文件的权限和属主的属性复制
检查是否复制完成 拷贝文件是否具有属主属性
2)配置正向区域数据文件
[root@pakho ~]# 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.”表示管理员邮箱,这里的@是变量,所以用“.”代替
[root@pakho ~]# 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证书颁发机构授权校验
3)配置文件语法检查工具
[root@pakho ~]# named-checkconf -z /etc/named.conf
仅检查语法不检查逻辑关系
当显示的全为0时表示没有语法错误
五、启动DNS服务器服务,关闭防火墙
[root@pakho ~]# rpm -ql bind #可以先查看一下BIND服务名称
[root@pakho ~]# systemctl start named #启动服务
[root@pakho ~]# systemctl enable named #设置为开机自启动
[root@pakho ~]# systemctl stop firewalld #关闭防火墙
此时查看端口发现53号端口正在监听
DNS服务器测试
六、测试DNS服务器
6.1) windows10测试
- 如下配置网络 网关为虚拟机网关 DNS服务器为Linux服务器
- 成功解析
6.2) Linux测试
1、打开一台新的Linux作为测试机
2、网卡配置
[root@611 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 #进入网卡配置
...
DNS1="192.168.100.20" #将DNS服务器修改为192.168.100.20 对应我们搭建的DNS服务器
...
#中间省略部分配置
[root@611 ~]# ifdown ens32;ifup ens32 #重启网卡
3、测试
ping一个A记录存在的地址
返回是192.168.100.20 表示本地DNS进行的解析
工作原理:
- 查找本地hosts文件
- 没有的话找dns服务器,dns先查找本地缓存,有的话返回
- 没有的话查找根域,做迭代递归查询
ping 一个A记录不存在的地址
4、使用nslookup进行测试
1)安装nslookup
[root@611 ~]# yum clean all #防止出现乱码先清空yum缓存
[root@611 ~]# yum repolist #刷新yum仓库
[root@611 ~]# yum -y install bind-utils #下载nslookup
2)通过nslookup解析
- 测试一:解析本地缓存不存在的地址
[root@611 ~]# 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
- 测试二:解析本地缓存存在的地址
[root@611 ~]# nslookup ftp.pakho.com
Server: 192.168.100.20
Address: 192.168.100.20#53
Name: ftp.pakho.com #发现本地缓存存在这个地址于是解析到了本地
Address: 192.168.100.20
反向解析配置
基于刚才的配置进行反向解析配置
一、修改区域配置文件,添加反向解析配置
[root@pakho ~]# vim /etc/named.rfc1912.zones #进入配置文件
zone "100.168.192.in-addr.arpa" IN { #添加反向解析配置
type master;
file "pakho.com.arpa"; #区域配置文件为pakho.com.arpa
};
配置反向区域数据文件
1)复制主配置文件
[root@ns1 ~]# cp -p /var/named/named.localhost /var/named/pakho.com.arpa
#保留源文件的权限和属主的属性复制
检查是否复制完成 拷贝文件是否具有属主属性
2)配置反向区域数据文件
[root@ns1 ~]# 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 就改成了20
3)重启服务
[root@ns1 ~]# systemctl restart named #重启服务
DNS服务器测试
4)验证
- windows10验证
- Linux验证
[root@611 ~]# 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从服务器搭建
准备工作
- (1)开启另一台服务器
- (2)IP地址配置和主服务器同一网段
一、安装BIND
[root@ns2 ~]# yum -y install bind*
二、配置主配置文件
- 主配置文件 /etc/named.conf
1) 回到主服务器配置文件
添加标红一行 对应的是从服务器的IP地址
2)从服务器的主配置
[root@ns2 ~]# cp /etc/named.conf /etc/named.conf.backup #主配置文件备份
[root@ns2 ~]# 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
正、反向解析配置
三、修改区域配置文件,添加正&反向解析配置
[root@ns2 ~]# 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; #类型为slave
file "slaves/pakho.com.arpa";
masters {192.168.100.20;}; #定义一个masters 为主服务器的ip地址
};
四、配置网络
1)开启一台虚拟机进入网卡配置
[root@611 ~]# 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设置为从服务器地址
2)重启网络
[root@611 ~]# systemctl restart network #重启网络
五、重启DNS服务
回到从服务器重启
[root@ns2 ~]# systemctl restart named #重启DNS服务
DNS服务器测试
六、通过nslookup解析测试
回到客户端测试
- 测试一:解析本地缓存不存在的地址
[root@611 ~]# nslookup www.baidu.com
Server: 192.168.100.21
Address: 192.168.100.21#53
Non-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
- 测试二:解析本地缓存存在的地址
[root@611 ~]# nslookup ftp.pakho.com
Server: 192.168.100.21
Address: 192.168.100.21#53 #本地服务器为192.168.100.21端口为53
Name: ftp.pakho.com
Address: 192.168.100.20 #解析到主服务器成功
- 测试三:从服务器反向解析
[root@611 ~]# 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.
以上是关于Linux 配置DNS域名解析服务器的主要内容,如果未能解决你的问题,请参考以下文章