文章目录
- 前言
- 一、最小化安装系统(略过)
- 二、安装DNS服务
- 1.配置网卡
- 3.正式安装
- 1、全局配置文件
- 2、修改主配置文件
- 3、修改区域配置文件
- 三、验证:
- 参考
前言
1.DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)
2.需要注意,正常情况下,一个办公系统通常只搭建一套DNS服务系统,是采用windows server还是linux,取决于个人喜好(windows有图形化界面,配置更方便,与AD深度集成管理更方便。linux搭建的性能高,但是配置较繁琐)
3.如果使用的人员较少,建议使用/etc/hosts文件做静态解析即可,它不能自动注册,需要手动修改。
4.系统采用最小化安装
5.DNS的搭建要想顺利,它的工作原理和流程要搞清楚,不然搭建的时候有些配置文件你不知道它为何要这样配置,搭建会遇到阻碍
6.初学搭建,可以搭建一个最简单的,以服务能能启动为准,正常情况下只要你动了配置文件,配置不正确named服务是起不来的
7.使用named-checkconf /etc/named.conf检查配置文件是否有误(没有错误什么都不输出),这里需要注意,正向解析和反向解析要成对配置,如果只配置正向解析,named服务无法启动(我遇到的是这样的)
一、最小化安装系统(略过)
需要注意以下几点:
1、配置时先关闭防火墙,如果你的生产环境要求必须打开防火墙,配置结束之后再放通相关端口(此文章不涉及)
2、关闭selinux
3、修改hostname
二、安装DNS服务
首先修改网卡,将dns1修改为自己的ip,因为解析域名时,默认先从本地服务器查询DNS。
1.配置网卡
代码如下(示例):注意网卡名、IP和UUID替换自己的
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="ens33"
UUID="4ca507fd-c4d4-4794-bc50-5cf734ea4c9b"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=172.0.0.96
GATEWAY=172.0.0.2
NETMASK=255.255.255.0
DNS1=172.0.0.96
DNS2=114.114.114.114
IPV6_PRIVACY="no"
[root@freeipa1 named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 172.0.0.96
重启网卡:systemctl restart network
3.正式安装
yum -y install bind //安装DNS 服务
yum -y install bind-utils //安装DNS 检测工具,比如nslookup、host等
yum -y install bind-chroot // dns服务的安全保护软件
yum -y install bind-libs // dns类库文件,默认安装
或者
yum install bind bind-chroot bind-utils -y // 一次性安装完
DNS服务配置文件
/etc/named.conf #设置dns全局变量、端口和区域文件
/etc/named.rfc1912.zones#文件模板,指定正反解析的文件
/var/named/named.localhost#IP正向解析文件:主机名>IP
/var/named/named.loopback#IP反向解析文件:IP>主机名
1、全局配置文件
options {
// listen-on port 53 { localhost; }; # 修改点:代表当前这台机器所有ip,或者注释改行,经过反复测试,127.0.0.1:any和localhost:any都不可用,不会报错,dns服务无法使用,debug很难找
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,这里所有ip都能访问,或者注释改行
allow-update { any; }; #手动添加行, 允许动态更新 或localhost允许本机更新
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones"; //指定主配置文件
include "/etc/named.root.key";
检查配置是否有误:
使用named-checkconf /etc/named.conf检查配置文件是否有误
2、修改主配置文件
路径:/etc/named.rfc1912.zones,这个根据实际情况,看你全局配置文件里设置的路径
在文件末尾追加内容
// 正向解析
zone "test.com" IN {
type master; //类型:主服务器
file "test.com.zone"; //这个是在/var/named下对应的配置文件
allow-update { none; }; //# 允许更新区域信息的主机地址(无备用可默认不配置)建议注销,或改成any,以允许更新
};
// 反向解析,倒置网络号加固定后缀
zone "0.0.172.in-addr.arpa" IN {
type master;
file "0.0.172.zone"; //同上
allow-update { none; }; //# 允许更新区域信息的主机地址(无备用可默认不配置)建议注销,或改成any,以允许更新
};
3、修改区域配置文件
- 在/var/named目录下复制模板文件
# 拷贝一个配置文件,拷贝权限,注意名称最好对应,否则很难区分
cp -p named.localhost test.com.zone //该文件为正向模板文件 ,-p保留文件的权限、时间戳等属性.有的加-a参数,-a包含-p
cp -p named.loopback 0.0.172.zone //该文件为反向模板文件
chmod 777 test.com.zone //有的说需要修改所属的用户组为named,我认为named就可以或644
chmod 777 0.0.172.zone
ll *.zone
-rwxrwxrwx. 1 root named 168 8月 25 2021 0.0.172.zone //要保证配置文件的所有者为root,所属组为named,权限改成777最方便
-rwxrwxrwx. 1 root named 152 8月 25 2021 test.com.zone
- 编辑正向解析
$TTL 1D
@ IN SOA test.com. admin.test.com. ( //test.com. 为域名,admin.test.com为用户邮箱,发生错误会发邮件。“.”表示结束
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS test.com. // 区域中DNS服务器的主机名,注意域名末尾有个点,表示结束
@ A 172.0.0.96
master A 172.0.0.96
ipa A 172.0.0.99
# server1 - server100 解析的地址为1.2.3.1 - 1.2.3.100
$GENERATE 1-254 server$ A 1.2.3.$
# 解释
$TTL 1D 为统一设置TTL为1天 //缓存时间
开头必须是SOA记录,配置master主机、admin邮箱,以及括号里主从同步的信息
NS就是指定DNS服务器,对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
下面就是配置A、CNAME解析记录
# 不输入前缀也可以访问,或者用@表示本域
- 编辑反向解析,尽量与正向解析对应
$TTL 1D
@ IN SOA test.com. admin.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS test.com.
A 127.0.0.1 //@ A 172.0.0.96 NS下面必须指定一个A记录
96 PTR test.com. //NS 后面带.,下面的可以不带.,直接写成test.com
99 PTR ipa.test.com.
解释:
96和99是简写,你也可以写成全IP
- 刷新配置文件
# 配置文件语法检查
named-checkconf
# 检查配置
named-checkzone test.com /var/named/test.com.zone
# 刷新配置
rndc reload
# 清除dns服务器缓存
rndc flush
附:rndc命令
rndc:
rndc --> rndc (953/tcp)
rndc COMMAND
COMMAND:
status:查询状态
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动区域传送,而不管序列号是否增加
notify zonename: 重新对区域传送发通知
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message
trace: 递增debug一个级别
trace LEVEL: 指定使用的级别
notrace:将调试级别设置为 0
flush:清空DNS服务器的所有缓存记录
三、验证:
#nslookup test.com
Server: 172.0.0.96
Address: 172.0.0.96#53
Name: test.com
Address: 172.0.0.96
#ping master.test.com
#ping ftp.test.com
[root@freeipa1 named]# nslookup 172.0.0.96
96.0.0.172.in-addr.arpa name = test.com.
[root@freeipa1 named]# nslookup 172.0.0.99
99.0.0.172.in-addr.arpa name = ipa.test.com.
如有错误、欢迎指正,感谢赐教。
参考
两位博主写的相当详细了,但是我按照执行竟然没有过,频繁报错。
https://blog.youkuaiyun.com/A_art_xiang/article/details/142789658
https://blog.youkuaiyun.com/m0_56966142/article/details/116070616