前言:
最近整理一些以前的学习笔记。
过去都是存储在本地,此次传到网络留待备用。
DNS
- 域名系统(Domain Name System)
- 作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
- 目前,每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
- 协议: TCP/UDP
- 默认端口: 53
- DNS服务器的功能:
- 正向解析:根据注册的域名查找对应的ip地址
- 反向解析:根据ip地址查找对应的注册域名,不常用
-
FQDN(Full Qualified Domain Name),完整合格域名
- 网站名 = 服务器名.域名后缀
- www.pku.edu.cn = 站点名.***.二级域.一级域
-
所有完整的域名都会以 .(点) 结尾:
根域 . ┌─────┬─────┼─────┬─────┬─────┬──────┬─ .com .cn .us .tw .kr .hk ....... #一级DNS服务器 ┌─────┴────┬─────────┬─────────┬─ .com.cn .net.cn .org.cn .edu.cn #二级DNS服务器 ├─────────────────┬───────────────┬─ .lala.com.cn .haha.com.cn .xixi.com.cn #三级DNS服务器 ├─────────────────────┬─ web1.lala.com.cn tts.lala.com.cn #完整主机名
-
常见的顶级域名/一级域名:
国家/地区域 .cn .us .kr .hk .tw ... 组织域 .com .net .edu .org .gov ...
DNS解析库
-
资源记录:rr(resource record),有类型的概念;用于此记录解析的属性。
资源记录 名称 意义 A Address地址 IPv4 此记录列出特定主机名的 IP 地址 AAAA Address地址 IPv6 NS Name Server域名服务器 此记录指定负责给定区域的名称服务器 SOA Start of Authority授权状态 MX Mail Exchanger邮件交换 此记录列出了负责接收发到域中的电子邮件的主机 CNAME Canonical Name规范名 此记录指定标准主机名的别名 PTR Pointer指针
DNS查询过程
-
DNS查询机制:
- 递归查询(Recursive Query)
- 首选DNS服务器,跑到相应其他DNS服务器上,将询问的最终结果带回来的过程
- 客户端与首选DNS服务器交互
- 默认开启递归查询( recursion yes|no )
- 迭代查询(Iterative Query)
- 首选DNS服务器与其他DNS服务器交互
- 递归查询(Recursive Query)
-
DNS的查询顺序:
1、本地hosts文件 2、本地DNS缓存 3、本地DNS服务器 4、发起迭代查询
BIND域名服务
- Berkeley Internet Name Domain , 伯克利因特网域名服务
- 是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台
- 官网: https://www.isc.org/
- 软件:
- bind , 域名服务包
- bind-chroot , 提供虚拟根支持,依赖bind
- 系统服务: named
- 协议端口: TCP/UDP 53
- 运行时的虚拟根路径: /var/named/chroot
- 主配置文件: /etc/named.conf //设置负责本机解析的域名
- 地址库文件: /var/named //主机名与ip地址的对应关系
一、搭建基本的DNS服务器
svr7.test.cn ---> 192.168.4.7
pc207.test.cn ---> 192.168.4.207
www.test.cn ---> 192.168.4.100
服务端(192.168.4.7)
1.安装软件包
]# yum -y install bind bind-chroot
2.修改配置文件
]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.4.7; }; #监听服务器的地址和端口
directory "/var/named"; #默认,指定地址库文件存放路径
allow-query { any; }; #允许任何客户机查询
};
zone "test.cn" IN { #指定本机负责解析的域名
type master; #指定本机为权威的主DNS服务器
file "test.cn.zone"; #指定地址库文件为test.cn.zone
};
]# named-checkconf /etc/named.conf #检查配置文件语法
3.建立地址区域文件
]# cd /var/named/ #准备模板文件
]# cp -p named.localhost test.cn.zone #权限属性不变拷贝模板
]# ls -l test.cn.zone
-rw-r----- 1 root named 152 6月 21 2007 test.cn.zone
]# vim test.cn.zone #编辑区域文件
$TTL 1D ;TTL=Time To Live=生存时间
@ IN SOA @ rname.invalid. ( ;SOA=Start Of Authority=授权信息开始,@区域名
0 ; serial,序列号 ;分号; 开始的部分表示注释
1D ; refresh,刷新时间
1H ; retry,重试时间间隔
1W ; expire,过期时间
3H ) ; minimum,无法解析时否定答案的TTL值
test.cn. NS svr7 ;NS=NameServer,声明test.cn.域名的DNS服务器为svr7.test.cn.
svr7 A 192.168.4.7 ;指定svr7.test.cn.的ip地址为192.168.4.7
www A 1.1.1.1
ftp A 2.2.2.2
]# named-checkzone test.cn test.cn.zone #检查配置文件,命令 区域名 配置文件
zone test.cn/IN: loaded serial 0
OK #检查结果ok
4.启服务
]# systemctl restart named
]# systemctl enable named
客户端
1.设置DNS服务器
]# echo 'nameserver 192.168.4.7 > /etc/resolv.conf'
2.检测域名解析
- host
]# host svr7.test.cn svr7.test.cn has address 192.168.4.7
- nslookup
]# nslookup www.test.cn Server: 192.168.4.7 Address: 192.168.4.7#53 Name: www.test.cn Address: 1.1.1.1
二、多区域DNS服务
1.修改配置文件(接上例192.168.4.7)
]# vim /etc/named.conf #追加新的区域
zone "qq.com" IN {
type master;
file "qq.com.zone";
};
2.编辑区域文件
]# cp -p /var/named/test.cn.zone /var/named/qq.com.zone
]# vim qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 3.3.3.3
ftp A 4.4.4.4
3.重启服务
]# systemctl restart named
4.客户端测试
]# nslookup www.qq.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.qq.com
Address: 3.3.3.3
三、特殊的解析记录
接上例
1.基于DNS域名的负载均衡:
#服务端
]# vim qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.11 ;配置www的负载均衡
www A 192.168.4.12
www A 192.168.4.13
ftp A 4.4.4.4
]# systemctl restart named
#客户端测试
]# nslookup www.qq.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.qq.com
Address: 192.168.4.12
Name: www.qq.com
Address: 192.168.4.13
Name: www.qq.com
Address: 192.168.4.11
2.泛域名解析:
服务器:
]# cd /var/named
]# vim qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.11
www A 192.168.4.12
www A 192.168.4.13
ftp A 4.4.4.4
* A 1.2.3.4 ;泛域名解析
]# systemctl restart named
客户端:
]# host ftp.qq.com
ftp.qq.com has address 4.4.4.4
]# host fan.qq.com
fan.qq.com has address 1.2.3.4
3.有规律的泛域名解析:
web1.qq.com------》192.168.10.1
web2.qq.com------》192.168.10.2
web3.qq.com------》192.168.10.3
web4.qq.com------》192.168.10.4
......
web50.qq.com------》192.168.10.50
函数: $GENERATE 生成连续范围的数字
服务器:
]# cd /var/named/
]# vim qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.11
www A 192.168.4.12
www A 192.168.4.13
ftp A 4.4.4.4
* A 1.2.3.4 ;泛域名解析
$GENERATE 1-50 web$ A 192.168.10.$ ;使用$GENERATE函数生成有规律的泛域名解析
]# systemctl restart named
#客户端
]# host web.qq.com
web.qq.com has address 1.2.3.4
]# host web1.qq.com
web1.qq.com has address 192.168.10.1
]# host web11.qq.com
web11.qq.com has address 192.168.10.11
]# host web50.qq.com
web50.qq.com has address 192.168.10.50
四、DNS的子域授权
接上例
父域 www.test.cn 总公司 svr7 服务器 192.168.4.7
子域 www.bj.test.cn 北京分公司 pc207 服务器 192.168.4.207
-
父域主机配置子域授权(192.168.4.7)
]# cd /var/named ]# vim test.cn.zone test.cn. NS svr7 bj.test.cn. NS pc207.bj ;指定子域的DNS服务器 svr7 A 192.168.4.7 pc207.bj A 192.168.4.207 www A 1.1.1.1 ftp A 2.2.2.2 ]# systemctl restart named
-
子域主机配置(192.168.4.207)
]# yum -y install bind bind-chroot #安装软件 ]# vim /etc/named.conf #修改配置文件 options { directory "/var/named"; }; zone "bj.test.cn" IN { ;解析子域域名 type master; file "bj.test.cn.zone"; }; ]# cd /var/named ]# cp -p named.localhost bj.test.cn.zone ]# vim bj.test.cn.zone #编辑区域文件 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum bj.test.cn. NS pc207 ;设置域服务器 pc207 A 192.168.4.207 www A 11.12.13.14 ]# systemctl restart named #重启服务 ]# systemctl enable named
-
测试
]# nslookup www.bj.test.cn 192.168.4.207 Server: 192.168.4.207 Address: 192.168.4.207#53 Name: www.bj.test.cn Address: 11.12.13.14
五、缓存DNS
-
作用:加速解析过程,让客户端最快得到解析结果。
-
软件包:bind bind-chroot
-
方式
-
全局转发:
- 将请求转发给指定的公共DNS(其他缓存DNS),请求递归服务。
-
根域迭代:
- 依次向根、一级、二级...域的DNS服务器迭代。
-
-
实例:
- 思路:192.168.4.254作为缓存DNS服务器,真正的DNS是172.40.1.10
1.安装软件包
]# yum -y install bind bind-chroot
2.编辑配置文件
]# cat /etc/resolv.comf nameserver 172.40.1.10 ]# vim /etc/named.conf options { directory "/var/named"; forwarders { 172.40.1.10; }; #当本地缓存中没有对应的解析时指定去172.40.1.10解析 }; ]# systemctl restart named
3.客户端.虚拟机使用解析
]# nslookup www.360.com 192.168.4.254
六、Split分离解析
- 让客户端访问网络中最近的服务器。
- 当不同类别的客户机请求解析同一个域名时,得到不同的解析结果(Ip)。
- 当收到客户机的DNS查询请求的时候,能够区分客户机的来源地址,为不同类别的客户机提供不同的解析结果(IP地址)。
BIND的view视图
-
根据源地址集合将客户机分类,不同客户机获得不同结果(待遇有差别)。
- 注意:客户机分类得当(所有的客户端都要找到对应的分类)
- 注意:由上到下匹配,匹配即停止
- 注意:所有的zone都必须在view字段中
-
格式:
view "视图名" { match-clients { IP; } //匹配客户端地址 zone "解析的域名" { ... 地址库1; } };
view "nsd" { match-clients { 192.168.4.207; } #匹配客户端的地址 zone "test.cn" { ...... 地址库1; }; }; view "abc" { match-clients { any; } zone "test.cn" { ...... 地址库2; }; };
-
实例,环境及需求:
- 权威DNS:svr7.test.cn 192.168.4.7
- 负责区域:test.cn
- A记录分离解析 —— 以 www.test.cn 为例
- 客户机的解析结果:
- 192.168.4.207 -----> 192.168.4.100
- 其他地址 ----------> 1.2.3.4
操作步骤 虚拟机A 1.修改配置文件/etc/named.conf view "nsa" { match-client { 192.168.4.207; }; zone "test.cn" { type master; file "test.cn.nsd"; }; }; view "abc" { match-client { any; }; zone "test.cn" { type master; file "test.cn.abc"; }; }; 2.建立地址库文件 ]# vim /var/named/test.cn.nsd test.cn. NS svr7 svr7 A 192.168.4.7 www A 192.168.4.100 ]# vim /var/named/test.cn.abc test.cn. NS svr7 svr7 A 192.168.4.7 www A 1.2.3.4 3.重启named服务 ]# systemctl restart named 4.在虚拟机A、B分别测试解析
七、DNS缓存使用变量
]# vim /etc/named.conf
options {
directory "/var/named";
};
acl 变量名 { 地址1; 地址2; 地址3; 地址4;...};
view "nsd" {
match-clients { 变量名; };
zone "test.cn" {
type master;
file "test.cn.nsd";
};
};
view "abc" {
match-clients { any; };
zone "test.cn" {
type master;
file "test.cn.abc";
};
};
来源:oschina
链接:https://my.oschina.net/u/3936657/blog/3077030