1 DNS介绍
1.1 什么是域名?
域名(Domain Name),简称域名,网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或者计算机组的名称,用于在数据传输时标识计算机的电子方位。具有独一无二,不可重复的特性。
域名其实是为了方便人们的记忆。
1.2 什么是DNS?
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务(DHCP是局域网的服务应用,DNS则是互联网的服务应用,即可以在公网和内网使用)。域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便的访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。
DNS作用是将域名和IP地址映射关系做记录,以及查询的功能。DNS 是将域名和IP地址之间进行互相转换的服务。
域名的解析工作由 DNS 服务器来完成。可以理解为DNS就是翻译官。
正向解析:域名 —> IP地址 反向解析:IP地址 —> 域名 反解使用场景:邮件服务器,用于过滤有问题的邮件
1.3 域名的组成和分类
IPv6 的DNS服务器可以兼容IPv4 的DNS服务器,IPv4 的DNS服务无法兼容IPv6 的DNS服务。
IPv4 的DNS 根域服务器只有13台。
常见格式:www.kubesphere.com 完整格式:www.kubesphere.com.
. :根域,可以省略不写 com:顶级域,由ICANN组织指定的管理 分类:
- 国家地区域名:cn(中国)、hk(香港)、sg(新加坡)等
- 通用顶级域名:com(商业机构)、org(非营利组织)、edu(教育机构)、net(网络服务商)等
- 新通用顶级域名:red(红色、热情)、top(顶级、高端)等
kubesphere:二级域(注册域),可由个人或者组织申请注册(二级域以上级别的域名,统称为子域) www:三级域(子域),服务器网站名代表 主机名: kubesphere-node01.www.kubesphere.com. 中的kubesphere-node01 就是主机名,一般用来表示具体的某一台主机。 主机名是包含在域名中的。其实域名中的主机名指的就是域名中的完整的子域名。比如:http:www.baidu.com,其中.com就是顶级域名,而 www.baidu 就是子域名,www.baidu.com 就是完整的子域名,也就是我们所说的主机名。我们一般记企业域名网站的时候,只是记忆子域名就可以了,后缀基本就是com或cn,这种应用最广泛的,也最经典的后缀了。
扩展:com.cn 属于”二级域名”,是 cn 顶级域的子域。
例如:www.kubesphere.com.cn. 其中 . 为根域,cn. 是顶级域,com.cn. 是二级域,kubesphere.com.cn 是三级域,www.kubesphere.com.cn. 是四级域。
2 域名解析过程
2.1 DNS域名解析过程
- 客户机首先查看查找浏览器缓存,是否存在本条目的缓存,如果有则直接返回,否则进行下一步
- 客户机查看本地缓存 hosts 文件,如果有则返回,否则进行下一步
- 将请求转发给指向的 DNS 服务器
- 查看域名是否本地解析,是则本地解析返回,否则进行下一步
- 本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步
- 向全球13台根域服务器发起DNS请求,根域返回 org 域的地址列表
- 使用某一个 org 域的IP地址,发起DNS请求,org 域返回的是 kernel 域服务器的地址列表
- 使用某一个 kernel 域的IP地址,发起 DNS 请求,kernel 域返回的 www.kernel.org 主机的IP地址,本地DNS服务收到后,返回给客户机,并在本地DNS服务器保存一份。
递归查询:客户机和本地DNS服务器之间DNS的查询方式 如果 A 请求 B,那么 B 作为请求的接收者一定要给 A 想要的答案
迭代查询:本地DNS服务器和域服务器(根域,顶级域,二级域,三级域等)之间的DNS查询方式 如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但是自己并不去发出请求
第一步:检查浏览器缓存中是否缓存过该域名对应的IP地址 第二步:如果在浏览器缓存中没有找到IP,那么将继续查找本机系统是否缓存过IP 第三步:向本地域名解析服务系统发起域名解析的请求 第四步:向根域名解析服务器发起域名解析请求 第五步:根域名服务器返回gTLD域名解析服务器地址 第六步:向gTLD服务器发起解析请求 第七步:gTLD服务器接收请求并返回Name Server服务器 第八步:Name Server服务器返回IP地址给本地服务器 第九步:本地域名服务器缓存解析结果 第十步:返回解析结果给用户
2.2 DNS分布式服务器
- 根域服务器保存的是所有顶级域的IP地址顶级域保存的是所属二级域的IP地址二级域保存的是三级域名的IP地址但并不知道下属的DNS服务器
- DNS服务器若要连接顶级域服务器和二级域服务器,需要先查询上级域服务器的条目。即DNS服务器需要先访问根域服务器获取顶级域服务器的IP地址,再通过顶级域服务器获取二级域服务器的IP地址,之后访问二级域服务器获取三级域的条目
- 分布式:同一个任务,由不同步骤共同完成的过程就叫分布式(例如:生产车间中的某一条流水线,流水线上有很多步骤,不同步骤之间就叫分布式)分布式的含义并不是DNS域名解析的过程,而是借助分布式的主机备份和缓存机制
- 负载均衡:将用户的请求,分配到多个功能相同的服务器上。其实就是任务分配(例如:生产车间中的多条相同功能的流水线)
3 DNS 软件信息
软件名称
bind bind-utils
服务名称
named
软件端口
UDP 53 #数据通信(域名解析) TCP 53 #数据同步(主从同步)
配置文件
主配置文件:/etc/named.conf(服务器运行参数)
区域配置文件:/etc/named.rfc1912.zones(服务器解析的区域配置,正反向区域定义信息)
- 正向解析区域
zone “localhost.localdomain” 是写域,而不是域名。即www.kubesphere.com中,该区域写的是kubesphere.com。 file 定义正向/反向数据配置文件的名称(默认保存在/var/name/下)。 allow-update 是否允许数据更新的列表,none表示不更新。若填写则一般是从服务器的IP地址。
- 反向解析区域
zone “1.0.0.127.in-addr.arpa” 分为两个部分:1.0.0.127. | in-addr.arpa:1.0.0.127是IP地址的反写。后面的in-addr.arpa 是固定格式。一般不写 host,而是 network,即 0.168.192.in-addr.arpa
数据配置文件:/var/named/xx.xx(主机名和IP地址的对应解析关系,以及主从同步信息)。
其中/var/named/named.localhost 是正向解析配置文件。
/var/named/named.loopback 是反向解析配置文件。
保存记录13台根域服务器位置:/var/named/named.ca。
/var/named/slaves 由于DNS主从同步时使用的从服务器保存的配置。
/var/named/named.localhost 和 /var/named/named.loopback 中基本上在 A、AAAA、PTR字段会做修改,其余地方,可以保持一致。
记录类型:
A | 地址记录,用来指定域名的IPv4地址的记录 |
---|---|
CNAME | 将域名指向另一个域名,再由另一个域名提供IP地址,就需要添加CNAME记录,可以理解为域名别名 |
TXT | 可填写任何东西,长度限度255,绝大多数的TXT记录是用来做 SPF的(反垃圾邮件) |
NS | 域名服务器记录,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录 |
AAAA | 地址记录,用来指定域名的IPv6地址的记录 |
MX | 邮件交换记录,如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录 |
4 DNS 实验搭建
4.1 DNS 服务搭建
先关闭服务器和客户机上的防火墙和SELLinux
#Ubuntu关闭防火墙和安装apache2
~ ufw disable
~ apt update
~ apt install -y apache
~ echo "DNS Test Web Server" > /var/www/html/index.html
~ ss -tunlp
#CentOS6关闭防火墙和安装浏览器访问软件
~ vim reset_centos6.sh
#!/bin/bash
#SHELL ENV
function color()
{
RES_COL=60;
MOVE_TO_COL="echo -en \\033[${RES_COL}G";
SETCOLOR_SUCCESS="echo -en \\033[1;32m";
SETCOLOR_FAILURE="echo -en \\033[1;31m";
SETCOLOR_WARNING="echo -en \\033[1;33m";
SETCOLOR_NORMAL="echo -en \E[0m";
echo -n "$1" && $MOVE_TO_COL;
echo -n "[";
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS};
echo -n $" OK ";
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE};
echo -n $"FAILED";
else
${SETCOLOR_WARNING};
echo -n $"WARNING";
fi
${SETCOLOR_NORMAL};
echo -n "]";
echo
}
#Step1:关闭SELinux功能
function set_selinux()
{
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
color "关闭SELinux功能成功" 0
}
#Step2:关闭防火墙功能
function set_firewalld()
{
service iptables stop
chkconfig iptables off
color "关闭防火墙功能成功" 0
}
#Step3:设置光盘源
function set_yum()
{
CDROM=$(lsblk | grep sr0 &> /dev/null ; echo $?)
if [ $CDROM -eq 0 ] ;then
color "系统光盘已挂载,开始设置光盘源" 0
else
{ color "系统光盘未挂载,无法设置光盘源" 1 ; exit ; }
fi
mkdir -p /mnt/cdrom ; mount /dev/sr0 /mnt/cdrom
mkdir /etc/yum.repos.d/repobak ; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repobak
cat > /etc/yum.repos.d/CentOS-ISO.repo <<EOF
[CentOS-ISO]
name=CentOS-ISO
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
EOF
yum repolist
color "设置光盘源成功" 0
}
#Stpe4:关闭NetworkManager功能
function set_network_manager()
{
service NetworkManager stop
chkconfig NetworkManager off
color "关闭NetworkManager功能成功" 0
}
set_selinux
set_network_manager
set_firewalld
set_yum
软件安装
yum install -y bind bind-utils
配置主配置文件(/etc/named.conf)
~ vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
......
allow-query { any; };
......
}
配置区域文件(/etc/named.rfc1912.zones)
注意:先对区域文件进行备份,删除多余的模板,只留下一个正向和一个反向(反向修改时,网络位的反写格式:如192.168.100.2 —> 2.100.168.192)
~ cp /etc/named.rfc1912.zones{,.bak}
~ vim /etc/named.rfc1912.zones
#正向解析区域
zone "kubesphere.com" IN {
type master;
file "kubesphere.localhost";
allow-update { none; };
};
#反向解析区域
zone "0.0.10.in-addr.arpa" IN {
type master;
file "kubesphere.loopback";
allow-update { none; };
};
- 配置数据文件 /var/named/
A、先复制生成正向解析文件和反向解析文件 B、编辑正向解析文件(注意域名结尾的”;”) C、编辑反向解析文件(注意域名结尾的”;”) D、编辑域或者域名时一定要写根域
~ cp -a /var/named/named.localhost /var/named/kubesphere.localhost
~ cp -a /var/named/named.loopback /var/named/kubesphere.loopback
~ vim /var/named/kubesphere.localhost
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
dns A 10.0.0.40 ;
www A 10.0.0.100 ;
/var/named/kubesphere.localhost 正向解析实现的效果就是 dns.kubesphere.com 域名被解析成 10.0.0.40 机器。www.kubesphere.com 域名被解析成 10.0.0.100 机器
~ vim /var/named/kubesphere.loopback
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
20 PTR dns.kubesphere.com. ;
100 PTR www.kubesphere.com. ;
/var/named/kubesphere.loopback 反向解析实现的效果就是 在之前的区域配置文件中写入了”0.0.10.in-addr.arpa” 即是以 10.0.0. 网段的。20 就代表IP地址为10.0.0.20 可以解析成域名 dns.kubesphere.com. ,100 就代表IP地址 10.0.0.100 可以解析成域名 www.kubesphere.com.
- 重启DNS服务
named 用户的权限要足够使用
###需要对named用户进行ACL权限规划
setfacl -m u:named:rwx /etc/named.conf
setfacl -m u:named:rwx /etc/named.rfc1912.zones
setfacl -R -m u:named:rwx /var/named/
#启动named服务
service named reload ; service named restart
chkconfig named on
#查看端口
ss -tunlp | grep ":53"
netstat -tunalp | grep 53
#查看访问日志
tail -f /var/log/messages
- 客户端测试 ```bash 在网卡配置文件中添加DNS服务器的地址,然后用nslookup测试
~ vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS设置为内网DNS服务器
DNS1=10.0.0.40
重启网络服务
service NetworkManager stop ; chkconfig NetworkManager off service network restart
~ dig www.kubesphere.com ~ curl www.kubesphere.com DNS Test Web Server ~ elinks www.kubesphere.com
正向解析成功
~ nslookup www.kubesphere.com Server: 10.0.0.40 Address: 10.0.0.40#53
Name: www.kubesphere.com Address: 10.0.0.100
反向解析成功
~ nslookup 10.0.0.100 Server: 10.0.0.40 Address: 10.0.0.40#53
100.0.0.10.in-addr.arpa name = www.kubesphere.com.

<a name="j048S"></a>
## 4.2 主从DNS服务器
<br />实验目的:<br />减轻主服务器的压力,以及对主服务器的数据进行备份的作用
> 先关闭服务器和客户机上的防火墙和SELinux
实验准备:<br />一台主服务器(10.0.0.40),一台从服务器(10.0.0.41),一台测试机(IP:10.0.0.100)<br />搭建过程:
1. 搭建主服务器步骤(同上,不截图):
> a、安装 bind 软件
> b、主配置文件的修改 /etc/named.conf
> c、区域配置文件的修改 /etc/named.rfc1912.zones
> d、配置数据文件
> 正向数据文件
> 反向数据文件(可选做)
> e、启动 named 服务
> 注意:主DNS的区域配置文件中的 allow-update 参数添加从服务器的IP地址
2. 搭建从服务器步骤:
> a、安装 bind 软件
> b、修改主配置文件 /etc/named.conf
> c、配置区域文件( /etc/named.rfc1912.zones )
> 注意:从配置文件的类型需要修改为 slave,并且需要填写主服务器的地址,如下:
> > type slave
> > masters { 10.0.0.40; }; #大括号两侧留有空格
> > 文件保存位置修改为 file "slaves/kubesphere.localhost";
> d、重启服务
> e、在测试机上填写从服务器的IP地址,并且使用 nslookup / dig 进行测试
```bash
###使用CentOS6的初始化环境脚本进行初始化后进行后续的操作
~ bash reset_centos6.sh
#10.0.0.40 --> DNS-Master
~ hostname dns-master-server.kubesphere.com
~ sed -i '/^HOSTNAME=/c\HOSTNAME=dns-master-server.kubesphere.com' /etc/sysconfig/network
~ yum install -y bind bind-untils
~ vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
......
allow-query { any; };
......
}
~ cp /etc/named.rfc1912.zones{,.bak}
~ vim /etc/named.rfc1912.zones
zone "kubesphere.com" IN {
type master;
file "kubesphere.localhost";
allow-update { 10.0.0.41; };
};
zone "0.0.10.in-addr.arpa" IN {
type master;
file "kubesphere.loopback";
allow-update { 10.0.0.41; };
};
~ cd /var/named/
~ cp named.localhost kubesphere.localhost ; cp named.loopback kubesphere.loopback
~ vim /var/named/kubesphere.localhost
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
dns A 10.0.0.40
www A 10.0.0.100
~ vim /var/named/kubesphere.loopback
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
40 PTR dns.kubesphere.com.
100 PTR www.kubesphere.com.
###需要对named用户进行ACL权限规划
setfacl -m u:named:rwx /etc/named.conf
setfacl -m u:named:rwx /etc/named.rfc1912.zones
setfacl -R -m u:named:rwx /var/named/
#启动named服务
~ service named restart
~ chkconfig named on
#查看端口
~ ss -tunlp | grep ":53"
~ netstat -tunalp | grep 53
#查看访问日志
~ tail -f /var/log/messages
#########################
#10.0.0.41 --> DNS-Slave
~ hostname dns-slave-server.kubesphere.com
~ sed -i '/^HOSTNAME=/c\HOSTNAME=dns-slave-server.kubesphere.com' /etc/sysconfig/network
~ yum install -y bind bind-untils
~ vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
......
allow-query { any; };
......
}
~ cp /etc/named.rfc1912.zones{,.bak}
~ vim /etc/named.rfc1912.zones
zone "kubesphere.com" IN {
type slave;
masters { 10.0.0.40; };
file "slaves/kubesphere.localhost";
allow-update { none; };
};
zone "0.0.10.in-addr.arpa" IN {
type slave;
masters { 10.0.0.40; };
file "slaves/kubesphere.loopback";
allow-update { none; };
};
~ cd /var/named/
#从服务器的数据配置文件就不需要手动创建了。
#当启动服务时,主DNS服务器会将数据配置文件同步到/var/named/slave/目录下
###需要对named用户进行ACL权限规划
setfacl -m u:named:rwx /etc/named.conf
setfacl -m u:named:rwx /etc/named.rfc1912.zones
setfacl -R -m u:named:rwx /var/named/
#启动named服务
#service named reload
~ service named restart
~ chkconfig named on
#查看端口
~ ss -tunlp | grep ":53"
~ netstat -tunalp | grep 53
#查看同步效果
~ ls -lh /var/named/slaves/
total 8.0K
-rw-r--r--. 1 named named 335 Jun 26 16:11 kubesphere.localhost
-rw-r--r--. 1 named named 366 Jun 26 16:11 kubesphere.loopback
#10.0.0.100 --> webserver
~ hostnamectl set-hostname webserver.kubesphere.com
~ apt install apache2
~ echo "DNS Test Web Server" > /var/www/html/index.html
~ ufw disable
~ systemctl enable --now apache2
~ ss -ntlp
范例:测试机测试效果
~ /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=10.0.0.40
DNS2=10.0.0.41
~ service network restart
~ curl www.kubesphere.com
DNS Test Web Server
~ nslookup www.kubesphere.com
Server: 10.0.0.40
Address: 10.0.0.40#53
Name: www.kubesphere.com
Address: 10.0.0.100
#将DNS服务器10.0.0.40服务停止
service named stop
#不影响DNS解析,DNS服务器选择了10.0.0.41机器进行解析
~ nslookup www.kubesphere.com
Server: 10.0.0.41
Address: 10.0.0.41#53
Name: www.kubesphere.com
Address: 10.0.0.100
~ curl www.kubesphere.com
DNS Test Web Server
~ yum install -y elinks
~ elinks www.kubesphere.com
主从DNS服务器相对独立,在一定时间内,从服务器不需要向主服务器同步数据,超过一定时间后再来进行同步操作,默认时间为1 天。若同步超时,则会间隔一段时间再次进行同步操作。
4.3 DNS缓存服务器
先关闭服务器和客户机上的防火墙和SELinux
实验作用:
加快解析速度,提高工作效率
实验软件:
dnsmasq
配置文件:
vim /etc/dnsmasq.conf
domain=域名 #需要解析的域名
server=ip #主DNS服务器的IP
cache-size=15000 #声明缓存条数
重启服务
service dnsmasq restart
测试效果:
在测试机上填写 DNS 缓存服务器的IP地址
###默认执行CentOS6初始化脚本
#主DNS服务器
~ yum install -y bind bind-untils
~ hostname dns-server
~ sed -i '/^HOSTNAME=/c\HOSTNAME=dns-server.kubesphere.com' /etc/sysconfig/network
~ vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
......
allow-query { any; };
......
}
~ cp /etc/named.rfc1912.zones{,.bak}
~ vim /etc/named.rfc1912.zones
zone "kubesphere.com" IN {
type master;
file "kubesphere.localhost";
allow-update { 10.0.0.41; };
};
zone "0.0.10.in-addr.arpa" IN {
type master;
file "kubesphere.loopback";
allow-update { 10.0.0.41; };
};
~ cd /var/named/
~ cp named.localhost kubesphere.localhost ; cp named.loopback kubesphere.loopback
~ vim /var/named/kubesphere.localhost
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
dns A 10.0.0.40
www A 10.0.0.100
~ vim /var/named/kubesphere.loopback
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
40 PTR dns.kubesphere.com.
100 PTR www.kubesphere.com.
###需要对named用户进行ACL权限规划
setfacl -m u:named:rwx /etc/named.conf
setfacl -m u:named:rwx /etc/named.rfc1912.zones
setfacl -R -m u:named:rwx /var/named/
#启动named服务
~ service named restart ; chkconfig named on
#查看端口
~ ss -tunlp | grep ":53"
~ netstat -tunalp | grep 53
#查看访问日志
~ tail -f /var/log/messages
#缓存DNS服务器
~ hostname dns-cache.kubesphere.com
~ sed -i '/^HOSTNAME=/c\HOSTNAME=dns-cache.kubesphere.com' /etc/sysconfig/network
~ yum install -y bind bind-untils dnsmasq
~ vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
......
allow-query { any; };
......
}
~ cp /etc/named.rfc1912.zones{,.bak}
~ vim /etc/named.rfc1912.zones
zone "kubesphere.com" IN {
type slave;
masters { 10.0.0.40; };
file "slaves/kubesphere.localhost";
allow-update { none; };
};
zone "0.0.10.in-addr.arpa" IN {
type slave;
masters { 10.0.0.40; };
file "slaves/kubesphere.loopback";
allow-update { none; };
};
~ cd /var/named/
#从服务器的数据配置文件就不需要手动创建了。
#当启动服务时,主DNS服务器会将数据配置文件同步到/var/named/slave/目录下
###需要对named用户进行ACL权限规划
setfacl -m u:named:rwx /etc/named.conf
setfacl -m u:named:rwx /etc/named.rfc1912.zones
setfacl -R -m u:named:rwx /var/named/
#启动named服务
#service named reload
~ service named restart ; chkconfig named on
#查看端口
~ ss -tunlp | grep ":53"
~ netstat -tunalp | grep 53
#查看同步效果
~ ls -lh /var/named/slaves/
total 8.0K
-rw-r--r--. 1 named named 335 Jun 26 16:11 kubesphere.localhost
-rw-r--r--. 1 named named 366 Jun 26 16:11 kubesphere.loopback
#dnsmasq配置文件修改
~ vim /etc/dnsmasq.conf
domain=kubesphere.com #需要解析的域名
server=10.0.0.40 #主DNS服务器的IP
cache-size=15000 #声明缓存条数
#重启服务
~ service dnsmasq restart
Shutting down dnsmasq: [ OK ]
Starting dnsmasq: [ OK ]
#10.0.0.100 --> webserver
~ hostnamectl set-hostname webserver.kubesphere.com
~ apt install apache2
~ echo "DNS Test Web Server" > /var/www/html/index.html
~ ufw disable
~ systemctl enable --now apache2
~ ss -ntlp
范例:测试效果
~ vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=10.0.0.41 #缓存DNS服务器
~ service network restart
~ curl www.kubesphere.com
DNS Test Web Server
~ nslookup www.kubesphere.com
Server: 10.0.0.41
Address: 10.0.0.41#53
Non-authoritative answer:
Name: www.kubesphere.com
Address: 10.0.0.100
~ nslookup dns.kubesphere.com
Server: 10.0.0.41
Address: 10.0.0.41#53
Name: dns.kubesphere.com
Address: 10.0.0.40
客户端先访问DNS缓存服务器,当DNS缓存服务器没有相应的条目后,DNS缓存服务器会向主DNS服务器要相应的条目。DNS缓存服务器会将条目缓存到自己的数据配置文件中,再将DNS的条目返回给客户端使用。
4.4 智能DNS(分离解析)
实验原理:DNS分离即将相同域名解析为不同的IP地址。现实网络中一些网站为了让用户有更好的体验效果解析速度更快,就把来自不同运营商的用户解析到相对应的服务器,这样就大大提升了访问的速度。
实验环境:
一台内网测试机(单网卡 VMnet 1) 一台网关+DNS(双网卡 VMnet 8 + VMnet 1) 一台外网测试机(单网卡 VMnet 8) 一台web服务器(双网卡 VMnet 8 + VMnet 1) VMnet 8(外网):10.0.0.0/24 ;VMnet 1(内网):192.168.10.0/24
先关闭服务器和客户机上的防火墙和 SELinux
实验步骤:
- 安装 bind 软件
- 内核配置文件开启路由转发,修改 /etc/sysctl.conf
- 修改主配置文件/etc/named.conf
注意:不同的解析放在了各自的区域配置文件(便于区分和维护更新)。/etc/named.conf 是自上而下匹配的,即匹配到条目后就使用该条目的内容,不会往下进行匹配。
生成自己定义的区域文件(反向解析省略掉了)
cp -a /etc/named.rfc1912.zones /etc/lan.zones cp -a /etc/named.rfc1912.zones /etc/wan.zones
配置数据文件
配置内网的正向解析文件 配置外网的正向解析文件
重启服务
service named restart
效果测试
内网客户端网卡配置:将DNS和网关都指为网关服务器的内网口地址 外网客户端网卡配置:将DNS和网关都指为网关服务器的外网口地址
范例:实验操作
#前提将所有的机器的网络设置完毕,并且初始化的环境设置好
###Apache机器
~ hostnamectl set-hostname webserver
~ apt install -y apache2
~ echo "DNS test web page" > /var/www/html/index.html
#所有机器均可以访问该页面即可
~ curl 10.0.0.101
~ curl 192.168.10.101
###dns-server机器
~ hostname dns-server
~ sed -i '/^HOSTNAME=/c\HOSTNAME=dns-server.kubesphere.com' /etc/sysconfig/network
~ yum install -y bind bind-untils
~ vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
~ sysctl -p
~ vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
...
allow-query { any; };
}
view lan {
#match-clients用来匹配相应的网段地址
match-clients { 192.168.10.0/24; };
zone "." IN {
type hint;
file "named.ca";
};
#匹配成功,则调用该区域配置文件进行解析
include "/etc/lan.zones";
};
view wan {
#match-clients用来匹配相应的网段地址
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
#匹配成功,则调用该区域配置文件进行解析
include "/etc/wan.zones";
};
#include "/etc/named.rfc1912.zones";
###配置区域配置文件
~ cp -a /etc/named.rfc1912.zones /etc/lan.zones
~ vim /etc/lan.zones
zone "kubesphere.com" IN {
type master;
file "lan.localhost";
allow-update { none; };
};
~ cp -a /etc/lan.zones /etc/wan.zones
~ vim /etc/wan.zones
zone "kubesphere.com" IN {
type master;
file "wan.localhost";
allow-update { none; };
};
~ cp /var/named/named.localhost /var/named/lan.localhost
~ vim /var/named/lan.localhost
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
dns A 192.168.10.30
www A 192.168.10.101
~ cp lan.localhost wan.localhost
~ vim wan.localhost
$TTL 1D
@ IN SOA kubesphere.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.kubesphere.com.
dns A 10.0.0.40
www A 10.0.0.101
###需要对named用户进行ACL权限规划
setfacl -m u:named:rwx /etc/named.conf
setfacl -m u:named:rwx /etc/named.rfc1912.zones
setfacl -R -m u:named:rwx /var/named/
#启动named服务
#service named reload
~ service named restart ; chkconfig named on
#查看端口
~ ss -tunlp | grep ":53"
~ netstat -tunalp | grep 53
- 主配置文件 /etc/named.conf
- 区域配置文件 /etc/lan.zones /etc/wan.zones
- 数据配置文件 lan.localhost wan.localhost
范例:验证测试效果
~ hostname -I
~ curl www.kubesphere.com
~ nslookup www.kubesphere.com