目录
1. 环境
CentOS7.6
DNS SERVER:172.20.32.220
域名:dnps.com
本篇介绍的离线安装,离线包安装成功后,配置参考在线安装参考。
2. 下载离线安装包
因为安装时离线环境,所以提前在有网络的服务器上下载好了需要的软件包
注意:在使用downloadonly时,需要在没有安装过依赖的机器上执行,如果执行的机器之前安装过所需依赖,执行downloadonly后,会提示依赖已经安装,不能下载,会导致离线安装缺少依赖包。
下载DNS服务依赖包
# yum -y install bind --downloadonly --downloaddir /home/dns/bind
下载DNS检测工具依赖包
# yum -y install bind-utils --downloadonly --downloaddir /home/dns/bind-utils
3. 服务端安装配置
1) 上传离线安装包到指定目录下,这里我上传到了/home/dns
2) 安装
检查是否安装bind
# rpm -qa | grep bind
安装DNS服务端
# cd /home/dns/bind //进入安装包目录bind
# rpm -ivh *.rpm --force --nodeps
安装DNS客户端检测工具
# cd /home/dns/bind-utils //进入安装包目录bind-utils
# rpm -ivh *.rpm --force --nodeps
3) 修改主配置文件
# vim /etc/named.conf
修改listen-on port 53 { 127.0.0.1; }; 为 listen-on port 53 { any; }; #服务器上的所有IP地址均可提供DNS域名解析服务
修改allow-query { localhost; }; 为 allow-query { any; }; #允许所有人对本服务器发送DNS查询请求
4) 检查配置文件语法是否正确
# named-checkconf /etc/named.conf
5) 修改其区域文件,添加需要解析的域名,末尾添加
# vim /etc/named.rfc1912.zones
//正向区域配置
zone "dnps.com" IN {
type master;
file "dnps.com.zone";
allow-update { none; };
};
//反向区域配置
zone "32.20.172.in-addr.arpa" IN {
type master;
file "dnps.com.local";
allow-update { none; };
};
6) 修改数据文件——编写正向DNS配置
正向解析:根据域名查找对应的ip地址
# cd /var/named
# cp -p named.localhost dnps.com.zone //编辑正向区域数据配置文件,注意复制配置文件时,要保持源文件权限
# vim dnps.com.zone //编辑正向区域数据配置文件内容
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 172.20.32.220
www IN A 172.20.32.220
ftp IN A 172.20.32.220
AAAA ::1
erial:序列号。可以供从服务器判断何时获取新数据的,更新数据文件必须要更新这个序列号,否则从服务器将不更新。
refersh: 指定多长时间从服务器要与主服务器进行核对。
retry: 如果从服务器试图检查主服务器的序列号时,主服务器没有响应,则经过这个时间后将重新进行检查。
expire: 将决定从服务器在没有主服务器的情况下权威地持续提供域数据服务的时间长短。
minium: 高速缓存否定回答的存活时间。
检查语法
# named-checkzone dnps.com.zone /var/named/dnps.com.zone
7) 修改数据文件——编写反向DNS配置
反向解析:根据ip地址查找对应的域名
# cp -p dnps.com.zone dnps.com.local //赋值反向区域配置文件
# vim dnps.com.local
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 172.20.32.220
220 IN PTR www.dnps.com.
8) 启动DNS服务器
# chkconfig named on //设置开机自启动
# service named restart // 重启
# service named start // 开启命令
# service named stop //关闭服务命令
# service named status
9) 服务端测试
注意:若要使直接修改的DNS内容不会在服务器重启之后丢失,需要设置网卡中PEERDNS
的值为no
# vim /etc/resolv.conf #添加新的DNS nameserver 172.20.32.220
# nslookup www.dnps.com #正向测试DNS
# nslookup 1172.20.32.220 #反向测试DNS
4. 客户端安装配置
注意:客户端如果使用nslookup,必须安装DNS测试工具bind-utils,参考上一步安装
修改客户端配置文件
# vim /etc/resolv.conf // 修改客户端的DNS服务器,添加新的DNS nameserver 172.20.32.220
然后执行一下三个解析命令,三个任选其一就行,如果没有安装bind-utils,可使用ping命令。
# dig www.dnps.com
# host www.dnps.com
# nslookup www.dnps.com
# ping www.dnps.com
5. 离线脚本安装
#!/bin/bash
currentUser=$(whoami)
if [ "$currentUser" != "root" ];then
echo "当前用户为非root:${currentUser}"
exit 1
fi
echo "*************************"
echo "* 开始安装DNS *"
echo "*************************"
# 引入functions
currentpath=$(pwd)
. $currentpath/depend/function
# 引入func
currentpath=$(pwd)
. $currentpath/depend/func
local_ip="172.20.32.220"
# 当前路径
currentpath=$(pwd)
# 检查是否安装bind
rpm -qa | grep bind
echo "*检查是否安装bind"
# 安装DNS服务端
rpm -ivh depend/dns/bind/*.rpm --force --nodeps
if [ $? -ne 0 ]; then
echo -e "\033[31m*安装DNS服务端失败 \033[0m"
exit 1
fi
echo "*安装DNS服务端完成"
# 安装DNS客户端检测工具
rpm -ivh depend/dns/bind-utils/*.rpm --force --nodeps
if [ $? -ne 0 ]; then
echo -e "\033[31m*安装DNS客户端检测工具失败 \033[0m"
exit 1
fi
echo "*安装DNS客户端检测工具完成"
# 修改主配置文件named.conf
sed -i "s/listen-on port 53 { 127.0.0.1; };/listen-on port 53 { any; };/g" /etc/named.conf
sed -i "s/allow-query { localhost; };/allow-query { any; };/g" /etc/named.conf
if [ $? -ne 0 ]; then
echo -e "\033[31m*修改主配置文件失败 \033[0m"
exit 1
fi
echo "*修改主配置文件成功"
# 检查配置文件语法是否正确
named-checkconf /etc/named.conf
if [ $? -ne 0 ]; then
echo -e "\033[31m*检查配置文件/etc/named.conf语法失败 \033[0m"
exit 1
fi
echo "*检查配置文件/etc/named.conf语法成功"
# 修改其区域文件/etc/named.rfc1912.zones,添加需要解析的域名,末尾添加
# 添加正向区域配置
echo -e >> /etc/named.rfc1912.zones
echo "//正向区域配置
zone "dnps.com" IN {
type master;
file \"dnps.com.zone\";
allow-update { none; };
};">> /etc/named.rfc1912.zones
if [ $? -ne 0 ]; then
echo -e "\033[31m*区域文件/etc/named.rfc1912.zones添加正向区域配置失败 \033[0m"
exit 1
fi
echo "*区域文件/etc/named.rfc1912.zones添加正向区域配置成功"
:<<!
# 添加反向区域配置
echo -e >> /etc/named.rfc1912.zones
echo "//反向区域配置
zone "32.20.172.in-addr.arpa" IN {
type master;
file \"dnps.com.local\";
allow-update { none; };
};">> /etc/named.rfc1912.zones
if [ $? -ne 0 ]; then
cd ${currentpath}
echo -e "\033[31m*区域文件/etc/named.rfc1912.zones添加反向区域配置失败 \033[0m"
exit 1
fi
echo "*区域文件/etc/named.rfc1912.zones添加反向区域配置成功"
!
# 修改正向解析区域文件dnps.com.zone
cp -p /var/named/named.localhost /var/named/dnps.com.zone #编辑正向区域数据配置文件,注意复制配置文件时,要保持源文件权限
cat /dev/null > /var/named/dnps.com.zone #清除dnps.com.zone文件内容
#编辑正向区域数据配置文件内容
echo "\$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A ${local_ip}
www IN A ${local_ip}
ftp IN A ${local_ip}
AAAA ::1">> /var/named/dnps.com.zone
cat /var/named/dnps.com.zone
named-checkzone dnps.com.zone /var/named/dnps.com.zone #检查zone区域配置文件
if [ $? -ne 0 ]; then
echo -e "\033[31m*检查zone区域配置文件失败 \033[0m"
exit 1
fi
echo "*检查zone区域配置文件dnps.com.zone成功"
echo "*修改正向解析区域文件dnps.com.zone成功"
:<<!
# 修改反向解析区域文件
cp -p /var/named/named.localhost /var/named/dnps.com.local
cat /dev/null > /var/named/dnps.com.local #清除dnps.com.local文件内容
#编辑反向区域数据配置文件内容
echo "$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 172.20.32.220
220 IN PTR www.dnps.com.">> /var/named/dnps.com.local
cat /var/named/dnps.com.local
echo "*修改正向解析区域文件dnps.com.zone成功"
!
# 启动DNS服务器
chkconfig named on #设置开机自启动
echo "*设置DNS服务器开机自启动"
service named restart #重启
if [ $? -ne 0 ]; then
echo -e "\033[31m*启动DNS服务器失败 \033[0m"
exit 1
fi
echo "*启动DNS服务器成功"
echo "*查看DNS服务器启动状态"
service named status #关闭服务命令
# 服务端测试
echo "nameserver ${local_ip}">> /etc/resolv.conf #添加新的DNS nameserver 172.20.32.220
nslookup www.dnps.com
if [ $? -ne 0 ]; then
echo -e "\033[31m*DNS服务端测试失败 \033[0m"
exit 1
fi
echo "*DNS服务端测试成功"
echo "*************************"
echo "* 安装DNS完成 *"
echo "*************************"