@mrz1
2018-01-22T13:08:14.000000Z
字数 10203
阅读 1271
笔记
/etc/hosts%WINDIR%/system32/drivers/etc/hosts122.10.117.2 www.magedu.com93.46.8.89 www.google.com
一次完整的查询请求经过的流程:Client -->hosts文件-->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS...
区域解析库:由众多RR组成:资源记录:Resource Record, RR记录类型:A, AAAA, PTR, SOA, NS, CNAME, MXSOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录A:internet Address,作用,FQDN --> IPAAAA: FQDN --> IPv6PTR: PoinTeR,IP --> FQDNNS: Name Server,专用于标明当前区域的DNS服务器CNAME:Canonical Name,别名记录MX:Mail eXchanger,邮件交换器资源记录定义的格式:语法:name[TTL]IN rr_type value注意:(1) TTL可从全局继承(2) @可用于引用当前区域的名字(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名c字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
name: 当前区域的名字,例如“magedu.com.”value: 有多部分组成(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com(3) 主从服务区域传输相关定义以及否定的答案的统一的TTL例如:magedu.com. 86400 IN SOA ns.magedu.com.nsadmin.magedu.com. (2015042201 ;序列号2H ;刷新时间10M ;重试时间1W ;过期时间1D ;否定答案的TTL值)
name: 当前区域的名字value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.注意:一个区域可以有多个NS记录例如:magedu.com. IN NS ns1.magedu.com.magedu.com. IN NS ns2.magedu.com.注意:(1) 相邻的两个资源记录的name相同时,后续的可省略(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
name: 当前区域的名字value: 当前区域的某邮件服务器(smtp服务器)的主机名一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高例如:magedu.com. IN MX 10 mx1.magedu.com.IN MX 20 mx2.magedu.com.注意:(1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
name: 某主机的FQDN,例如www.magedu.com.value: 主机名对应主机的IP地址例如:www.magedu.com. IN A 1.1.1.1www.magedu.com. IN A 2.2.2.2mx1.magedu.com. IN A 3.3.3.3mx2.magedu.com. IN A 4.4.4.4$GENERATE 1-254 HOST$ A 1.2.3.$*.magedu.com. IN A 5.5.5.5magedu.com. IN A 6.6.6.6避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
AAAA:name: FQDNvalue: IPv6PTR: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.注意:网络地址及后缀可省略;主机地址依然需要反着写
CNAME:name: 别名的FQDNvalue: 真正名字的FQDN例如:www.magedu.com. IN CNAME websrv.magedu.com.
.com. IN NS ns1.com..com. IN NS ns2.com.ns1.com. IN A 2.2.2.1ns2.com. IN A 2.2.2.2
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.1ns2.magedu.com. IN A 3.3.3.2ns3.magedu.com. IN A 3.3.3.3
域名注册:代理商:万网, 新网, godaddy
注册完成以后,想自己用专用服务来解析
管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址
BIND的安装配置:dns服务程序包:bind,unbound程序名:named,unbound程序包:yum list all bind*bind:服务器bind-libs:相关库bind-utils:客户端bind-chroot: /var/named/chroot/
服务脚本和名称:/etc/rc.d/init.d/named (centos6)/usr/lib/systemd/system/named.service (centos7)主配置文件:/etc/named.conf/etc/named.rfc1912.zones/etc/rndc.key解析库文件:/var/named/ZONE_NAME.ZONE注意:(1) 一台物理服务器可同时为多个区域提供解析(2) 必须要有根区域文件;/var/named/named.ca(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库rndc: remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程提供辅助性的管理功能;953/tcp
主配置文件:全局配置:options {};日志子系统配置:logging {};区域定义:本机能够为哪些zone进行解析,就要定义哪些zonezone "ZONE_NAME" IN {};注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上缓存名称服务器的配置:监听外部地址即可dnssec: 建议关闭dnssec,设为no
主DNS名称服务器:(1) 在主配置文件中定义区域zone "ZONE_NAME" IN {type {master|slave|hint|forward};file "ZONE_NAME.zone";};(2) 定义区域解析库文件出现的内容宏定义资源记录主配置文件语法检查:named -checkconf解析库文件语法检查:named -checkzone "magedu.com" /var/named/magedu.com.zonerndc status|reload;service named reload
$TTL 86400$ORIGIN magedu.com.@ IN SOA ns1.magedu.com. admin.magedu.com (20150422011H5M7D1D )IN NS ns1IN NS ns2IN MX 10 mx1IN MX 20 mx2ns1 IN A 172.16.100.11ns2 IN A 172.16.100.12mx1 IN A 172.16.100.13mx2 IN A 172.16.100.14websrv IN A 172.16.100.11websrv IN A 172.16.100.12www IN CNAME websrv
dig [-t type] name [@SERVER] [query options]dig只用于测试dns系统,不会查询hosts文件进行解析查询选项:+[no]trace:跟踪解析过程: dig +trace magedu.com+[no]recurse:进行递归解析测试反向解析:dig -x IP = dig –t ptrreverseip.in-addr.arpa模拟区域传送:dig -t axfr ZONE_NAME @SERVERdig -t axfr magedu.com @10.10.10.11dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1dig -t NS . @114.114.114.114dig -t NS . @a.root-servers.net
host [-t type] name [SERVER]host –t NS magedu.com 172.16.0.1host –t soa magedu.comhost –t mx magedu.comhost –t axfr magedu.comhost 1.2.3.4nslookup命令:nslookup[-option] [name | -] [server]交互式模式:nslookup>server IP: 指明使用哪个DNS server进行查询set q=RR_TYPE: 指明查询的资源记录类型NAME: 要查询的名称
反向区域:区域名称:网络地址反写.in-addr.arpa.172.16.100. --> 100.16.172.in-addr.arpa.(1) 定义区域zone "ZONE_NAME" IN {type {master|slave|forward};file "网络地址.zone"};(2) 定义区域解析库文件注意:不需要MX,以PTR记录为主
反向区域示例:
$TTL 86400$ORIGIN 100.16.172.in-addr.arpa.@ IN SOA ns1.magedu.com. admin.magedu.com. (20150422011H5M7D1D )IN NS ns1.magedu.com.IN NS ns2.magedu.com.11 IN PTR ns1.magedu.com.11 IN PTR www.magedu.com.12 IN PTR mx1.magedu.com.12 IN PTR www.magedu.com.13 IN PTR mx2.magedu.com.
指定的zone语句块中:Allow-update {any;};chmod 770 /var/namedsetsebool -P named_write_master_zones onnsupdate>server 127.0.0.1>zone magedu.com>update add ftp.magedu.com 88888 IN A 8.8.8.8>send>update delete www.magedu.com A>send测试:dig ftp.magedu.com @127.0.0.1ll /var/named/magedu.com.zone.jnlcat /var/named/magedu.com.zone
1、应该为一台独立的名称服务器
2、主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
4、主服务器得允许从服务器作区域传送
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致;否则,应该从高,主低
定义从区域的方法:zone "ZONE_NAME" IN {type slave;masters { MASTER_IP; };file "slaves/ZONE_NAME.zone";};
rndc:rndc--> rndc(953/tcp)rndc COMMANDCOMMAND:reload: 重载主配置文件和区域解析库文件reload zonename: 重载区域解析库文件retransfer zonename: 手动启动区域传送,而不管序列号是否增加notify zonename: 重新对区域传送发通知reconfig: 重载主配置文件querylog: 开启或关闭查询日志文件/var/log/messagetrace: 递增debug一个级别trace LEVEL: 指定使用的级别notrace:将调试级别设置为0flush:清空DNS服务器的所有缓存记录
子域授权:分布式数据库正向解析区域子域方法定义一个子区域:ops.magedu.com. IN NS ns1.ops.magedu.com.ops.magedu.com. IN NS ns2.ops.magedu.com.ns1.ops.magedu.com. IN A 1.1.1.1ns2.ops.magedu.com. IN A 1.1.1.2fin.magedu.com. IN NS ns1.fin.magedu.com.fin.magedu.com. IN NS ns2.fin.magedu.com.ns1.fin.magedu.com. IN A 3.1.1.1ns2.fin.magedu.com. IN A 3.1.1.2注意:关闭dnssec功能:dnssec-enable no;dnssec-validation no;
注意:被转发的服务器需要能够为请求者做递归,否则转发请求不予进行(1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器Options {forward first|only;forwarders { ip;};};(2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高 zone "ZONE_NAME" IN {type forward;forward first|only;forwarders {ip;};};注意:关闭dnssec功能:dnssec-enable no;dnssec-validation no;
bind中基础的安全相关的配置:acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用格式:aclacl_name{ip;net/prelen;......};示例:aclmynet{172.16.0.0/16;10.10.10.10;};bind有四个内置的acl:none: 没有一个主机any: 任意主机localhost: 本机localnet: 本机的IP同掩码运算后得到的网络地址注意:只能先定义,后使用;因此一般定义在配置文件中,处于options的前面
访问控制的指令:
allow-query {}:允许查询的主机;白名单allow-transfer {}:允许区域传送的主机;白名单allow-recursion {}: 允许递归的主机,建议全局使用allow-update {}: 允许更新区域数据库中的内容

CDN: Content Delivery Network内容分发网络服务商:蓝汛,网宿,帝联等智能DNS:dnspoddns.laview:视图:实现智能DNS:一个bind服务器可定义多个view,每个view中可定义一个或多个zone每个view用来匹配一组客户端多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件注意:(1) 一旦启用了view,所有的zone都只能定义在view中(2) 仅在允许递归请求的客户端所在view中定义根区域(3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表格式:view VIEW_NAME {match-clients { testacl; };zone “magedu.com” {type master;file “magedu.com.zone”;};include “/etc/named.rfc1912.zones”;};
下载bind:isc.org:bind-9.10bind-9.11bind-10编译安装bind tar xvf bind-9.11.0a3.tar.gzcd bind-9.11.0a3/groupadd -r -g 53 nameduseradd -r -u 53 -g 53 named./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --without-openssl--disable-ipv6 --disable-chroot--enable-threadsmakemake install
环境变量:vim /etc/profile.d/named.shexport PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin/:$PATH库和头文件vim /etc/ld.so.conf.d/named.conf/usr/local/bind9/libldconfig –vls -sv/usr/local/bind9/include /usr/include/namedman帮助vim /etc/man.config | /etc/man_db.confMANPATH /usr/local/bind9/share/manman named.conf
vim /etc/named/named.confoptions {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/namednamed -checkconfdig +norec@a.root-servers.net > /var/named/named.cavim /var/named/named.localhost$TTL 1d@ IN SOA localhost. admin.localhost. (20160618011h5m7d1d)IN NS localhost.localhost. IN A 127.0.0.1vim /var/named/named.loopback$TTL 1d@ IN SOA localhost. admin.localhost. (20160618011h5m7d1d)NS @A 127.0.0.1PTR localhost.编译安装bind设置权限chmod 640 /var/named/*chmod 640 /etc/named/named.confchgrp -R named /var/named/chgrp named /etc/named/named.conf启动服务和测试man namednamed -u named -f -g -d 3 前端级别3方式运行named -u named 后台运行killall namedss -tulntail /var/log/messagenamed -u named支持rndcrndc reload 观察错误提示rndc-confgen -r /dev/urandom > /etc/named/rndc.conf 生成keytail /etc/named/rndc.conf >> /etc/named/named.confkillall -SIGHUP namedrndc status
/root/bind-xxx/contrib/scripts编译压力测试工具cd /root/bind-xxx/contrib/queryperf./configuremakecp queryperf /usr/local/bind9/binqueryperf -hvim test.txtwww.magedu.com Amagedu.com NSmagedu.com MXpop3.magedu.com Aweb.magedu.com Aqueryperf -d test.txt -s 127.0.0.1打开日志功能rndc querylogrndc statusqueryperf -d test.txt -s 127.0.0.1wc -l /var/log/message
#dig A example.com; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> Aexample.com;; global options: +cmd;; Got answer:;; ->>HEADER<<-opcode: QUERY, status: NOERROR, id: 30523...SERVFAIL:Thenameserverencountered a problem while processing the query.可使用dig +trace排错,可能是网络和防火墙导致NXDOMAIN:The queried name does not exist in the zone.可能是CNAME对应的A记录不存在导致REFUSED:The nameserverrefused the client's DNS request due to policy restrictions.可能是DNS策略导致NOERROR不代表没有问题,也可以是过时的记录查看是否为权威记录,flags:aa标记判断被删除的记录仍能返回结果,可能是因为*记录存在如:*.example.com.INA172.25.254.254注意“.”的使用避免CNAME指向CNAME记录,可能产生回环test.example.com. IN CNAME lab.example.com.lab.example.com. IN CNAME test.example.com.正确配置PTR记录,许多服务依赖PTR,如sshd,MTA正确配置轮询round-robin记录