实验:BIND正向解析
- 实验环境
(a)本实验需要联网
(b)关闭SElinux
[DNS]$ vim /etc/sysconfig/selinux
[DNS]$ SELINUX=disabled
©关闭防火墙
[DNS]$ systemctl stop firewalld
[DNS]$ systemctl disable firewalld
(d)配置yum源(本地+EPEL)
#把原来的repo保存下,也可以删除了
[DNS]$ mkdir /etc/yum.repos.d/yum/
[DNS]$ mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/yum/
[DNS]$ vim /etc/yum.repos.d/cdrom.repo
[base]
name=cdrom
baseurl=file:///mnt #这里我是把光盘挂载到/mnt目录下了
gpgcheck=0
enabled=1
[epel]
name=EPEL
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
enabled=1
[DNS]$ yum clean all && yum repolist
#大概会有2万3个包,如果还是就要检查下是什么问题了
- 主机IP地址
DNS服务端地址:192.168.99.100
HTTP服务端地址:192.168.99.200
DNS服务端操作(192.168.99.100)
- 安装BIND
[DNS]$ yum -y install bind
- 修改bind配置文件
#修改对应的行
[DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
#在/etc/named.rfc1912.zones加上这段
#这段说明了添加magedu.com这个域
[DNS]$ vim /etc/named.rfc1912.zones
zone "magedu.com" {
type master; #类型
file "magedu.com.zone"; #相应的域配置文件,下面进行修改
};
- DNS区域数据库⽂件
[DNS]$ vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA master admin.magedu.com. (
2019042210 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.99.100 #注意:本机地址
dbserver1 A 1.1.1.1 #注意,不能缩进
dbserver2 A 2.2.2.2
websrv1 A 192.168.36.6
websrv2 A 192.168.99.200 #这里写客户端的IP
- 检查
#检查配置文件
[DNS]$ named-checkconf
#检查区域文件
[DNS]$ named-checkzone magedu.com /var/named/magedu.com.zone
#启动服务
[DNS]$ systemctl start named
#加载配置文件和区域文件
[DNS]$ rndc reload
HTTP服务器
- 要先安装一个工具
[HTTP]$ yum -y install bind-utils
- dig命令来测试
[HTTP]$ dig web1.magedu.com @192.168.99.100
[HTTP]$ dig web2.magedu.com @192.168.99.100
[HTTP]$ dig db1.magedu.com @192.168.99.100
[HTTP]$ dig db2.magedu.com @192.168.99.100
- 我们用网页来测试下。客户端是就得先装个http服务
[HTTP]$ yum -y install httpd
[HTTP]$ echo "hello,kugou" > /var/www/html/index.html
[HTTP]$ systemctl start httpd
物理电脑,也就是你的windows
-
修改你的DNS为虚拟机配置的DNS服务器的IP
-
测试下,成功了
实验:反向解析
- 实验环境:
host A :DNS服务器:192.168.99.100
host B :客户端:192.168.99.200
host A
#安装BIND
[DNS]$ yum -y install bind
[DNS]$ vim /etc/named.conf
#修改这2行
13 listen-on port 53 { localhost; };
21 allow-query { any; };
[DNS]$ vim /etc/named.rfc1912.zones
#添加这一段
zone "37.168.192.in-addr.arpa" {
type master;
file "192.168.37.zone";
};
[DNS]$ vim /var/named/192.168.37.zone
$TTL 1D
@ IN SOA master admin (1 1D 1H 1W 3H)
NS master
master A 192.168.99.101
6 PTR www.jd.com
7 PTR www.taobao.com
8 PTR www.aliyun.com
#启动服务
[DNS]$ systemctl start named
#加载配置文件和区域文件
[DNS]$ rndc reload
host B
[root]$ dig -x 192.168.37.6 @192.168.99.101
实验:主从DNS服务器
- 同步方式
- 主DNS服务器推送到从DNS服务器
- 周期同步
- 实验环境:
主DNS:host B:192.168.99.200
从DNS:host A:192.168.99.100
客户端:host C:192.168.99.104
主DNS:host B
[DNS]$ vim /etc/named.conf
#修改这2行
13 listen-on port 53 { localhost; };
21 allow-query { any; };
22 allow-transfer { 192.168.99.100; };
#如果没有这条transfer,那么任意主机都能当主DNS的从服务器,存在安全风险
#写上你允许同步的服务器IP
[DNS]$ vim /etc/named.rfc1912.zones
#添加这一段
zone "jibiao.work" {
type master;
file "jibiao.work.zone";
};
[DNS]$ vim /var/named/jibiao.work.zone
$TTL 1D
@ IN SOA ns1 admin (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1 #表示本DNS
NS ns2 #表示从DNS
ns1 A 192.168.99.220 #本机IP
ns2 A 192.168.99.200 #从DNS服务器IP
#启动服务
[DNS]$ systemctl start named
[DNS]$ rndc reload
从DNS: host A
[DNS]$ vim /etc/named.conf
#修改这2行
13 listen-on port 53 { localhost; };
21 allow-query { any; };
22 allow-transfer { none; };
#如果没有这条transfer,那么任意主机都能当主DNS的从服务器,存在安全风险
[DNS]$ vim /etc/named.rfc1912.zones
#添加这一段
zone "jibiao.work" {
type slave;
masters { 192.168.99.200;};
file "slaves/jibiao.work.slave";
};
#启动服务
[DNS]$ systemctl start named
[DNS]$ rndc reload
注意:后续要使得同步,主DNS的serial号要大于从DNS上的
客户端
#安装dig这个工具
[root]$ yum -y install bind-utils
[root]$ dig -t axfr jibiao.work @192.168.99.100
[root]$ dig -t axfr jibiao.work @192.168.99.200
#检查是否能获取到IP
实验:父子域DNS
- 实验环境:
父域DNS服务器:192.168.99.200
子域DNS服务器:192.168.99.100
父域DNS服务器:192.168.99.200
[DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
36 dnssec-enable no;
37 dnssec-validation no;
[DNS]$ vim /etc/named.rfc1912.zones
#添加这一段
zone "jibiao.work" {
type master;
file "jibiao.work.zone";
};
[root]$ vim /var/named/jibiao.work.zone
$TTL 1D
@ IN SOA master admin.jibiao.work. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
sanji NS sanjidns
master A 192.168.99.200
sanjidns A 192.168.99.100
#这条说明了
sanji NS sanjiname
sanjiname A 192.168.99.100
#
websrv A 3.3.3.3
www CNAME websrv
www.shanghai A 1.1.1.1
[root]$ systemctl start named #第一次启动服务
[root]$ rndc reload
子域DNS服务器:192.168.99.100
[DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
[DNS]$ vim /etc/named.rfc1912.zones
#添加这一段
zone "sanji.jibiao.work" {
type master;
file "sanji.jibiao.work.zone";
};
[root]$ vim /var/named/sanji.jibiao.work.zone
$TTL 1D
@ IN SOA master admin (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.99.100
websrv A 3.3.3.3
www CNAME websrv
[root]$ systemctl start named 第一次启动服务
[root]$ rndc reload
客户机
- 先安装dig工具
[root]$ yum -y install bind-utils
- 检查下是否成功了
注意:jibiao.com是配置在主机101上(父),sanji.jibiao.com是配置在102(子)上的.
[root]$ dig www.sanji.jibiao.com @192.168.99.101
[root]$ dig www.jibiao.com @192.168.99.101
实验:缓存服务器
forward服务器: 192.168.99.101
- 安装BIND
[forward]$ yum install bind -y
- 修改配置文件
[forward]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
34 dnssec-enable no;
35 dnssec-validation no;
36 forward only; #收到DNS查询请求都会转发到本地DNS去查询
37 forwarders { 192.168.99.240;};
#添加区域
[forward]$ vim /etc/named.rfc1912.zones
#加上这段
zone "magedu.com" {
type master;
file "magedu.com.zone";
};
#配置区域文件
[forward]$ vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA master admin.magedu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.99.101
www CNAME websrv
websrv A 1.1.1.1
ftp A 2.2.2.2
* A 3.3.3.3
[forward]$ chgrp named /var/named/magedu.com.zone
[forward]$ systemctl start named 第一次启动服务
[forward]$ rndc reload 不是第一次启动服务
cache服务器: 192.168.99.102(本地DNS)
- 安装BIND
yum install bind -y
- 配置文件
[cache]$ vim /etc/named.conf
#注释掉两行,第13行和第21行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
[cache]$ vim /etc/named.rfc1912.zones
zone "wang.com" {
type master;
file "wang.com.zone";
};
[cache]$ vim /var/named/wang.com.zone
$TTL 1D
@ IN SOA master admin.wang.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.99.101
www CNAME websrv
websrv A 1.1.1.1
ftp A 2.2.2.2
* A 3.3.3.3
[cache]$ systemctl start named 第一次启动服务
[cache]$ rndc reload 不是第一次启动服务
客户端:99网段的就可以了
- 先安装dig工具
[root]$ yum -y install bind-utils
- 检查下是否成功了
注意:wang.com是配置在主机102上(cache)的,magedu.com是配置在101(forward)上的,详看上面的图
[root]$ dig www.wang.com @192.168.99.101
[root]$ dig ftp.wang.com @192.168.99.101
[root]$ dig www.magedu.com @192.168.99.101
[root]$ dig ftp.magedu.com @192.168.99.101
实验:模拟智能CDN
- 实验环境
DNS服务器:192.168.99.101
模拟北京IP:192.168.99.104
模拟上海IP:192.168.99.103
模拟其它IP:192.168.99.102
#
[root]$ vim /etc/named.conf
#在59行加上下面这写
acl beijingnet {
192.168.99.104;
#当然也可以写网段(192.168.99.0/24),但是我这里没有那么多网段,我就用主机表示了,效果是一样的
};
acl shanghainet {
192.168.99.103;
};
acl other {
any;
};
view view_beijing {
match-clients { beijingnet;};
include "/etc/named.rfc1912.zones.bj";
};
view view_shanghai {
match-clients { shanghainet;};
include "/etc/named.rfc1912.zones.sh";
};
}view view_other {
match-clients { othernet;};
include "/etc/named.rfc1912.zones";
};
[root]$ vim /etc/named.rfc1912.zones.bj
zone "magedu.com"{
type master;
file "magedu.com.zone.bj"
}
vim /etc/named.rfc1912.zones.sh
zone "magedu.com" {
type master;
file "magedu.com.zone.sh"
}
vim /etc/named.rfc1912.zones
zone "magedu.com" {
type master;
file "magedu.com.zones"
}
[root]$ chgrp named /etc/named.rfc1912.zones*
[root]$ vim /var/named/magedu.com.zone.bj
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H)
NS ns1
ns1 A 192.168.99.101
www A 4.4.4.4
[root]$ vim /var/named/magedu.com.zone.sh
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H)
NS ns1
ns1 A 192.168.99.101
www A 3.3.3.3
[root]$ vim /var/named/magedu.com.zone.other
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H)
NS ns1
ns1 A 192.168.99.101
www A 2.2.2.2
客户端验证:
-
先用192.168.99.102模式其它地区的主机
-
先用192.168.99.103模式上海地区的主机
-
先用192.168.99.104模式北京地区的主机
实验:DNS综合实验
- 实验环境(8个虚拟机,物理机16G内存以上)
- 用户:192.168.99.107
- HTTP服务器:192.168.99.78
- 主DNS服务器(二级):192.168.99.200
- 从DNS服务器(二级):192.168.99.100
- .COM顶级域服务器:192.168.99.220
- 根域服务器:192.168.99.230
- DNS本地服务器:192.168.99.240
- DNS转发服务器:192.168.99.101
- 实验开始
用户:192.168.99.107
- 装个dig工具就行了
#安装bind的工具,一会要用到dig
[用户]$ yum -y install bind-utils
HTTP服务器:192.168.99.78
- 配置HTTP服务
[HTTP]$ yum -y install httpd
[HTTP]$ echo "The Web pages" > /var/www/html/index.html
[HTTP]$ systemctl start httpd #centos7
[HTTP]$ service httpd start #centos6
[HTTP]$ ss -tnl #检查80端口是否启动
主DNS服务器(二级):192.168.99.200
- 先安装BIND
[主DNS]$ yum -y install bind
- 修改配置文件
#主配置文件
[主DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
22 allow-transfer { 192.168.99.100; };
#transfer后带的是从DNS的IP
#区域配置文件
[主DNS]$ vim /etc/named.rfc1912.zone
zone "magedu.com" {
type master;
file "magedu.com.zone";
};
#区域文件
[主DNS]$ vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA ns1 admin (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1
NS ns2 #从DNS服务器
ns1 A 192.168.99.200 #本机IP
ns2 A 192.168.99.100 #从DNS服务器的IP
www A 192.168.99.78 #HTTP服务器的IP
#启动DNS服务
[主DNS]$ systemctl start named
[主DNS]$ rndc reload
从DNS服务器(二级):192.168.99.100
- 先安装BIND
[从DNS]$ yum -y install bind
- 修改配置文件
[从DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
22 allow-transfer { none; };
#transfer后带的是从DNS的IP
[从DNS]$ vim /etc/named.rfc1912.zone
zone "magedu.com" {
type slave;
masters { 192.168.99.100;}; #主DNS服务器的IP
file "slaves/magedu.com.zone.slave";
};
#从服务器不需要配置区域文件
#启动DNS服务
[从DNS]$ systemctl start named
[从DNS]$ rndc reload
.COM顶级域服务器:192.168.99.220
- 先安装BIND
[顶级域DNS]$ yum -y install bind
- 修改配置文件
[顶级域DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
[顶级域DNS]$ vim /etc/named.rfc1912.zone
zone "com" {
type master;
file "com.zone";
};
[顶级域DNS]$ vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA ns1 admin (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1
magedu NS ns2
magedu NS ns3
ns3 A 192.168.99.220 #本机IP
ns1 A 192.168.99.200 #从DNS服务器IP
ns2 A 192.168.99.100 #主DNS服务器IP
#启动DNS服务
[顶级域DNS]$ systemctl start named
[顶级域DNS]$ rndc reload
根域服务器:192.168.99.230
- 先安装BIND
[根域DNS]$ yum -y install bind
- 修改配置文件
[根域DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
[根域DNS]$ vim /etc/named.rfc1912.zone
zone "." {
type master;
file "zone";
};
[根域DNS]$ vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA ns1 admin (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1
com NS ns2
ns1 A 192.168.99.230 #本机IP
ns2 A 192.168.99.220 #COM服务器IP
#启动DNS服务
[根域DNS]$ systemctl start named
[根域DNS]$ rndc reload
DNS本地服务器:192.168.99.240
#配置根DNS服务器的IP,这样的话,当本地DNS找不到域名的时候,就会向根域服务器去找
[本地DNS]$ vim /var/named/named.ca
a.root-servers.net. 360000 IN A 192.168.99.230
#把后面的a.b.c.到m.删除了,见图
[本地DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
34 dnssec-enable no;
35 dnssec-validation no;
#启动DNS服务
[本地DNS]$ systemctl start named
[本地DNS]$ rndc reload
DNS转发服务器:192.168.99.101
[转发DNS]$ vim /etc/named.conf
13 listen-on port 53 { localhost; };
21 allow-query { any; };
34 dnssec-enable no;
35 dnssec-validation no;
36 forward only; #收到DNS查询请求都会转发到本地DNS去查询
37 forwarders { 192.168.99.240;};
#启动DNS服务
[转发DNS]$ systemctl start named
[转发DNS]$ rndc reload
用户:192.168.99.107
#DNS转发服务器 --> DNS本地服务器 --> 根域DNS --> COM域DNS --> magedu.com域DNS
[用户]$ dig www.magedu.com @192.168.99.101