DNS服务
1. 什么是DNS
1.1 dns的含义
dns:作为域名和IP地址相互映射的一个分布式数据库
域名解析:通过主机名,得到该主机名对应的IP地址的过程叫做域名解析(主机名解析) 协议与端口号:TCP和UDP协议,端口号:53
1.2 dns的功能
1.2.1 主机名:也即域名,一个IP地址都可以都有个主机名
1.2.2 主机名到IP地址的映射方式:
静态映射:每台设备上都配置主机到IP地址的映射,各个设备独立维护自己的映射表,而且只提供本设备使用(hosts)
动态映射:建立一套域名解析系统(DNS),只为专门的DNS服务器上配置主机到IP地址的映射需要主机名通信设备,首先要到DNS服务器查询主机所对应的IP地址
1.3 dns的重要性
技术角度:dns是互联网大多数应用的实际寻址方式
资源角度:域名是互联网上的身份标识,是不可重复的唯一标识资源
1.4 dns冗余
dns冗余即辅dns服务器,防止主服务器宕机或者无法访问。
1.5 域名分级
1.5.1分级:主机名.三级域名.二级域名.顶级域名. 注:最后有一个点代表的是根域,所有域名的起点,最后一个点常被省略。
1.5.2 域名代表常见例子:
顶级域名:cn中国;edu 教育机构;com 商业公司
二级域名:代表组织或公司名称
三级域名:代表组织或公司内部的主机名称
1.6dns管理
注:管理机制:根域名服务器管理顶级域名服务器,顶级域名服务器管理二级域名服务器,依次分层管理
in-addr.arpa : 逆向解析域(逆向域名解析)
stanford、mit:教育机构域名(斯坦福、麻省理工)
1.7dns域名查询
1、采用递归解析:本地DNS服务器向根域名服务器发出请求,根域名服务器对本地域名服务的请求进行解析,得到记录再给本地DNS服务器,本地DNS服务器将记录缓存,并将记录返给客户机。
2、采用迭代解析:本地DNS服务器向根域名服务器发出请求,根域名服务器返回给本地域名服务器一个能够解析请求的根的下一级域名服务器的地址,本地域名服务器再向根返回的IP地址发出请求,最终得到域名解析记录。
2. 什么是DNS服务器
1.master(主DNS服务器):拥有区域数据的文件,并对整个区域数据进行管理。
2.slave(从服务器或叫辅助服务器):拥有主DNS服力器的区域文件的副本,辅助
DNS服务器对客户端进行解析,当主DNS服务器坏了后,可以完全接替主服务器的工作。
3.forward:将任何查询请求都转发给其他服务器。起到一个代理的作用。
4.cache:缓存服务器。
5. hint:根DNSinternet服务器集。
2.1dns服务器的含义
Dns服务器:计算机域名系统(Domain Name System or Server)
2.2 dns服务器的构成
域名服务器:保存有该网络中所有主机的域名和对应的IP地址,并具有将域名转换为IP地址功能的服务器。一个域名对应一个IP或者多个IP,IP不一定有域名。分为:主服务器和转发服务器。
域名解析器:协商使用递归服务,使用查询头位。通常需要遍历多个名称服务器才能找到所需的信息
3. 部署DNS主从服务器
这里部署DNS主从服务器我以一个案例来进行
案例:随着一家公司的扩张,计算机越来越多,现在公司决定采用DNS解决方案来解决公司内部服务器IP地址的域名问题。这个域使用 abc.com正向解析域,网络采用的私有网络地址为:172.16.0.0/16
3.1 部署主域名服务器
3.1.1 安装软件
Yum–y install bind
Yum–y install bind-chroot
Yum–y install bind-utils
注: bind : linux下dns服务的主程序
bind-chroot :bind运行的根目录,是系统的一个子目录(为了提高安全性)
bind-utils : bind软件提供的一组DNS工具包(其中工具有:dig、host、nslookup、nsupdate等)
3.1.2 修改主配置文件
由于为了安全,已经安装了bind-chroot,所以所有的配置文件必须在chroot的目录下进行
将配置文件named.conf拷贝到chroot的/etc目录下
[[email protected]~]# cp /etc/named.conf /var/named/chroot/etc/ [[email protected]~]# chown root.named /var/named/chroot/etc/named.conf
修改配置文件
[[email protected]~]# vim /var/named/chroot/etc/named.conf、 options { listen-onport 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备份缓存资料后保存的文件路径和名称 statistics-file"/var/named/data/named_stats.txt";//运行rndcstats后,统计信息的保存路径与名称 memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; };//指定哪些主机可以查询服务器的权威解析记录 recursionyes;//是否允许递归查询 dnssec-enable yes;// dnssec-validation yes; dnssec-lookaside auto; /* Pathto ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; acl secondserver{ 172.16.0.253; }; logging { channeldefault_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { //“.”代表根区域 typehint; //根区域的类型为hint file"named.ca"; //指定zone文件,默认已经成 }; include "/etc/named.rfc1912.zones"; include"/etc/named.root.key";
定义根区域和自定义区域
[[email protected]~]# vi /etc/named.rfc1912.zones #添加自定义区域(定义正向解析文件): zone "abc.com" IN { typemaster;//定义服务器类型 allow-transfer { secondserver; };//哪些服务器可以从主服务器下载数据文件 file"abc.com.zone";//指定正向解析文件名 }; zone "16.172.in-addr.arpa" IN { typemaster; allow-transfer { secondserver; }; file"172.16.zone";//反向解析文件名 };
3.1.3 创建区数据文件
创建正向解析abc.com.zone域数据文件并修改用户和组
[[email protected] ~]# cd/usr/share/doc/bind-9.8.2/sample/var/named/ [[email protected] named]# cp named.ca/var/named/chroot/var/named/ [[email protected] named]# chown root.named/var/named/chroot/var/named/named.ca [[email protected] named]# cp named.localhost/var/named/chroot/var/named/abc.com.zone[[email protected] named]# chownroot.named /var/named/chroot/var/named/abc.com.zone
编辑abc.com.zone
[[email protected] named]# vim/var/named/chroot/var/named/abc.com.zone mail.abc.com. IN A 172.16.0.2 $TTL 1D //查询结果在外DNS服务器上的缓存时间,以秒为单位 @ INSOA dns1.abc.com. jacob.abc.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H) ; minimum NS dns1.abc.com. NS dns2.abc.com. MX10 mail.abc.com. dns1 IN A 172.16.0.254 dns2 IN A 172.16.0.253 ntp.abc.com. IN A 172.16.0.22 mail.abc.com. IN A 172.16.0.25 fileserver IN A 172.16.0.200 printserver IN A 172.16.0.101 www IN A 172.16.0.200 注:开头格式:[zone] IN SOA [主机名] [管理员email] SOA记录(起始授权机构)NS (NameServer)记录 (域名服务器) mail: 一般指管理员的邮箱,用”.”代替了”@”结尾加上”.” NS:表示这个主机是一个域名服务器 A:定义了一条A 记录,即主机名到IP地址对应记录 MX:定义了一条邮件记录 CNAME:定义了对应主机的一个别名 Type类型有三种:masterslave hint : Master:表示定义的是主域名服务器 Slave:表示定义的是辅助域名服务器 Hint:表示是互联网中根域名服务器 Zone:关键字定义域区,一个zone定义一个域区 PTR:记录用来解析IP地址对应的域名 内容注释: Serial:其格式通常会是“年月日+修改次序,当slave要进行资料同步时会比较这个号码。如果发现这里的号码比它边的数值“大”就进行更新,否则葫芦。不能超过10位数字 Refresh:告诉slave要隔多久要进行资料同步(是否同步看serial的比较结果)。 Retry:如果slave在进行更新失败后,要隔多久再进行重试。 Expire:这里是记录逾期时间当slave一直未能成功与master取得联系,那到这里就放弃retry,同时这里的资料也将标识过期(expire) Minimum:这是最小默认TTL值,如果前面没有用”$TTL”来定义,就以此值为准。
配置反向解析域172.16.zone
[[email protected] named]# vim/var/named/chroot/var/named/172.116.zone $TTL 1D @ IN SOAdns1.abc.com. jacob.abc.com. ( 10 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1.abc.com. NS dns2.abc.com. 254.0 INPTR dns1.abc.com. 253.0 INPTR dns2.abc.com. 22.0 INPTR ntp.abc.com. 25.0 IN PTR mail.abc.com. 100.0 INPTR fileserver.abc.com. 101.0 INPTR printserver.abc.com. 200.0 INPTR www.abc.com. 201.0 IN PTR www.abc.com.
3.1.3 启动服务
[[email protected]]# service named start [[email protected]]# chkconfig named on
3.1.4 验证服务
查询工具:nslookup、dig、host
[[email protected]~]# nslookup www.abc.com [[email protected]~]# host www.abc.com [[email protected]~]# dig abc.com MX
3.2 部署从域名服务器
3.2.1 安装dns软件
[[email protected]~]# yum -y install bind [[email protected]~]# yum -y install bind-chroot [[email protected]~]# yum -y install bind-utils
3.2.2 修改配置文件
将配置文件named.conf拷贝到chroot的/etc目录下
[[email protected]~]# cp /etc/named.conf /var/named/chroot/etc/ [[email protected]~]# chown root.named /var/named/chroot/etc/named.conf
修改主配置文件
options { listen-onport 53 { 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"; allow-query { any; }; recursionyes; dnssec-enableyes; dnssec-validation yes; dnssec-lookaside auto; /* Pathto ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channeldefault_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { typehint; file"named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
修改数据区域文件
[[email protected] ~]# vim/etc/named.rfc1912.zones #添加以下内容: zone "abc.com" IN { typeslave; masters {172.16.0.254; }; file"abc.com.zone"; }; zone "16.172.in-addr.arpq" IN { typeslave; masters {172.16.0.254; }; file"172.16.zone";
创建slaves目录并启动slave服务
[[email protected] ~]# mkdir -p/var/named/chroot/var/named/slaves [[email protected] ~]# chmod 775/var/named/chroot/var/named/slaves/ [[email protected] ~]# service named start
这篇文章完成的经历是非常的坎坷,由于杂事缠身,写写停停。哎`~。自己感觉都有点生疏,博文先发,自己在重新梳理一遍并纠错,感觉后面的配置文件写的还是不够详细……
本篇博文主要参考了丁明一前辈的<<linux运维之道>>而写成的。其中可能一些细节会有点问题!希望各位朋友能够指出其中的不足与错误,非常感谢大家的指导。