DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或者反向的地址查询服务,及正向解析和反向解析
部分 | 解释 |
---|---|
www | 主机位 |
sina | 二级域名 |
com.cn | 顶级域名 |
. | 根域名 |
实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为“zone”(区域)。根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录,)和反向区域(包含IP地址到域名的解析记录)
也成为DNS高速缓存服务器
通过向其他域名服务器查询获得域名→IP地址记录
将域名查询结果存到本地,提高重复查询时的速度
客户机访问某个网站的DNS解析过程
1、客户机利用电信分配的DNS会找到离客户机最近的位置会有一个DNS缓存服务器
可以查找到DNS缓存里面的域名与ip对应的记录
2、如果没有对应的记录,DNS缓存服务器会直接去找根域服务器
3、根域服务器会告诉DNS缓存服务器顶级域名服务器在什么地方
4、DNS缓存服务器就会去找顶级域名服务器
5、顶级域名服务器会告诉DNS缓存服务器(如果告诉了二级域在哪里
6、DNS缓存服务器回去找二级域服务器 {主机A记录域名→IP}
7、二级域服务器会告诉DNS缓存服务器
8、DNS缓存服务器会记录下来
告诉客户机对应的IP
9、然后客户机就可以去访问对应的网站
网站会将网页推给客户机,下载到客户机的缓存里面
特定DNS区域的权威服务器,具有唯一性
负责维护该区域内所有域名===>IP地址的映射记录
需要自行建立所负责区域的地址数据文件
也成为辅助域名服务器,是对主域名服务器的热备份
其维护的域名===>IP地址记录来源于主域名服务器
需要从主域名服务器自动同步区域地址数据库
BIND(Berkeley Internet Name Daemon)
BIND是应用最广泛的DNS服务程序
官方站点:https://www.isc.org/
可以直接使用yum安装
host===>本地自测的命令
相关软件包
软件包 | 作用 |
---|---|
bind | 提供了域名服务的主要程序及相关文件 |
bind-utils | 提供了对DNS服务器的测试工具,如nslookup等 |
bind-libs | 提供了bind,bind-utils需要使用的库函数 |
bind-chroot | 为BIND服务提供一个伪装的根目录(/var/named/chroot)以提高安全性 |
BIND服务器端程序
主要执行程序
默认监听端口:53
主配置文件
存DNS解析记录的数据文件位于
BIND服务控制
[root@localhost ~]# rpm -qc bind '查看配置文件位置'
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
配置文件:
1、主配置文件 负责dns全局功能 例如:日志文件位置,访问权限等
2、区域配置文件 负责构建解析区域 例如:多域名解析
3、区域数据配置文件 负责管路主机解析记录 例如:解析映射
全局配置部分
设置DNS服务器的全局参数
包括监听地址/端口,数据文件的默认位置等
使用options{…};的配置段
[root@localhost ~]# vim /etc/named.conf
options { '配置段'
listen-on port 53 { any; }; 'ipv4 监听地址和端口 {一般更改为any}'
listen-on-v6 port 53 { ::1; };
directory "/var/named"; '区域数据文件的默认存放位置'
...省略内容
allow-query { any; }; '允许使用本DNS服务的网段:{一般更改为any}'
}
区域配置部分
设置本服务器提供域名解析的特定DNS区域
包括域名,服务器角色,数据文件名等
使用zone“区域名”IN{…};的配置段
[root@localhost ~]# vim /etc/named.rfc1912.zones
正向解析
zone "wemz.com" IN {
type master; '区域类型,主域名服务器'
file "wemz.com.zone"; '区域数据文件名'
allow-update { none; };
};
反向解析
zone "66.168.192.in-addr.arpa" IN {
type master; '反向192.168.66.66/24区域。“IN”关键字可省略'
file "192.168.10.arpa";
allow-update { none; };
};
全局TTL配置项及SOA记录
$TTL(Time To Live,生存时间)记录
SOA(Start Of Authority,授权信息开始)记录
分号“;”开始的部分表示注释信息
$TTL 1D '有效解析记录的生存周期'
@ IN SOA @ rname.invalid. ( 'SOA标记,域名,管理邮箱'
2011030502 '更新序列号,可以是10位以内的整数'
1D '无效解析记录的生存周期'
1W '失效时间,超过改时间仍无法下载则放弃'
3H ) '刷新时间,重新下载地址数据的间隔'
M 分
H 时
W 周
D 天
正向解析记录
NS域名服务器(Name Server )记录
MX 邮件交换(Mail Exchange)记录
A 地址 (Address)记录,只用在正向解析区域中
CNAME别名(Canonical Name)记录
@ IN NS ns1.bdqn.com. '当前区域DNS服务器的'
IN MX 10 mail.bdqn.com.
ns1 IN A 65.65.656.56
www IN A 2.2.2.2
mail IN A 5.5.5.5
ftp IN CNAME www
* IN A 3.3.3.3 '泛域名解析,未匹配到的主机头到到此地址'
反向区域数据文件
例如,对于反向区域10.168.192.in-addr.arpa,添加的反向解析记录可以是以下形式
1 IN PTR www.eee.com. '表示IP地址为192.168.192.1的主机的域名时www.eee.com'
5 IN PTR mail.eee.com. '表示IP地址为192.168.192.5的主机的域名时mail.eee.com
**使用netstat命令查看服务状态**
```css
[root@localhost ~]# netstat -nuap | grep named '以数字形式显示当前系统中所有的UDP连接信息,同时显示对应的进程信息。'
udp 0 0 192.168.122.1:53 0.0.0.0:* 65212/named
udp 0 0 192.168.197.142:53 0.0.0.0:* 65212/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 65212/named
udp6 0 0 ::1:53 :::* 65212/named
[root@localhost ~]# netstat -ntap | grep named '以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息。'
tcp 0 0 192.168.197.142:53 0.0.0.0:* LISTEN 65212/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 65212/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 65212/named
tcp6 0 0 ::1:53 :::* LISTEN 65212/named
tcp6 0 0 ::1:953 :::* LISTEN 65212/named
TCP: 用于连接
UDP: 用于快速解析
区域数据配置文件的特殊应用
基于域名解析的负载均衡
同一域名对应到多个IP地址
泛域名解析
www IN A 192.168.100.100 '轮询负载均衡'
www IN A 192.168.100.101
www IN A 192.168.100.102
* IN A 192.168.100.100 '泛域名解析'
修改完区域数据文件以后,可以执行named-checkconf命令对该文件进行语法检查
若zone文件中没有语法错误,系统将给出“OK”的提示信息
named-checkconf工具基本格式
named-checkconf -z [主配置文件]
[root@localhost ~]# named-checkconf -z /etc/named.conf
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone kgc.com/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
named-checkzone工具基本格式
named-checkzone <域名><区域数据文件>
[root@localhost ~]# named-checkzone kgc.com /var/named/kgc.com.zone
zone kgc.com/IN: kgc.com/MX 'mail.kog.com' (out of zone) is a CNAME 'mail.kog.com.netsolmail.net' (illegal)
zone kgc.com/IN: loaded serial 0
OK
1、安装bind安装包
[root@localhost ~]# rpm -q bind
未安装软件包 bind
[root@localhost ~]# yum install bind -y
2、修改主配置文件
root@localhost ~]# vim /etc/named.conf
12 options {
13 listen-on port 53 { any; }; '改为any,监听所有端口'
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 recursing-file "/var/named/data/named.recursing";
20 secroots-file "/var/named/data/named.secroots";
21 allow-query { any; }; '改为any,允许所有人访问'
3、修改区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
‘5yy复制19-23行,粘贴到24行’
19 zone "localhost" IN {
20 type master;
21 file "named.localhost";
22 allow-update { none; };
23 };
24 zone "yang.com" IN { '解析区域域名yang.com'
25 type master;
26 file "yang.com.zone"; '关联到区域数据配置文件'
27 allow-update { none; };
28 };
4、修改区域数据配置文件(添加邮件交换记录、别名解析、泛域名解析)
[root@localhost ~]# cd /var/named
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost yang.com.zone
[root@localhost named]# vim yang.com.zone
$TTL 1D
@ IN SOA yang.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS yang.com.
A 127.0.0.1
IN MX 5 mail.yang.com '邮件交换记录'
mail IN A 192.168.88.88 'mail.yang.com→192.168.88.88'
www IN A 192.168.66.66 '正向解析域名'
smtp IN CNAME mail '别名解析,stmp是mail别名'
* IN A 6.6.6.6 '泛域名解析,只解析6.6.6.6,网页上则无法方法'
5、清空防火墙规则和关闭核心防护,开启named功能
[root@localhost named]# setenforce 0 '关闭linux系统核心防护'
[root@localhost named]# iptables -F '清空防火墙规则'
[root@localhost named]# systemctl start named '开启named功能'
6、配置DNS服务器
[root@localhost named]# echo "nameserver 20.0.0.51" > /etc/resolv.conf
7、验证能否解析(正向解析、邮件交换记录、别名解析、泛域名解析成功)
[root@localhost named]# host www.yang.com
www.yang.com has address 192.168.66.66
[root@localhost named]# host mail.yang.com
mail.yang.com has address 192.168.88.88
[root@localhost named]# host smtp.yang.com
smtp.yang.com is an alias for mail.yang.com.
mail.yang.com has address 192.168.88.88
[root@localhost named]# host abc.yang.com
abc.yang.com has address 6.6.6.6
8、配置反向解析(192.168.99.99)
[root@localhost named]# vim /etc/named.rfc1912.zones
'把上面一段复制粘贴到下面'
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "99.168.192.in-addr.arpa" IN { '地址倒过来写,只倒着写三段192.168.99.,最后一个99写在区域数据配置文件中'
type master;
file "yang.com.fan"; 'yang.com.fan代表反向解析的数据配置文件'
allow-update { none; };
};
[root@localhost named]# pwd
/var/named
[root@localhost named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback yang.com.zone
[root@localhost named]# cp -p yang.com.zone yang.com.fan
$TTL 1D
@ IN SOA yang.com. admin.yang.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS yang.com.
A 127.0.0.1
99 IN PTR www.yang.com
[root@localhost named]# systemctl restart named
[root@localhost named]# host 192.168.99.99
99.99.168.192.in-addr.arpa domain name pointer www.yang.com.99.168.192.in-addr.arpa.
9、再开一台centos 7 作为网站服务器,安装apache,为另一台win 7 客户端提供服务
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=13eb7ccf-6168-4877-bfad-b13e88fa8440
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.66.66
NATMASK=255.255.255.0
GATEWAY=192.168.66.1
DNS1=20.0.0.51
[root@localhost ~]# service network restart
Restarting network (via systemctl): [ 确定 ]
[root@localhost ~]# ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.66.66 netmask 255.255.255.0 broadcast 192.168.66.255
inet6 fe80::37ae:2257:d351:2bed prefixlen 64 scopeid 0x20
ether 00:0c:29:d5:1f:7d txqueuelen 1000 (Ethernet)
RX packets 67 bytes 7533 (7.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35 bytes 4486 (4.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# vim index.html
happy every day
两台centos 7虚拟机,第一台正向解析(用上一个实验的),第二台配置如下
1、修改主服务器,第一台centos 7
[root@localhost named]# vim /etc/named.rfc1912.zones '修改区域配置文件'
zone "yang.com" IN {
type master;
file "yang.com.zone";
allow-transfer { 20.0.0.61; };
};
[root@localhost named]# systemctl restart named '重启named服务'
2、修改从服务器
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind -y
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# ls slaves
[root@localhost named]# vim /etc/named.conf
options {
listen-on port 53 { any; }; '改为any,监听所有端口'
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; '改为any,允许所有人访问'
[root@localhost named]# vim /etc/named.rfc1912.zones
复制上面一行粘贴到下面并修改
19 zone "localhost" IN {
20 type master;
21 file "named.localhost";
22 allow-update { none; };
23 };
24 zone "yang.com" IN { '修改域名为yang.com'
25 type slave; '类型为从服务器'
26 file "slaves/yang.com.zone"; '关联到slaves/yang.com.zone从服务器区域数据配置文件'
27 masters { 20.0.0.51; }; '主服务器为20.0.0.51'
28 };
[root@localhost named]# systemctl start named
[root@localhost named]# ls slaves '查看'
yang.com.zone
[root@localhost named]# echo "nameserver 20.0.0.51" > /etc/resolv.conf
[root@localhost named]# host www.yang.com
www.yang.com has address 192.168.66.66
[root@localhost named]# host mail.yang.com
mail.yang.com has address 192.168.88.88
[root@localhost named]# host abc.yang.com
abc.yang.com has address 6.6.6.6
1、DNS正向解析(邮件交换解析、别名解析、泛域名解析)区域配置文件中A记录条目
NS yang.com.
A 127.0.0.1
IN MX 5 mail.yang.com '邮件交换记录'
mail IN A 192.168.88.88 'mail.yang.com→192.168.88.88'
www IN A 192.168.66.66 '正向解析域名'
smtp IN CNAME mail '别名解析,stmp是mail别名'
* IN A 6.6.6.6 '泛域名解析,只解析6.6.6.6,网页上则无法方法'
2、DNS主从配置区域配置文件中关键代码块
[root@localhost named]# vim /etc/named.rfc1912.zones '修改区域配置文件'
zone "yang.com" IN {
type master;
file "yang.com.zone";
allow-transfer { 20.0.0.61; };
};
24 zone "yang.com" IN { '修改域名为yang.com'
25 type slave; '类型为从服务器'
26 file "slaves/yang.com.zone"; '关联到slaves/yang.com.zone从服务器区域数据配置文件'
27 masters { 20.0.0.51; }; '主服务器为20.0.0.51'
28 };