搭建DNS服务器
简介
这里通过bind搭建DNS服务,BIND,Berkeley Internet Name Domain,是dns协议的一种实现。运行的进程名称为named,端口默认53。
相关的程序包
- bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
- bind-utils:bind客户端程序集,例如dig, host, nslookup等;
- bind:提供的dns server程序、以及几个常用的测试程序;
- bind-chroot:选装,让named运行于jail模式
配置解析一个正向区域
实验环境
IP:192.168.253.128
系统:CentOS7
实验开始之前先把防火墙和selinux关了
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
配置解析一个正向区域,将www.ice.cube.com域名解析到192.168.253.129上
第一步,安装bind以及测试的工具
yum install bind -y
yum install bind-utils -y
第二步,修改配置文件
在主配置文件/etc/named.conf
listen-on port 53 { 192.168.253.128; }; 监听192.168.253.128
...
//allow-query { localhost; }; ##只允许本机的请求,注释掉此行
...
dnssec-enable no; ##DNS的额外安全设置,这里因为做实验 关闭
dnssec-validation no;##DNS的额外安全设置,这里因为做实验 关闭
在辅助配置文件/etc/named.rfc1912.zones添加区域信息
zone "ice.cube.com" IN { ##设置ice.cube.com区域
type master; ##设置为主DNS服务器
file "ice.cube.com.zone"; ##区域配置文件为ice.cube.com.zone
};
修改/etc/resolv.conf这个文件是设置DNS服务器的
nameserver 192.168.253.128 ##这里IP设置为192.168.253.128(自建DNS服务器的IP,这里是本机IP地址)
第三步,创建/var/named/ice.cube.com.zone
$TTL 1D
@ IN SOA ns1.ice.cube.com. admin.ice.cube.com. (
12 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 192.168.253.128
www IN A 192.168.253.129
web IN CNAME www
创建完成之后修改一下权限
chown .named /var/named/ice.cube.com.zone
chmod 640 /var/named/ice.cube.com.zone
第四步,检查配置文件
检查主配置文件
named-checkconf
检查区域文件
格式为
named-checkzone 区域名称 区域文件
这里的区域为ice.cube.com 区域文件为 /var/named/ice.cube.com.zone
命令为
named-checkzone ice.cube.com /var/named/ice.cube.com.zone
第五步,启动并测试
systemctl start named ##如果是重载配置文件可以使用rndc reload
接下来看看能否正常将www.ice.cube.com解析到192.168.253.129上
配置解析一个反向区域
与配置正向区域类似,只是编写的区域文件不同
这里将192.168.253.129反向解析为www.ice.cube.com
第一步,首先定义区域,在/etc/named.rfc1912.zones文件中添加
zone "253.168.192.in-addr.arpa" IN { ##这里的反向解析需要吧ip段反写,比如这里要解析的ip段是192.168.253 则需要写成253.168.192
type master; ##设置为主服务器
file "253.168.192.in-addr.arpa.zone";##区域文件为为/var/named/253.168.192.in-addr.arpa.zone
};
第二步,然后编写区域文件/var/named/253.168.192.in-addr.arpa.zone
$TTL 3600
@ IN SOA ns1.ice.cube.com. nsadmin.ice.cube.com. (
20180812
1H
10M
3D
12H )
IN NS ns1.ice.cube.com.
128 IN PTR ns1.ice.cube.com. ##PTR表示反向解析记录
129 IN PTR www.ice.cube.com.
创建完成之后修改一下配置文件权限
chown .named /var/named/253.168.192.in-addr.arpa.zone
chmod 640 /var/named/253.168.192.in-addr.arpa.zone
第三步,检查配置文件
检查主配置文件
named-checkconf
检查区域文件
命令为
named-checkzone 253.168.192.in-addr.arpa.zone /var/named/253.168.192.in-addr.arpa.zone
第四步,重新载入一下配置文件
rndc reload
第五步,测试一下
dig -x 192.168.253.129
搭建主从服务器
实验环境
- 主服务器 192.168.253.128 系统CentOS7(在之前的基础上进行的)
- 从服务器 192.168.253.129 系统CentOS6(centos6和centos7都差不多,不影响实验)
实验之前关闭防火墙和selinux
/etc/init.d/iptables stop
setenforce 0
第一步,在从服务器安装bind和测试工具
yum install bind bind-utils -y
第二步,再从服务器上修改配置文件
修改主配置文件/etc/named.conf
listen-on port 53 { 127.0.0.1;192.168.253.129 ; };##多增加一个监听192.168.253.129地址
//allow-query { localhost; };##这一项是仅允许本机请求,注释掉
dnssec-enable no;##dns的安全相关配置,这里先关掉 no
dnssec-validation no;dns的安全相关配置,这里先关掉 no
第三步,在从服务器。定义一个从区域,修改辅助配置文件/etc/named.rfc1912.zones
增加下面一段
zone "ice.cube.com" IN { ##定义负责解析的从区域为ice.cube.com
type slave; ##表示是从服务器
file "slave/ice.cube.com.zone";##这里的区域文件不需要自己再去编写是从主服务器同步过来的。设置同步的路径为slave/ice.cube.com.zone
masters { 192.168.253.128; }; ##设置主服务器为192.168.253.128
};
第四步,在主服务器上添加从服务器的记录
在/var/named/ice.cube.com.zone文件中修改,在之前的基础上添加两条记录就可以了
$TTL 1D
@ IN SOA ns1.ice.cube.com. admin.ice.cube.com. (
15 ; serial ##每次更改这个区域文件这个***需要手动加1 没修改之前是14 因为这次修改了于是改成15
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
IN NS ns2 ##添加一条NS记录
ns1 IN A 192.168.253.128
ns2 IN A 192.168.253.129 ###指向从服务器
www IN A 192.168.253.129
web IN CNAME www
将主服务器重启一下
systemctl restart named
第六步,启动从服务器,并测试
dig -t a www.ice.cube.com @192.168.253.129
这里@192.168.253.129 表示向192.168.253.129这台DNS服务器发起请求。
可以看到从服务器能解析www.ice.cube.com这个请求说明设置成功了
创建子域
实验环境
- 192.168.253.128 主服务器(试验环境基于之前做的操作之上)
- 192.168.253.158 负责解析子域的DNS服务器
先说一个整体思想和过程。到了这一步。我们有一个ice.cube.com的区域。我们现在要在ice.cube.com下创建一个子域,假设我们创建一个ops.ice.cube.com的子域。这个子域有个主机名假设叫www.ops.ice.cube.com。
创建的过程也很简单
第一步:在主服务器上,授权子域
修改区域文件/var/named/ice.cube.com.zone
$TTL 1D
@ IN SOA ns1.ice.cube.com. admin.ice.cube.com. (
19 ; serial ##注意这里每次修改要增加1 否则从服务器无法同步
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
IN NS ns2
ops IN NS ns1.ops ##添加一条ops的NS记录
ns1 IN A 192.168.253.128
ns2 IN A 192.168.253.129
ns1.ops IN A 192.168.253.158##并说明负责ops解析的NS地址
www IN A 192.168.253.129
web IN CNAME www
然后重载服务
rndc reload
第二步:在负责解析子域的服务器安装bind相关程序包
yum install bind bind-utils -y
第三步,在192.168.253.158上修改主配置文件/etc/named.con。
listen-on port 53 { 127.0.0.1;192.168.253.158; };##监听192.168.253.158这个IP收到的请求
//allow-query { localhost; };##注释这一行
dnssec-enable no; ##关闭dns的安全相关设置
dnssec-validation no;##关闭dns的安全相关设置
第四步,192.168.253.158上修改辅助配置文件/etc/named.rfc1912.zones,定义区域文件
添加下面几行
zone "ops.ice.cube.com" IN {
type master;
file "ops.ice.cube.com.zone";
};
第五步,192.168.253.158上创建区域文件/var/named/ops.ice.cube.com.zone
将www.ops.ice.cube.com解析到192.168.253.158上
$TTL 1D
@ IN SOA ns1.ops.ice.cube.com. admin.ops.ice.cube.com. (
20180812 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 192.168.253.158
www IN A 192.168.253.158
web IN CNAME www
创建完成之后修改一下配置文件权限
chown .named /var/named/ops.ice.cube.com.zone
chmod 640 /var/named/ops.ice.cube.com.zone
第六步,子域服务器上启动并测试
systemctl start named
说明192.168.253.158是可以解析子域的
现在看192.168.253.128能否正常解析其子域
说明成功了
转发
(1) 区域转发:仅转发对某特定区域的解析请求;
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP; };
};
first:首先转发;转发器不响应时,自行去迭代查询;
only:只转发;
(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;
options {
... ...
forward {only|first};
forwarders { SERVER_IP; };
.. ...
};
bind中的安全相关的配置
acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;
acl acl_name {
ip;
net/prelen;
};
示例:
acl mynet {
192.168.253.0/24;
127.0.0.0/8;
};
bind有四个内置的acl
- none:没有一个主机;
- any:任意主机;
- local:本机;
- localnet:本机所在的IP所属的网络;
访问控制指令
- allow-query {}; 允许查询的主机;白名单;
- allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
- allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
- allow-update {}; DDNS,允许动态更新区域数据库文件中内容;
智能DNS
能自动判断访问者的IP地址并解析出对应的IP地址,使网通用户会访问到网通服务器,电信用户会访问到电信服务器。
实验内容;
来源为192.168.253.128的ip,访问www.ice.com域的时候,解析为192.168.253.130
其他的ip,访问www.ice.com域的时候,解析为192.168.253.129
实验环境:
IP:192.168.253.128
系统:centos7
实验开始之前先把防火墙和selinux关了
systemctl stop firewalld
setenforce 0
第一步,安装bind以及测试的工具
yum install bind -y
yum install bind-utils -y
第二步,修改主配置文件
在主配置文件/etc/named.conf
listen-on port 53 { 192.168.253.128; }; ##这里修改为智能DNS服务器地址
//allow-query { localhost; };##注释这行不然会只接受本机的请求
dnssec-enable no; ##dns安全的额外配置。这里直接先关了
dnssec-validation no;##dns安全的额外配置。这里直接先关了
//include "/etc/named.rfc1912.zones"; ##注释这行,不然会报错。因为使用了视图所有的zone必须在视图里面
include "/etc/view.conf"; ##这里是自定义的视图配置文件。等等我们会创建
第三步,创建视图的配置文件/etc/view.conf(这个是自定义的方便管理)
view internal {
match-clients { 192.168.253.128; };
zone "ice.com" IN {
type master;
file "ice.com/internal";
};
zone "." IN {
type hint;
file "named.ca";
};
};
view external {
match-clients { any; };
zone "ice.com" IN {
type master;
file "ice.com/external";
};
zone "." IN {
type hint;
file "named.ca";
};
};
第四步,编写/var/named/ice.com/external与/var/named/ice.com/internal这两个区域文件
创建目录先
mkdir /var/named/ice.com
下面是/var/named/ice.com/external文件
$TTL 1D
@ IN SOA ns1.ice.com. admin.ice.com. (
12 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 192.168.253.128
www IN A 192.168.253.129
web IN CNAME www
下面是/var/named/ice.com/internal文件
$TTL 1D
@ IN SOA ns1.ice.com. admin.ice.com. (
12 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 192.168.253.128
www IN A 192.168.253.130
web IN CNAME www
第五步检查配置文件和区域
[aaa@qq.com named]# named-checkconf
[aaa@qq.com named]# named-checkzone ice.com /var/named/ice.com/internal
zone ice.com/IN: loaded serial 12
OK
[aaa@qq.com named]# named-checkzone ice.com /var/named/ice.com/external
zone ice.com/IN: loaded serial 12
OK
第六步,启动并测试
systemctl start named
在192.168.253.128服务器上执行
dig -t a www.ice.com @192.168.253.128
在192.168.283.129服务器上运行dig -t a www.ice.com @192.168.253.128
从两幅图结果可以看到了192.168.253.128解析www.ice.com的时候解析到了192.168.253.130
而192.168.253.129请求解析的时候解析到了192.168.253.129从而实现了智能DNS
上一篇: 阿里云搭建php开发环境并部署Web应用
下一篇: DNS服务器搭建
推荐阅读
-
我想将一台服务器上的所有主机都延长到期时间一周
-
JanusGraph的搭建
-
JanusGraph服务器模式之ConfiguredGraphFactory配置
-
云服务器应用实施还需政策细化
-
JanusGraph 服务器-配置ConfiguredGraphFactory
-
Nmap扫描教程之DNS服务类
-
使用Snort+Base快速搭建校园网入侵检测平台
-
CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
-
[服务器] 用Servlet搭建自己的HTTP服务|后台向前端传输文件|Java文件传输
-
CentOS下搭建PHP环境与WordPress博客程序的全流程总结,centoswordpress_PHP教程