CentOS 7配置DNS缓存服务器
1、安装CentOS 7,网上指导文档很多,不再另行说明,如果镜像是从http://mirrors.aliyun.com/下载的CentOS镜像,yum源已经默认修改为aliyun,但是也需要执行3.1-3.4的步骤,因为镜像中有部分yum没有更新,建议使用minimal版的镜像,这样可以省去多余的组件。
2、CentOS默认没有wget,需要自行下载wget(重要!)
yum -y install wget
3、安装Xymon需要安装多种工具,而安装工具需要先配置yum,由于过去通用的yum源目前因为种种原因无法再使用,首先需要将yum源更改为国内用户较多的aliyun的源
3.1 首先备份系统自带base repo文件
进入repo保存目录
cd /etc/yum.repos.d
将现有repo重命名
sudo mv CentOS-Base.repo CentOS-Base.repo.bak
下载阿里源的repo文件(注意!必须先通过系统自带的yum下载wget工具再执行下面这个命令,否则会进入因为找不到wget工具因此无法下载yum,又因为没有yum而无法下载wget工具的死循环)
sudo wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.2 安装epel repo源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.3 清理缓存
yum clean all
3.4 重新生成缓存
yum makecache
3.5 进行系统更新
yum upgrade -y
建议在此处将服务器关机进行备份或克隆为虚拟机模版,以防后续操作中出现问题导致无法回滚
4、系统设置
4.1安装工具
安装C、vim、net-tools、iptables
yum install gcc gcc-c++ vim net-tools iptables-services -y
安装Bind
yum install bind bind-utils -y
4.2修改CentOS安全等级
vim /etc/selinux/config
在现有的配置前加上#注释掉
#SELINUX=enforcing
添加一条新命令
SELINUX=disabled
保存并退出
:wq
4.4配置iptables防火墙
注意!CentOS7使用firewall作为系统默认防火墙,建议禁用firewall,启用iptables
停用firewall服务
systemctl stop firewalld.service
禁止firewall服务开机启动
systemctl disable firewalld.service
将iptables服务设置为开机自启动
systemctl enable iptables.service
修改iptables规则
vim /etc/sysconfig/iptables
修改iptables规则开放指定IP段的TCP 22远程管理端口访问
-A INPUT -s 172.28.18.0/27 -p tcp -m tcp --dport 22 -j ACCEPT
修改iptables规则开放指定IP段的客户端TCP和UDP 53端口访问
-A INPUT -s 172.28.18.0/27 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -s 172.28.18.0/27 -p udp -m udp --dport 53 -j ACCEPT
修改iptables规则开放指定IP段的客户端TCP 953端口访问
-A INPUT -s 172.28.18.0/27 -p tcp -m tcp --dport 953 -j ACCEPT
修改iptables规则取消对所有IP开放TCP 22远程管理端口访问
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
保存并退出
:wq!
重启服务器
reboot now
配置完这一步以后,服务器就可以通过SecureCRT或Putty等ssh客户端登录进行配置了,比使用HyperV或VMWARE的管理界面进行操作方便多了,但一定要严格控制防火墙ACL
4.5添加新的服务器管理员用户admin并设置密码
useradd admin
passwd admin
将admin用户添加到root组
usermod -G root admin
编辑sodo配置文件
vim /etc/sudoers
找到root ALL=(ALL) ALL并在下面规则允许admin用户使用sudo功能
admin ALL=(ALL) ALL
保存并退出
:wq!
至此,服务器就可以使用admin账户通过ssh和console进行登录和维护了,之后除特殊情况外,尽量避免使用root账户
5、DNS服务器配置
5.1配置基本DNS功能
启动DNS服务
systemctl start named.service
将DNS服务设置为开机自启动
systemctl enable named.service
查看DNS服务端口监听是否正常(正常情况下应监听TCP 953, TCP和UDP 53端口)
netstat -anlp | grep named
5.2 DNS服务具体配置(注意!”//”起的内容为注释语句,配置时不要复制)
打开主配置文件/etc/named.conf
vim /etc/named.conf
修改服务器IPv4监听端口及IP地址,默认情况下是第13行
listen-on port 53 { 127.0.0.1; }; //服务器IPv4监听端口及IP,默认只有环回地址,需添加本机IP,如该服务器有多个IP且均提供DNS服务,可以添加any,代表所有IP,任何地址包括any必须以“;”结尾,范例如下
listen-on port 53 { 127.0.0.1; 17.119.184.251; };
修改DNS客户端白名单地址
allow-query { localhost; }; //允许向这台服务器发起DNS请求的IP地址,因为我们已经使用iptables进行了访问控制,这里可以修改为any,范例如下
allow-query { any; };
在递归查询选项后添加转发器地址,默认情况下是第31行
recursion yes; //递归查询功能,yes为启用,no为禁用,一般默认使用yes,转发器添加在此行以后,范例如下
forward first; //转发器选项,可以设置为first或only,当客户端发起DNS解析请求时,如果参数为first,而当前服务器缓存中无对应缓存时,会向转发器请求DNS解析记录,如果参数为only,则无论服务器是否有对应的缓存,均向转发器请求DNS解析记录。设置为only可以避免出现服务器缓存造成的DNS解析错误,但是会大大降低DNS解析效率并增加服务器压力,根据目前的运营需求,我们使用first即可
forwarders { //定义转发器地址,注意”{ }”必须形成闭合并以”;”结尾,每个转发器IP也必须以”;”结尾,默认情况下所有域名均向这几个转发器请求解析记录(公网DNS)
17.82.200.200;
17.82.200.201;
};
dnssec-enable yes; //DNS安全功能选项,默认为yes,不需要修改
dnssec-validation yes; //DNS安全验证功能,默认为yes,不需要修改
确认子配置文件是否关联,默认情况下是第57行,在添加转发器以后会对应添加行数进行下移
include "/etc/named.rfc1912.zones"; //子配置文件,可自定义条件转发器
保存并退出
:wq!
打开条件转发器配置文件
vim /etc/named.rfc1912.zones
在文件尾添加条件转发器
zone “XXXX.com” IN { //定义DNS条件转发域名
type forward; //定义转发类型,forward为转发
forward first; //转发器选项,参数同上,不再复述
forwarders { //定义转发器地址(172.28.194.101)
172.28.2.101;
172.28.2.102;
};
};
保存并退出
:wq!
验证DNS配置文件语法
named-checkconf /etc/named.conf
如果没有语法错误,DNS转发服务器的配置就算完成了,可以重启一下服务器,然后找一台电脑,将DNS设置为这台服务器的IP地址进行测试,新的域名在第一次解析的时候会比较慢,因为服务器会向上游转发服务器发送递归查询请求并将DNS记录缓存在本地,之后的解析速度就会大大加快。
setenforce 0
iptables -F
以下是可能需要留意的问题:
1、 服务器本身的网卡DNS地址,在完成DNS服务器配置以后,建议修改为127.0.0.1,使用其他DNS地址可能导致本地缓存解析记录与上游转发器之间的记录存在冲突,具体方法如下
2、 条件转发器可以设置多个,优先级高于主配置中的转发器设置,部分客户方(如苹果)可能会要求所有DNS解析必须使用客户方的服务器地址,因此需要将主配置的转发器设置为客户方的DNS服务器,而维音的域名则通过条件转发器进行转发。