DNS
Domain Name System
什么是域名:
是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,作用是帮助人类记忆主机,
如果都使用ip人类是无法记忆的
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称
由来
计算机之间的网络通信是使用ip来标记主机的
当只有几台主机一起联网时,可以使用ip地址来进行访问
当主机数量到达几十上百时,人们无法记忆众多的ip,于是出现了hosts文件
windows X:\Windows\System32\drivers\etc\hosts
linux /etc/hosts
格式:
127.0.0.1 localhost
::1 localhost
hosts文件是在一个文件中记录主机域名和对应ip条目来实现域名到ip的转换
但hosts文件是每个主机各自的维护的,无法做到实时更新、更改,当网络大爆发时,
一天接入几百台上千台主机时,根本无法这项工作
当网络大爆发时,hosts已经无法进行维护,IANA就在互联网上提供了服务器来专门解决域名到ip映射,
这就是DNS服务器
当前互联网DNS系统:
互联网上的主机不计其数,如果只靠IANA来完成域名解析的话,维护的工作太大,而且延时问题,等等
最后他们设计一个套巧妙的解决方案: 这就是一种 倒树状结构 方式来实际域名解析
根 .
顶级域名(TLD) .com. .net. .org. [...]
注册的域名 taobao.com. baidu.com. apache.org [...]
根:
全球有 13台IPv4根 + 25台IPv6根 这是写死的
a.root-servers.net. 518400 IN A 198.41.0.4
这些根服务器并不负责具体域名的解析,只是记录了tld顶级域名服务器的IP地址,
tld服务器中记录了例如 taobao.com.这个域 的对应dns服务器IP地址,如此一级
一级传递直到找到目标的解析结果
要注册域名需在IANA的外派机构或代理商处申请,付费,他会在.com等顶级域名dns服务器中添加相应的解析条目。
DNS服务器的分类:
(1) 主DNS服务器
负责一个或者多个域的直接解析的dns服务器,可配置更改
(2) 从DNS服务器
和主一样,负责一个或者多个域的直接解析的dns服务器,
但不可直接配置更改,resource recode(资源条目)都是从主DNS服务同步而来
(3) 缓存DNS服务器
不直接负责域的解析,而是接收到客户端请求后,负责帮客户端去递归回请求结果
例如: 电信的61.139.2.69
(4) 转发DNS服务器
a) 无条件转发:转发所有针对非本机负责解析的区域的请求;
b) 条件转发:仅转发对特定区域的请求(即转发域);
DNS查询的类型:
(1)递归查询
一次请求,取到请求结果
(2)迭代查询
重复请求,最后得到结果
如我们将一个www.abc.com的dns请求发给--->营运商提供的dns服务器A,
{
营运商的dns服务器上如果没有缓存结果,
A--->根,根返回一个tld服务器的地址,
A--->tld服务器,tld服务器返回一个abc.com.的dns服务器地址
A--->abc.com.的dns服务器,abc.com.的dns服务器返回www.abc.com的地址
}
营运商的dns服务器A将结果返回给---->我们
在这一次查询中,
我们是递归(发一个请求,就返回了结果)
而营运商的dns服务器则是迭代(多次请求,最后取得结果)
DNS的解析分类:
正向解析:
域名--->IP
反向解析:
IP---->域名
DNS的资源记录:
name [TTL] IN TYPE record-specific-data
@: 表示当前域
SOA: (Start of Authority)叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器
@ IN SOA ns.abc.com. admin.abc.dom. ( ;DNS记录文件所在的主机位置,管理员联系邮箱
1 ; serial number
3600 ; refresh [1h]
600 ; retry [10m]
86400 ; expire [1d]
3600 ) ; min TTL [1h]
NS: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录
@ IN NS ns.abc.com.
MX: 建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录
@ IN MX mail.abc.com.
A: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录
ns IN A 192.168.1.253
mail IN A 192.168.1.252
www IN A 192.168.1.254
CNAME: 如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录。这个域名一般是主机服务商提供的一个域名
ftp IN CNAME www
AAAA: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录
DNS的实现:
bind: Berkeley Internet Name Domain
由 isc (Internet Systems Consortium) https://www.isc.org/ 维护的开源软件
bind的二进制文件
named - Internet domain name server
named-checkconf - named configuration file syntax checking tool
named-checkzone - checks the syntax and integrity of a zone file.
usage: named-checkzone zonename resourcefilename
rndc - name server control utility
是一个bind的远程管理工具,但一般都只是本地运行
rndc-confgen
rndc管理工具的key生成工具
主配置文件:
/etc/named.conf
named.conf - configuration file for named
/etc/named.rfc1912.zones
所有管理域的定义文件,是named.conf的补充
/etc/rndc.conf
============================================================================================
named.conf说明:
acl caiwu {
192.168.1.1;
192.168.2.0/24;
};
options{
listen-on port 53 { 127.0.0.1; };服务绑定的ip和端口
directory "/var/named";工作目录
allow-query { localhost; };为谁提供查询
recursion yes;是否为客户端迭归
allow-transfer { address_match_element; ... };谁可以作为从服务器传送域配置
dnssec-enable no; 关于dns的安全,关闭
dnssec-validation no; 关于dns的安全,关闭
}
named.rfc1912.zone中的域定义:
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
/var/named/named.localhost,资源记录文件定义:
$TTL 1D ; 统一定义缓存时长
@ IN SOA @ rname.invalid. (
0 ; serial 版本号
1D ; refresh 从服务器刷新时长
1H ; retry 从服务器重试时长
1W ; expire 从服务器失效时长
3H ) ; minimum 否定答案缓存时长
NS @
A 127.0.0.1
AAAA ::1
serial 标记当前资源记录的修改,每次修改手动加1
refresh 从服务器间隔多长时间到主服务器同步
retry 从服务器如果同步失败,多长时间重试
expire 从服务器一直联系不到主服务器,多长时间关闭自己的dns服务
minimum 如果一个查询,没有记录,给出否定答案,对方缓存否定答案的时间(也就是说,对方这个时间内不会再进行这个查询)
安装
yum install bind -y
配置 (注意 防火墙)
a) /etc/named.conf
1. 监听端口、ip
listen-on port 53 { ip; }; 如果监听所有ip就注释这一行
2. 工作路径
directory "/var/named"; 资源记录等文件的存放位置
3. 允许谁在本服务器查询
allow-query { ; }; localhost,any,acl...
4. 如果不是本服务器负责的域,是否到根上去递归
recursion yes;
b) /etc/named.rfc1912.zones
1. 添加一个域
例:
zone "abc.com" IN {
type master;
file "abc.com.zone";
allow-update { none; };
allow-transfer { 从服务器ip; }; 如果有从服务器,这时要允许其传送主服务器的资源记录
;如果是从服务器
type slave;
masters [port] { ip [port]; }; 配置主服务器的ip
masterfile-format text; 说明类型为txet,否则从服务器收到的文件为data,不是txt文件
notify yes; 版本更新后发通知
also-notify { 10.36.17.101;}; 从服务器ip
file "slaves/abc.com.zone.slave"; 配置从服务器的配置文件路径,需指定到slave目录下
; named才有写权限,注:不用提供资源记录文件
};
注解:
type ( master | slave | hint | forward );
master: 主服务器
slave: 从服务器
hint: 根
forward:转发服务器
file "filename;"
定义当前域的资源记录文件,相对路径(相对于配置文件中的directory)
allow-update { none; }; 允许谁动态更新资源记录文件,none:只能手动更新
c) /var/named目录下创建资源记录文件
如果是rpm安装
cp named.localhost abc.com.zone ;修改之
===========================================
$TTL 1D
@ IN SOA ns.abc.com admin.abc.com. (
1 ;serial
1D ;refresh
1H ;retry
1W ;expire
3H );minimum
NS ns.abc.com
NS ns1.abc.com; slave
ns A 10.36.17.100
ns1 A 10.36.17.101; slave
www A 10.36.19.102
d) 修改abc.com.zone 的属组为named; named是named用户运行的,没有权限读取这个文件
chown :named abc.com.zone
e) 重载配置文件
rndc reload
测试
dig -t A www.abc.com @ 10.36.17.100
;; ANSWER SECTION:
www.abc.com. 86400 IN A 10.36.19.102
反向解析:
和正向一样,可参考
/etc/named.rfc1912.zone
zone "36.10.in-addr.arpa" IN {
type master;
file "10.36.in-addr.zone";
allow-update { none; };
};
/etc/named/10.36.in-addr.zone
$TTL 1D
@ IN SOA ns.abc.com. admin.abc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.abc.com.
A 10.36.17.100
100.17 PTR ns.abc.com.
101.17 PTR ns1.abc.com.
102.19 PTR www.abc.com.
注意:
格式:如解析10.36.0.0 这个区域,zone定义中要写作:
36.10.in-addr.arpa; 反向写
DNS 工具
rndc:
是bind的远程管理工具,named服务开启后,会开启一个tcp/953端口,默认只接受本地管理,也应该本地管理
rndc [-b address] [-s server] [-p port] [-V] command
常用命令(command)
reload: 重载配置文件
status: 查看named状态
flush: 清空所有的服务器缓存
retransfer zone: 传送某一区域,并不检查版本号
notify zone: 重新对某一区域传送发通知
host:
host hostname [server]
eg.
host www.abc.com 10.36.17.101
nslookup:
交互式的工具
常用
>server 10.36.17.101 ;设置dns服务器
>set type=ns ;设置查询类型
>www.baidu.com ;要查询的主机
dig:
dig [q-type] host [@server] [d-opt]
q-type: is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a] (Use ixfr=version for type ixfr)
d-opt:
+noall +answer 不显示多余的信息,只显示answer结果
+[no]trace 跟踪从根开始的查询过程
-x addr 逆向查询(将地址映射到名称)
dig -x 10.36.19.102 @10.36.17.100
dig ns baidu.com @10.36.17.101 +noall +answer
编译安装:
准备用户
/usr/sbin/groupadd -g 25 -r named
/usr/sbin/useradd -u 25 -r -N -M -g named -s /bin/false -d /var/named -c Named named
安装依赖包,下载,安装
yum install openssl-devel libcap-devel
wget https://downloads.isc.org/isc/bind9/9.14.2/bind-9.14.2.tar.gz
tar -xf bind-9.14.2.tar.gz
./configure --prefix=PREFIX --sysconfdir=DIR --localstatedir=DIR
./configure --prefix=/usr/local/bind-9.14.2 --sysconfdir=/etc/named --localstatedir=/var
make && make install
配置
cd /usr/local/
ln -s bind-9.14.2/ ./named
vim /etc/profile.d/named.sh
export PATH=/usr/local/named/sbin:/usr/local/named/bin:$PATH
. /etc/profile.d/named.sh
cd /etc/named/
rndc-confgen > rndc.conf
vim named.conf
:r! cat rndc.conf
删除rndc部分,去除named部分的注释
再添加
options{
listen-on port 53 { 10.36.17.101; };
directory "/var/named";
allow-query { any; };
recursion yes;
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
/var/named/named.localhost
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
dig +bufsize=1200 +norec @a.root-servers.net > /var/named/named.ca
设置权限
自建的文件都改
属组named
权限640
*.key要为644
managed-keys.*文件要使用 named:named
chmod 640 /etc/named/* /var/named/*
chmod 644 /etc/named/*.key /var/named/*.key
chown :named /etc/named/* /var/named/*
启动服务(注意防火墙)
named -4u named
-4: 只使用ipv4
-u: 使用的用户
启动后,就可使用rndc来控制named
相关:
Administrator Reference Manual
ftp://ftp.isc.org/isc/bind9/9.14.2/ ;版本相关下载
ftp://ftp.isc.org/isc/bind9/9.14.2/doc/arm/ ;管理员参考手册
网友评论