DNS介绍
DNS(Domain Name Service) 域名解析服务
基于 C/S 结构,端口:53/udp、53/tcp
/etc/hosts 在本机设置IP与FQDN的对应关系
/etc/resolv.conf 增加实现DNS的IP
/etc/nsswitch.conf 可修改DNS服务实现的优先顺序(默认主机hosts优先)
DNS域名是递归类划分:
根域 --> 一级域 --> 二级域 --> …………--> 最多到127级域
FQDN(Fully Qualified Domain Name) 正式完整域名
DNS服务相关程序包:
Server:bind(目前应用最广泛)
bind程序包提供的相关文件:
1.named.service(服务名)
2./etc/named.conf(主配置文件)
3./var/name/(默认存放区域解析库文件)
4./etc/named.rfc1912.zones(定义区域文件名)
Client:bind-utils(提供了测试DNS的工具:dig、host、nslookup)
1.dig FQDN [@DNS_IP](无[]表示从本机查看)
(dig -t NS 域名 [@DNS_IP] 查看谁提供“域名”解析服务)
2.host FQDN
3.nslookup
>server DNS_IP
>FQDN
DNS服务器
主要分为 主DNS服务器、从DNS服务器、缓存DNS服务器(转换器);
主DNS服务器:主管理和维护负责解析的域内解析库;
解析库是由众多资源记录组合而成,包括以下内容:
SOA:Start of Authority 起始授权记录,每个区域解析库SOA记录必须排在第一位,并且只有一条;
A:用于解析FQDN的IPv4地址
AAAA:用于解析FQDN的IPv6地址
PTR:用于反向解析,由IP地址解析FQDN
NS:Name Server,用于标记当前域的DNS服务器
CNAME:Canonical Name ,表示别名
MX:Mail exchange,邮件交换器
服务器得的搭建
主要涉及需要的文件为:
/etc/named.conf 主要配置文件
/etc/named.rfc1912.zones 区域信息设置文件
/var/named/ 此目录下主要设置区域解析文件
在此三个文件中配置好相关内容,即可生效DNS服务器
DNS服务器的规划实验
实验:实现正向DNS主服务器的搭建
vim /etc/named.conf
listen-on port 53 {localhost;};(localhost表示本机所有IP地址)
allow-query { any; };(表示此DNS服务可对所有主机服务)
vim /etc/named.rfc1912.zones
zone "ruixiaoyu.com" IN {
type master;
file "ruixiaoyu.com.zone";
};
cd /var/named/
vim ruixiaoyu.com.zone(注意所属组为named)
$TTL 1D
@ IN SOA dns1 admin ( 01 1D 1H 1W 3H )
NS dns1
dns1 A 172.18.122.241
test A 1.1.1.1
A 2.2.2.2
www CNAME test
检查配置文件语法:
named-checkconf
检查区域解析库文件语法:
named-checkzone ruixiaoyu.com /var/named/ruixiaoyu.com.zone
rndcc reload == systemctl reload named (重新加载配置文件)
/etc/named.conf中:
recursion yes(允许进入根域递归查询)
/etc/named.rfc1912.zones中区域信息下:
allow-update { any;};(允许任何人对此区域解析库进行修改)
客户端进行修改:
nsupdate
>server DNS_IP
>update add 资源记录
>send
实验:主从架构DNS服务器(主DNS为上一个实验)
为保证安全,特定从服务器才可抓取区域解析库文件
在主DNS服务器上:
vim /etc/named.conf
allow-transfer {172.18.123.17;};(从服务器地址)
vim ruixiaoyu.com.zone(增加)
NS dns2
dns2 A 172.18.123.17
从DNS服务器设置:
vim /etc/named.conf
listen-on port 53 {localhost;};
allow-query { any; };
allow-transfer { none;};
vim /etc/named.rfc1912.zones
zone "ruixiaoyu.com" IN {
type slave;
masters { 172.18.122.241;};
file "slaves/ruixiaoyu.com.slave.zone";
};
sytemctl start named
(注意:主从复制,基于主服务的区域解析库文件里的序列号)
实验:DNS子域的实现(主DNS服务器是上面已经建好的)
方法一:在主DNS服务器上
vim ruixiaoyu.com.zone(增加)
www.ziyu A 3.3.3.3
方法二:在主DNS服务器上
vim /etc/named.rfc1912.zones
zone "ziyu.ruixiaoyu.com" IN {
type master;
file "ziyu.ruixiaoyu.com.zone";
};
vim ziyu.ruixiaoyu.com.zone(注意所属组为named)
$TTL 1D
@ IN SOA dns1 admin ( 01 1D 1H 1W 3H )
NS dns1
dns1 A 172.18.122.241
www A 3.3.3.3
方法三:在新的一台主机建立(也称为子域的委派)
在主DNS服务器
vim /etc/named.conf
dnssec-enable no;
dnssec-validation no;
vim ruixiaoyu.com.zone(增加)
ziyu NS dns3
dns3 A 172.18.123.34
在新主机上建立子域:
vim /etc/named.rfc1912.zones
zone "ziyu.ruixiaoyu.com" IN {
type master;
file "ziyu.ruixiaoyu.com.zone";
};
vim ziyu.ruixiaoyu.com.zone(注意所属组为named)
$TTL 1D
@ IN SOA dns1 admin ( 01 1D 1H 1W 3H )
NS dns1
dns1 A 172.18.123.34
www A 3.3.3.3
实验:实现DNS的转发(主DNS服务器是上面已建好的)
在另外一台主机上建立一个新的域
vim /etc/named.conf
listen-on port 53 {localhost;};
allow-query { any; };
vim /etc/named.rfc1912.zones
zone "jiudian.com" IN {
type master;
file "jiudian.com.zone";
};
cd /var/named/
vim jiudian.com.zone(注意所属组为named)
$TTL 1D
@ IN SOA dns1 admin ( 01 1D 1H 1W 3H )
NS dns1
dns1 A 172.18.121.22
www A 4.4.4.4
全局性:在主DNS服务器上
vim /etc/named.conf
forward first;(表示没有的域进行转发,转发后若查询不到,再去根上找)
forward only;(表示没有的域进行转发,转发后若是仍找不到,就结束)
forwarders { 172.18.121.22;};
特指性:在主DNS服务器上
vim /etc/named.rfc1912.zones
zone "jiudian.com" IN {
type forward;
forward first;(或者forward only)
forwarders { 172.18.121.22;};
};
主DNS服务器上
vim /etc/named.conf
dnssec-enable no;
dnssec-validation no;
DNS服务器 rndc flush 可清除缓存(rndc管理基于tcp:953)
实验:实现智能DNS(自动分配给客户端最近的DNS服务器)
可通过CDN(Content Delivery Network)服务进行管理
假设有三个网段,分别给不同地区使用
vim /etc/named.conf
acl beijingnet {
192.168.26.0/24;
};
acl shanghainet {
172.18.0.0/16;
};
acl othernet {
any;
};
(需要注意acl的顺序,客户端ip会按照此顺序进行排查)
建立三个不同的区域解析库文件
cd /var/named/
vim ruixiaoyu.com.zone.bj(注意所属组为named)
$TTL 1D
@ IN SOA dns1 admin ( 01 1D 1H 1W 3H )
NS dns1
dns1 A 172.18.122.241
www A 1.1.1.1
vim ruixiaoyu.com.zone.sh(注意所属组为named)
$TTL 1D
@ IN SOA dns1 admin ( 01 1D 1H 1W 3H )
NS dns1
dns1 A 172.18.122.241
www A 2.2.2.2
vim ruixiaoyu.com.zone.ot(注意所属组为named)
$TTL 1D
@ IN SOA dns1 admin ( 01 1D 1H 1W 3H )
NS dns1
dns1 A 172.18.122.241
www A 3.3.3.3
此时需要启用view视图,并且此时区域信息文件则必须放在view下
vim /etc/named.conf
zone "." IN {
type hint;
file "named.ca";
};
(这一段迁移至/etc/named.rfc1912.zones中)
创建view视图信息
vim /etc/named.conf
view beijingview {
match-clients { beijingnet;};
zone "ruixiaoyu.com" IN {
type master;
file "ruixiaoyu.com.zone.bj";
};
include "/etc/named.rfc1912.zones";
};
view shanghaiview {
match-clients { shanghainet;};
zone "ruixiaoyu.com" IN {
type master;
file "ruixiaoyu.com.zone.sh";
};
include "/etc/named.rfc1912.zones";
};
view otherview {
match-clients { othernet;};
zone "ruixiaoyu.com" IN {
type master;
file "ruixiaoyu.com.zone.ot";
};
include "/etc/named.rfc1912.zones";
};
其中区域信息
zone "ruixiaoyu.com" IN {
type master;
file "ruixiaoyu.com.zone.bj";
};
也可以换写为(注意组的权限为named)
include "/etc/named.rfc1912.zones.bj"
include "/etc/named.rfc1912.zones.sh"
include "/etc/named.rfc1912.zones.ot"
然后在各自独立的总区域信息文件中,加入设置的区域信息