https://www.jianshu.com/p/296b2c7ea76f
毛利卷卷发关注
0.482018.07.25 10:33:44字数 4,919阅读 4,909
DNS:Domain Name Service 应用层协议(C/S,53/udp, 53/tcp)
分类:最多可以有127级域名
域名.jpg
查询类型:
FQDN:Fully Qualified Domain Name,完全合格域名
解析类型:
利用“通知”机制,来保证主从服务器能及时同步
通知机制:主服务器解析库发生变化时,会主动通知从服务器
同步时一些必要参数:
resource record,简称RR
name [TTL] IN rr_type value
TTL可从全局继承
TTL(Time-To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
@可用于引用当前区域的名字
同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
Start Of Authority,起始授权记录,表明一个区域内部,主从DNS服务是如何同步数据以及起始授权对象是谁
注意:一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
name:当前区域的名字,例如“magedu.com.”
value:有多部分组成
当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如:admin.magedu.com
主从服务区域传输相关定义以及否定的答案的统一的TTL
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
2015042201 ;序列号,serail number
2H ;刷新时间,refresh
10M ;重试时间,retry
1W ;过期时间,expire
1D ;否定答案的TTL值,nigative answer TTL
)
Name Server,专用于标明当前区域的DNS服务器
name:当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
internet Address,FQDN-->IP IPV4
name: 某主机的FQDN,例如www.magedu.com.
value: 主机名对应主机的IP地址
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 2.2.2.2
mx1.magedu.com. IN A 3.3.3.3
mx2.magedu.com. IN A 4.4.4.4
$GENERATE 1-254 HOST$ A 1.2.3.$ # 主机名和ip地址同名的时候可以这样操作,避免重复操作
*.magedu.com. IN A 5.5.5.5 # 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
magedu.com. IN A 6.6.6.6
FQDN --> IPv6
name:FQDN
value:IPv6
Mail eXchanger,邮件交换器
name:当前区域的名字
value:当前区域的某邮件服务器(smtp服务器)的主机名
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
注意:
Canonical Name,别名记录
name:别名的FQDN
value:真正名字的FQDN
www.magedu.com. IN CNAME websrv.magedu.com.
PoinTeR,IP --> FQDN
name:IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
# 如1.2.3为网络地址,可简写成:
4 IN PTR www.magedu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写
网络地址及后缀可省略;主机地址依然需要反着写
类似根域授权tld:
.com. IN NS ns1.com.
.com. IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2
magedu.com. 在.com的名称服务器上,解析库中添加资源记录
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
magedu.com. IN NS ns3.magedu.com.
ns1.magedu.com. IN A 3.3.3.1
ns2.magedu.com. IN A 3.3.3.2
ns3.magedu.com. IN A 3.3.3.3
glue record:粘合记录,父域授权子域的记录
BIND:Bekerley Internat Name Domain
/etc/named.conf # 主配置文件
/etc/named.rfc1912.zones # 专门的zone配置文件
/etc/rndc.conf # rdnc配置文件
/etc/rndc.key # 用来远程控制DNS服务的密钥文件
/usr/sbin/named # 二进制程序
/usr/sbin/named-checkconf # 检查配置文件语法
/usr/sbin/named-checkzone # 检查zone文件语法
/usr/sbin/named-compilezone
/usr/sbin/named-journalprint # 查看jnl文件
/usr/sbin/rndc
/var/log/named.log # 日志文件
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca # 用于存放根服务器的地址信息
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves
[root@centos7 ~]# cat /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; # IPv4地址监听端口及监听的主机列表
listen-on-v6 port 53 { ::1; }; # IPv6地址监听端口及监听的主机列表
directory "/var/named"; # 服务器的工作目录
dump-file "/var/named/data/cache_dump.db"; # 当执行rndc dumpdb时服务器dump文件的路径
statistics-file "/var/named/data/named_stats.txt"; # 执行rndc stats将服务器的统计信息写入文件,默认为named.stats
memstatistics-file "/var/named/data/named_mem_stats.txt"; # 默认为named.memestats,当退出的服务的时候将服务器的统计信息写到文件中
allow-query { localhost; }; # 允许查询的主机列表,表示可以对主机列表里的主机提供服务
allow-transfer { any;}; # 指定哪些主机可以从服务器上接收区域传输,未指定将允许传输到所有的主机,默认是any,极其不安全,通常修改为指定主机或none
recursion yes; # 是否开启递归查询请求,设置为no的话,不去找根
dnssec-enable yes; # dns安全策略,建议关闭
dnssec-validation yes; # dns安全策略,建议关闭
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
把一个或多个地址归并为一个集合,并通过一个统一的名称调用
四个内置acl:
注意:只能先定义,后使用;因此一般定义在配置文件中,处于options的前面
访问控制的指令:
dig [-t type] name [@SERVER][query options]
注意:dig只用于测试dns系统,不会查询hosts文件进行解析
查询选项:
跟踪解析过程:dig +trace magedu.com
进行递归解析:dig +recurse magedu.com
测试反向解析:dig -x IP
模拟区域传送:
[root@xuexi ~]# dig -t a www.longshuai.com
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> -t a www.longshuai.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8670
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.longshuai.com. IN A
;; ANSWER SECTION:
www.longshuai.com. 21600 IN A 172.16.10.16
;; AUTHORITY SECTION:
longshuai.com. 21600 IN NS dnsserver.longshuai.com.
;; ADDITIONAL SECTION:
dnsserver.longshuai.com. 21600 IN A 172.16.10.15
;; Query time: 0 msec
;; SERVER: 172.16.10.15#53(172.16.10.15)
;; WHEN: Sat Aug 12 23:38:17 CST 2017
;; MSG SIZE rcvd: 102
在结果中:
host [-t type] name [SERVER]
nslookup [-option][name | -][server]
也可使用交互式
remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程
提供辅助性的管理功能;953/tcp
rndc COMMAND:
Content Delivery Network,内容分发网络
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求
CDN.jpeg
用于实现智能DNS
注意:
格式:
view VIEW_NAME {
match-clients { testacl; };
zone “magedu.com” {
type master;
file “magedu.com.zone”; };
include “/etc/named.rfc1912.zones”;
};
view VIEW_NAME {
match-clients { testacl; };
include “/etc/named.rfc1912.zones.VIEW_NAME”;
};
# dig A example.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
...
SERVFAIL:The nameserver encountered a problem while processing the query.
vim /etc/named.conf
listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
allow-query { any; }; # 修修改可以以为任何主机提供服务
named-checkconf:主配置文件语法检查
rndc reload
vim /etc/named.conf
listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
allow-query { any; }; # 修修改可以以为任何主机提供服务
vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
named-checkconf
cp -a named.localhost magedu.com.zone:为了保证权限,也可以自己创建,记得修改权限
vim magedu.com.zone
$TTL 1D
@ IN SOA dns1 admin.magedu.com (
2018072201 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
dns1 A 192.168.31.71
web-nginx01 A 1.1.1.1
web-nginx02 A 1.1.1.2
app-tomcat01 A 2.2.2.2
www CNAME web-nginx01
* A 192.168.31.71 # 泛域名解析
@ A 192.168.31.71 # 直接解析本域
$GENERATE 1-100 web-nginx0$ A 1.1.1.$
named-checkzone magedu.com magedu.com.zone:如当前工作目录不是/var/named/,需要使用绝对路径
rndc reload
vim /etc/named.conf
listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
allow-query { any; }; # 修修改可以以为任何主机提供服务
vim /etc/named.rfc1912.zones
zone "39.168.192.in-addr.arpa" IN {
type master;
file "39.168.192.in-addr.arpa.zone";
};
named-checkconf
cp -a named.localhost 39.168.192.in-addr.arpa.zone:为了保证权限,也可以自己创建,记得修改权限
vim 39.168.192.in-addr.arpa.zone
$TTL 86400
@ IN SOA dns1.magedu.com. admin.magedu.com. (
2018072201 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1.magedu.com.
71 PTR dns1.magedu.com.
100 PTR www.qq.com. # 正反向解析结果最好一致
named-checkzone 39.168.192.in-addr.arpa 39.168.192.in-addr.arpa.zone:如当前工作目录不是/var/named/,需要使用绝对路径
rndc reload
vim /etc/named.rfc1912.zones:在指定zone语句块中添加
Allow-update {any;}; # 为了安全最好仅允许指定主机
chmod 770 /var/named:动态更新实质上就是named用户将指定资源记录写到生成的/var/named/{指定zone}.jnl文件中,随后再同步到指定的zone文件中,因此需要再目录下有w权限
nsupdate
•>server 192.168.39.71
•>zone magedu.com
•>update add ftp.magedu.com 86400 IN A 8.8.8.8 # 这里的TTL不能省略
•>send
•>update delete www.magedu.com A
•>send
主DNS:
vim /etc/named.conf
listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
allow-query { any; }; # 修修改可以以为任何主机提供服务
allow-transfer { 192.168.39.72; }; # 允许从服务器拉取数据,注意中花括号前后均有空格
named-checkconf
vim /var/named/magedu.com.zone:将从服务器信息添加到指定zone文件中
$TTL 1D
@ IN SOA dns1 admin.magedu.com (
2018072201 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
NS dns2
dns1 A 192.168.39.71
dns2 A 192.168.39.72
web-nginx01 A 1.1.1.1
web-nginx02 A 1.1.1.2
app-tomcat01 A 2.2.2.2
www CNAME web-nginx01
* A 192.168.39.71
@ A 192.168.39.71
$GENERATE 1-100 web-nginx0$ A 1.1.1.$
named-checkzone magedu.com. magedu.com.zone
从DNS:
vim /etc/named.conf
listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
allow-query { any; }; # 修修改可以以为任何主机提供服务
allow-transfer { none; }; # 为了安全禁止任何主机拉取
vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type slave;
masters { 192.168.39.71; };
file "slaves/magedu.com.slave.zone";
};
named-checkconf
ls /var/named/slave/:查看是否拉取成功
父域DNS:
vim /etc/named.conf
listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
allow-query { any; }; # 修修改可以以为任何主机提供服务
dnssec-enable no; # 关闭加密
dnssec-validation no;
vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA dns1 admin (
2018072209 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
shanghai NS dns2 # 添加shanghai子域信息
dns1 A 192.168.39.71
dns2 A 192.168.39.72
www.beijing A 3.3.3.3 # 主机少的情况下,可以直接在父域直接定义子域中的主机
www A 1.1.1.1
rndc reload
子域DNS:
vim /etc/named.conf
listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
allow-query { any; }; # 修修改可以以为任何主机提供服务
vim /etc/named.rfc1912.zones
zone "shanghai.magedu.com" IN {
type master;
file "shanghai.magedu.com.zone";
};
scp 192.168.39.71:/var/named/magedu.com.zone shanghai.magedu.com.zone:由于scp默认root身份执行,导致文件权限出错,一定要注意文件权限
vim /var/named/shanghai.magedu.com.zone
$TTL 1D
@ IN SOA dns1 admin (
2018072201 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
dns1 A 192.168.39.72
www A 2.2.2.2
rndc reload
forward first/only:表示如果 forwarders list 为非空,默认为first值,服务器首先请求 forwarders list ,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答,如果设置值为only,服务器将只会请求 forwarders中的DNS主机
forwarders:指定用来 forwarding的ip地址. 默认为空列(即不转发)
对非本机所负责解析区域的请求,全转发给指定的服务器
vim /etc/named.conf
Options {
forward first|only;
forwarders { ip;};
};
仅转发对特定的区域的请求,比全局转发优先级高
vim /etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type forward;
forward first|only;
forwarders { ip;};
};
vim /etc/named.conf:acl必须在option前添加,而且注意迁移zone,因为一旦启用view,所有的zone都必须定义装载view中
acl beijingnet {
192.168.31.0/24;
10.0.0.0/8;
};
acl shanghainet {
172.18.0.0/16;
};
acl othernet {
any;
};
options {
......
};
logging {
......
};
view beijingview {
match-clients {beijingnet;};
include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
match-clients {shanghainet;};
include "/etc/named.rfc1912.zones.sh";
};
view otherview {
match-clients {othernet;};
include "/etc/named.rfc1912.zones.other";
};
include "/etc/named.rfc1912.zones"; # 删除此行,所有的zone都将定义在view中
......
vim /etc/named.rfc1912.zones.bj
zone "magedu.com" IN {
type master;
file "magedu.com.zone.bj";
};
vim /etc/named.rfc1912.zones.sh
zone "magedu.com" IN {
type master;
file "magedu.com.zone.sh";
};
vim /etc/named.rfc1912.zones.other
zone "magedu.com" IN {
type master;
file "magedu.com.zone.other";
};
vim /var/named/magedu.com.zone.bj
$TTL 1D
@ IN SOA dns1 admin (
2018072209 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
dns1 A 192.168.39.71
www A 1.1.1.1
vim /var/named/magedu.com.zone.sh
......
www A 2.2.2.2
vim /var/named/magedu.com.zone.other
......
www A 3.3.3.3
DNS架构.png
注意:
配置www主机:
yum install -y httpd
vim /var/www/html/index.html
Welcome to magedu!
systemctl start httpd
配置主DNS:
vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query { any; };
allow-transfer { 192.168.39.75; };
dnssec-enable no;
dnssec-validation no;
vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
named-checkconf
vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA dns1 admin (
2018072401
1D
2H
3D
1D )
NS dns1
NS dns2
dns1 A 192.168.39.74
dns2 A 192.168.31.75
www A 192.168.31.76
chmod 640 magedu.com.zone
chown :named magedu.com.zone
named-checkzone magedu.com. magedu.com.zone
systemctl start named
配置从DNS:
vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query { any; };
allow-transfer { 192.168.39.75; };
dnssec-enable no;
dnssec-validation no;
vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type slave;
masters { 192.168.39.74; };
file "slaves/magedu.com.slave.zone";
};
named-checkconf
systemctl start named
配置comDNS:
vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query { any; };
dnssec-enable no;
dnssec-validation no;
vim /etc/named.rfc1912.zones
zone "com" IN {
type master;
file "com.zone";
};
named-checkconf
vim /var/named/com.zone
$TTL 1D
@ IN SOA dns1 admin (
2018072401
1D
2H
3D
1D )
NS dns1
magedu NS dns2
magedu NS dns3
dns1 A 192.168.39.73
dns2 A 192.168.39.74
dns3 A 192.168.39.75
chmod 640 com.zone
chown :named com.zone
named-checkzone com. com.zone
systemctl start named
配置根DNS:
vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query { any; };
dnssec-enable no;
dnssec-validation no;
zone "." IN {
type master;
file "root.zone";
};
named-checkconf
vim /var/named/root.zone
$TTL 1D
@ IN SOA dns1 admin (
2018072401
1D
2H
3D
1D )
NS dns1
com NS dns2
dns1 A 192.168.39.72
dns2 A 192.168.39.73
chmod 640 root.zone
chown :named root.zone
named-checkzone . root.zone
systemctl start named
配置局域网DNS:
vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query { any; };
dnssec-enable no;
dnssec-validation no;
vim /var/named/named.ca
. 86400 IN NS dns1
dns1 86400 A 192.168.39.72
systemctl start named
配置client:
vim /etc/resolv.conf
nameserver 192.168.39.71
下载bind
编译安装bind
环境变量
vim /etc/profile.d/named.sh
export PATH=/usr/local/bind9/bin:
/usr/local/bind9/sbin/:$PATH
库和头文件
vim /etc/ld.so.conf.d/named.conf
/usr/local/bind9/lib
ldconfig –v
ls -sv /usr/local/bind9/include /usr/include/named
man帮助
vim /etc/man.config | /etc/man_db.conf
MANPATH /usr/local/bind9/share/man
man named.conf
主配置文件
vim /etc/named/named.conf
options {
directory "/var/named/"
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file “named.localhost";
allow-update {none;};
};
zone “1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update {none;};
};
区域数据库
mkdir /var/named
named-checkconf
dig +norec @a.root-servers.net > /var/named/named.ca
vim /var/named/named.localhost
$TTL 1d
@ IN SOA localhost. admin.localhost. (
2016061801
1h
5m
7d
1d)
IN NS localhost.
localhost. IN A 127.0.0.1
vim /var/named/named.loopback
$TTL 1d
@ IN SOA localhost. admin.localhost. (
2016061801
1h
5m
7d
1d)
NS @
A 127.0.0.1
PTR localhost.
设置权限
启动服务和测试
手机扫一扫
移动阅读更方便
你可能感兴趣的文章