DNS Domain name system 域名解析系统
/etc/hosts 文件 计算机对应的名字转化成对应的IP地址
dns服务器:让有意义的,人类较容易记住的主机名(英文字母),转译为计算机所熟悉的IP地址
正向解析:根据主机名称(域名)查找对应的IP地址
反向解析:根据IP地址查找对应的主机域名
早期使用hosts文件解析域名
主机名称重复
主机维护困难
DNS(Domain Name System域名系统)
分布式
层次性
根域
顶级域
组织域 gov 政府部门 com 商业部门 edu 教育部门 org 民间团体组织 net 网络服务机构 mil 军事部门
国家域/地区域 cn 中国 jp 日本 uk 英国 au 澳大利亚 hk 中国香港
反向域 将IP地址映射到名称 “in-addr.arpa”
二级域
三级域
主机名
主机名.DNS后缀=FQDN
当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/nsswitch.conf确定主机名解释顺序
缓存域名服务器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录
从域名服务器
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
bind安装
BIND(Berkeley Internet Name Daemon)
伯克利Internet域名服务
官方站点:
相关软件包
bind-9.3.3-7.el5.i386.rpm
bind-utils-9.3.3-7.el5.i386.rpm
bind-chroot-9.3.3-7.el5.i386.rpm
caching-nameserver-9.3.3-7.el5.i386.rpm
BIND服务器端程序
服务脚本:/etc/init.d/named
默认监听端口:53(tcp udp)
主配置文件: /var/named/chroot/etc/named.conf
数据文件位于:/var/named/chroot/var/named/目录
安装bind-chroot软件包
主配置文件: /etc/named.caching-nameserver.conf
数据文件位于: /var/named/chroot/var 目录
安装caching-nameserver软件包
缓存配置文件:named.caching-nameserver.conf
全局配置部分
设置DNS服务器的全局参数
包括监听地址/端口、数据文件的默认位置等
使用 options { …… }; 的配置段
options {
listen-on port 53 { 192.168.16.1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db“;
allow-query { 192.168.1.0/24; 192.168.16.0/24; };
forwarders { 192.168.1.1/24; 202.103.96.112; };
};
include "/etc/named.rfc1912.zones
区域配置部分
设置本服务器提供域名解析的特定DNS区域
包括域名、服务器角色、数据文件名等
使用 zone “区域名” IN { …… }; 的配置段
zone "." IN {
type hint; (hint表示根区域、master表示主区域、slave表示辅助区域)
file "named.ca";(file 用于设置 该区域对应的数据文件名)
};
倒序网络地址.in-addr.arpa 的形式表示反向区域
zone "sxkeji.com" IN {
type master;
file "sxkeji.com.zone";
};
zone "16.168.192.in-addr.arpa" IN { 表示针对192.168.16.0/24网段的反向解析区域
type master;
file "192.168.16.arpa";
};
DNS区域通过资源记录为客户端提供相应域名解析
DNS区域文件中包含的资源记录的类型
资源记录 说 明
SOA(起始授权机构) 指定该区域的权威名称服务器
NS(名称服务器) 表示某区域的权威服务器和SOA中指定的该区域的主服务器和辅助服务器
A(主机) 列出了区域中FQDN(完全合格的域名)到IP地址的映射
PTR(指针) 相对于A资源记录,PTR记录把IP地址映射到FQDN(反向域名解析)
MX 邮件交换器记录,向指定邮件交换主机提供消息路由
CNAME(别名) 将多个名字映射到同一台计算机,便于用户访问
全局TTL配置项及SOA记录
$TTL(Time To Live,生存时间)记录
SOA(Start Of Authority,授权信息开始)记录
分号“;”开始的部分表示注释信息
$TTL 86400 ; 地址解析记录的默认缓存时间
@ IN SOA dns.sxkeji.com. root.sxkeji.com. (
2011021901 ;更新序列号
3H ;刷新时间
15M ;重试延时
1W ;失效时间
1D ;地址解析记录的最小缓存时间
)
域名解析记录
NS域名服务器(Name Server)记录
MX邮件交换(Mail Exchange)记录
A地址(Address)记录,只用在正向解析的区域数据文件中
CNAME别名(Canonical Name)记录
@ IN NS ns1.sxkeji.com.
IN MX 10 mail.sxkeji.com.
ns1 IN A 192.168.16.1
mail IN A 192.168.16.1
www IN A 192.168.16.1
ftp IN CNAME www
域名解析记录
PTR指针(Point)记录,只用在反向解析的区域数据文件中
配置反向解析记录时,只需要指定IP地址中的主机地址部分即可,网络地址部分不用写
1 IN PTR
4 IN PTR study.sxkeji.com. 若在 16.168.192.in-addr.arpa 反向区域数据文件中,则对应为 192.168.16.4 的IP地址
基于域名解析的负载均衡
同一域名对应到多个IP地址
movie IN A 192.168.16.11
movie IN A 192.168.16.12
movie IN A 192.168.16.13
泛域名解析
找不到精确对应的A记录时,使用“*”进行匹配
这条记录一定要写在最后
* IN A 192.168.16.173
named-checkconf工具
格式:named-checkconf -t /var/named/chroot
[root@localhost etc]# named-checkconf -t /var/named/chroot
named-checkzone工具
格式:named-checkzone <域名> <区域数据文件>
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# named-checkzone sxkeji.com sxkeji.com.zone
zone sxkeji.com/IN: loaded serial 2011
OK
日志文件/var/log/messages
重启named服务失败,可以通过日志排错
1.[root@localhost ~]# tail -f /var/log/messages
Feb 15 20:18:49 rhela named[12114]: starting BIND 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 -u named -t /var/named/chroot
Feb 15 20:18:49 rhela named[12114]: loading configuration from '/etc/named.conf'
Feb 15 20:18:49 rhela named[12114]: none:0: open: /etc/named.conf: permission denied
Feb 15 20:18:49 rhela named[12114]: loading configuration: permission denied
Feb 15 20:18:49 rhela named[12114]: exiting (due to fatal error)
2.[root@localhost ~]# tail -f /var/log/messages
Feb 15 20:28:46 rhela named: zone 255.in-addr.arpa/IN: loaded serial 42
Feb 15 20:28:46 rhela named: zone 0.in-addr.arpa/IN: loaded serial 42
Feb 15 20:28:46 rhela named: zone hello.com/IN: loading master file hello.com.zone: file not found
Feb 15 20:28:46 rhela named: _default/hello.com/IN: file not found
Feb 15 20:28:46 rhela named: zone 0.168.192.in-addr.arpa/IN: loading master file 192.168.0.zone: file not found
Feb 15 20:28:46 rhela named: _default/0.168.192.in-addr.arpa/IN: file not found
提供DNS服务的必要条件
服务器有固定IP地址
安装并启动DNS服务
有区域文件,或者配置转发器,或者配置根域名服务器
##############修改配置文件
[root@dns etc]# pwd
/var/named/chroot/etc
[root@dns etc]# cp -p named.caching-nameserver.conf named.conf
[root@dns etc]#
[root@dns etc]# vim named.conf
[root@dns etc]# cat named.conf
options {
listen-on port 53 { any; };
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";
allow-query { any; };
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "facebook.com" IN {
type master;
file "facebook.com.zone";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.in-addr.arpa";
allow-update { none; };
};
[root@dns etc]#
############新建和配置zone文件
[root@dns named]# pwd
/var/named/chroot/var/named
[root@dns named]#
[root@dns named]# cp -p localhost.zone facebook.com.zone
[root@dns named]# vim facebook.com.zone
[root@dns named]# cp -p named.
named.broadcast named.ip6.local named.zero
named.ca named.local
[root@dns named]# cp -p named.local 0.168.192.in-addr.arpa
[root@dns named]# vim 0.168.192.in-addr.arpa
[root@dns named]# cat facebook.com.zone
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS dns.facebook.com.
dns IN A 192.168.0.97
www IN A 192.168.0.97
ftp IN A 192.168.0.97
mail MX 5 192.168.0.97
[root@dns named]# cat 0.168.192.in-addr.arpa
$TTL 86400
@ IN SOA dns.facebook.com. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns.facebook.com.
97 IN PTR www
97 IN PTR mail
97 IN PTR ftp
[root@dns named]#
#########启动服务
[root@dns named]# /etc/init.d/named restart
停止 named: [确定]
启动 named: [确定]
[root@dns named]# host
[root@dns named]# vim /etc/resolv.conf
[root@dns named]# host
has address 192.168.0.97
[root@dns named]# host 192.168.0.97
97.0.168.192.in-addr.arpa domain name pointer mail.0.168.192.in-addr.arpa.
97.0.168.192.in-addr.arpa domain name pointer ftp.0.168.192.in-addr.arpa.
97.0.168.192.in-addr.arpa domain name pointer
[root@dns named]#
===============DNS转发=====================
A --> Client resolv.conf --> B
B --> Forwarders { C=IP; };
C --> Real Server 提供DNS服务
===============DNS转发=====================
主从复制
named.conf 文件
zone 文件
=============================
子域授权
============================
--> C A 爷爷 baidu.com -->zone dns.hello...
B 爸爸 hello.baidu.com
儿子
访问控制列表
ACL:一个被命名的地址匹配列表
acl 语句不能嵌入其他的语句中
acl 语句的语法:
acl acl_name {
address_match_list;
};
BIND 默认预定义了 4 个名称的地址匹配列表
any : 所有主机
localhost : 本机
localnets : 本地网络上的所有主机
none : 不匹配任何主机
view的域名服务器
分离解析(Split DNS)
来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果
基本配置步骤:
1.在named.conf主配置文件中为不同的客户机地址启用不同的zone区域设置,各自使用独立的数据文件
2.分别建立不同的区域数据文件
3.启动或重新加载named服务程序
4.验证分离解析的域名服务器
1.在named.conf主配置文件中为不同的客户机地址启用不同的zone区域设置,各自使用独立的数据文件
view “视图1” {
match-clients { 客户机地址1; }
zone “sxkeji.com” IN {
……
};
};
view “视图2” {
match-clients { 客户机地址2; }
zone “sxkeji.com” IN {
……
};
};
事例:
view "LAN" {
match-clients { 192.168.1.0/24; }; 针对来自局域网客户机的区域数据文件
zone "sxkeji.com" IN {
type master;
file "sxkeji.com.zone.lan";
};
};
view "WAN" {
match-clients { any; }; 针对来自其他任意地址客户机的区域数据文件
zone "sxkeji.com" IN {
type master;
file "sxkeji.com.zone.wan";
};
};
2.分别建立不同的区域数据文件
[root@ns1 ~]# vi /var/named/chroot/var/named/sxkeji.com.zone.lan
……
ns1 IN A 192.168.1.1
www IN A 192.168.1.5
mail IN A 192.168.1.6
[root@ns1 ~]# vi /var/named/chroot/var/named/sxkeji.com.zone.wan
……
ns1 IN A 192.168.16.1
www IN A 192.168.16.1
mail IN A 192.168.16.1
3.启动或重新加载named服务程序
service named reload
4.验证分离解析的域名服务器
使用192.168.1.0/24网段的客户机解析 ,结果应为 192.168.1.5
使用其他IP地址的客户机解析 ,结果应为 192.168.16.1
事务签名
TSIG:保障主从DNS之间的复制区域数据库文件的安全性
使用对称加密技术
在主DNS上生成密钥
[root@rhela etc]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST hello
查看密钥
[root@rhela etc]# cat Khello.+157+47419.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: o7Be+nIiocRHk4XnSP+Gkg== 密钥
根据密钥信息创建如下密钥文件
[root@rhela etc]# cat hello.key
key "hello" {
algorithm hmac-md5;
secret "o7Be+nIiocRHk4XnSP+Gkg==";
};
修改主DNS的named.conf文件
include "/etc/hello.key"; 导入密钥文件
options {
directory "/var/named";
allow-transfer { key hello;}; 配置允许传送的密钥
…..
将主DNS上密钥文件复制到从DNS
注意检查权限和所有权
scp -p hello.key root@192.168.0.171:/var/named/chroot/etc/
修改从DNS的named.conf文件
include "/etc/hello.key"; 导入密钥文件
server 192.168.0.170 {
keys { hello;}; 指明主DNS和密钥
};
options {
directory "/var/named";
};
查看/var/log/messages日志文件
注意主从DNS服务器的日期时间要一致
view aa: request has invalid signature: TSIG hello: tsig verify failure (BADTIME)
view aa: request has invalid signature: TSIG hello: tsig verify failure (BADTIME)
view aa: zone transfer 'hello.com/AXFR/IN' denied
view aa: transfer of 'hello.com/IN': AXFR started: TSIG hello
view aa: transfer of 'hello.com/IN': AXFR ended
rndc命令
rndc:一种控制域名服务运行的工具
可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效
可以对named进程进行远程控制
过数字证书进行认证和DNS服务器连接
[root@rhela etc]# rndc-confgen > /etc/rndc.conf 生成密钥数据
创建控制端配置文件/etc/rndc.conf文件
[root@rhela etc]# ]# rndc-confgen > /etc/rndc.conf
[root@rhela etc]# ]# cat /etc/rndc.conf
key "rndckey" {
algorithm hmac-md5;
secret "v38u998Oplim2MoDwSR2kw==";
};
options {
default-key "rndckey";
default-server 127.0.0.1; 默认服务器IP
default-port 953;
};
新建rndc.key文件,根据上述提示输入相应内容
注意文件的权限和所有权
(直接把/etc/rndc.conf内容直接写入到/var/named/chroot/etc/rndc.key cat /etc/rndc.conf > /var/named/chroot/etc/rndc.key)
[root@rhela etc]# vi /var/named/chroot/etc/rndc.key
key "rndckey" {
algorithm hmac-md5;
secret "v38u998Oplim2MoDwSR2kw==";
};
controls {
inet 127.0.0.1 port 953 服务器监听的地址和端口
allow { 127.0.0.1; } keys { "rndckey"; }; 允许管理服务器的主机地址
};
在named.conf文件中,导入密钥文件
重启服务后,使用rndc工具对named进行控制
rndc默认端口:tcp 953
[root@rhela etc]# vi named.conf
将/etc/rndc.conf后半部分的有效配置复制粘贴到named.conf文件的末尾即可
[root@rhela etc]# vi named.conf
key "rndckey" {
algorithm hmac-md5;
secret "v38u998Oplim2MoDwSR2kw==";
};
controls {
inet 127.0.0.1 port 953 服务器监听的地址和端口
allow { 127.0.0.1; } keys { "rndckey"; }; 允许管理服务器的主机地址
};
也可以直接一条语句就行 include "/etc/rndc.key";
重新读取配置文件
[root@rhela etc]# rndc reload
server reload successful….
保存当前的高速缓存
[root@rhela etc]# rndc dumpdb
显示当前DNS服务器状态
[root@rhela etc]# rndc status
number of zones: 4
…..
server is up and running
阅读(1886) | 评论(0) | 转发(0) |