BIND 的安装和配置: dns 服务,程序包名为bind ,程序名称为named 只需要安装 bind ,bind-libs ,bind-utils 生产环境全部安装 bind 服务脚本 :/etc/rc.d/init.d/named 主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key rndc: remote name domain controller,默认与bind 安装在同一主机,只能通过本地回环地址登录 解析库文件: /var/named/ZONE_NAME.ZONE 注意:一台服务器可以同时为多个区域提供解析 2,必须有根区域文件 3. 应该有两个特殊区域,实现localhost 和本地回环地址的解析库 var/named/named.ca :13 个根文件资源记录 named.localhost :127.0.0.1 named.loopback :本地回环地址 主配置文件: 全局配置文件: options {} 日志子系统配置: logging {} 区域定义: 本机能够为哪些zone 进行解析,就要定义哪些zone zone "ZONE_NAME" IN {} 注意: 任何服务如果期望能够通过网络被其他主机访问,至少应该监听 在一个能够与外部主机通信的地址上 dnssec :dns 安全机制 #建议关闭dns sec 主dns 名称服务器; 1.在主配置文件中定义区域 列入:在 /etc/named.rfc1912.zones 定义 zone "ZONE_NAME" IN { type {master;slave;forward}; file "ZONE_NAME.zone."; } 2. 定义区域解析库文件 宏 $TTL 定义 资源记录定义 named-checkconf : 检查配置文件 named-checkzone ;检查区域 named-checkzone "zy.com" /var/named/zy.com.zone // 格式指定 zone 名字和指定的目录 rndc status :显示当前dns 实时状态 ---------------------------------------------------------------------------- *********************************************************************** BIND 配置文件: // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // See the BIND Administrator's Reference Manual (ARM) for details about the // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html options { listen-on port 53 { 127.0.0.1; 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 { localhost; any; }; //allow query 允许访问的客户端 /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; // 允许递归查询 dnssec-validation no; dnssec-enable no; // 关闭dnssec 功能,一个安全传输机制 /* dnssec-enable yes; dnssec-validation yes; */ //dns sec is disable /* 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"; **************************************************************** ---------------------------------------------------------------- 配置zone 文件: /var/named/zy.com.zone ------------------------------------------- $TTL 3600 $ORIGIN zy.com. //定义了zone 的基名,可以下在后面的资源记录中不添加类似ns1.zy.com. 后半部分 //可查阅这篇文档:http://blog.csdn.net/bpingchang/article/details/38377053 //.bind-utils是bind软件提供的一组DNS工具包,里面有一些DNS相关的工具.主要有 //:dig,host,nslookup,nsupdate.使用这些工具可以进行域名解析和DNS调试工作. @ IN SOA ns1.zy.com. admin.zy.com ( 20171024 1H 5M 1D 1D ) IN NS ns1.zy.com. IN NS ns2.zy.com. IN MX 10 mx1.zy.com. IN MX 20 mx2.zy.com. ns1.zy.com. IN A 1.1.1.1 ns2.zy.com. IN A 2.2.2.2 mx1.zy.com. IN A 3.3.3.3 mx2.zy.com. IN A 4.4.4.4 www IN A 5.5.5.5 ------------------------------------------------------------- named -v :查看bind 版本 ************************************************* //新定义的写法 $TTL 3600 $ORIGIN zy.com. @ IN SOA ns1.zy.com. admin.zy.com ( 20171024 1H 5M 1D 1D ) IN NS ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 1.1.1.1 ns2 IN A 2.2.2.2 mx1 IN A 3.3.3.3 mx2 IN A 4.4.4.4 www IN A 5.5.5.5 **************************************************** ----------------------------------------------------------------- 反向区域: 区域名称:网络地址反写 172.16.100--> 100.16.172.in-addr.arpa. //保留不变的部分定义反向区域的名称 1.定义反向区域 zone "zone_name" IN { type{master|slave|forward}; file "网络地址.zone" }; 2.提供区域解析库文件: 注意: 不需要MX和A 记录 ******************************************* //在/etc/named.rfc1912.zones 定义PTR zone zone "100.16.172.in-addr.arpa" IN { type master; file "172.16.100.zone"; }; //然后在/var/named/ 目录下定义PTR zone 的记录 $TTL 86400 $ORIGIN 100.16.172.in-addr.arpa. @ IN SOA ns1.zy.com. admin.zy.com. ( 20171025 1H 5M 1D 1D ) IN NS ns1.zy.com. IN NS ns2.zy.com. 10 IN PTR ns1.zy.com. 20 IN PTR ns2.zy.com. 30 IN PTR mx1.zy.com. 40 IN PTR mx2.zy.com. 50 IN PTR www.zy.com. ************************************************************* dig 的用法: dig : dig -t [type] name [@server] [query options] 查询选项: +[no]trace 迭代查询 +[no]recurse 递归查询 dig -t A www.baidu.com +trace dig -t A www.baidu.com +recurse 指定查询的RR 记录类型, @ 指定server —————————————————————————————————————— dig -x 172.16.100.20 @10.2.101.250 -x :查询PTR 记录 测试反向记录 qr query,查询标志,代表是查询操作 rd recursion desired :代表希望进行递归(recursive)查询操作 ra recursive available :在返回中设置,代表查询的服务器支持递归(recursive)查询操作。 aa Authoritative Answer :权威回复,如果查询结果由管理域名的域名服务器而不是缓存服务器提供的,则称为权威回复 —————————————————————————————————————— flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 #上述信息中aa 表示权威应答 host 命令: host [-t type] name [SERVER] 列子: host -t A ns2.zy.com 10.2.101.250 nslookup命令: nslookup : server IP :指定查询的dns server set q=TYPE : set q=a NAME : 要查询的名称 模拟区域传送: dig -t axfr zy.com @172.16.100.20 // -axfr 全量传送 dig -t ixfr zy.com @172.16.100.20 //增量传送 dig -t axfr 100.16.172.in-addr.arpa @10.2.101.250 //反向区域全量传送 主从复制: 区域复制: 首先在主服务器需要将NS 指向区域复制dns 服务器, 保证在主服务器变更配置时能够通知区域复制dns 注意事项: 1. 应该为一台单独的dns 服务器 2. 主服务器的区域解析库文件必须有一条NS 记录指向从服务器 3.从服务器只需要定义区域,而无需提供解析库文件,解析库文件应该放置于 /var/named/slave目录中 4.主服务器需要允许从服务器进行区域传送 5.主从服务器版本一致,不一致从高主低 6.主从时间一致 NTP 定义从区域的方法: zone "zone_name" IN { type slave; masters { IP ;}; file "slaves/zy.com.zone"; }; 反向解析复制: 配置文件:改变配置序号增加 zone "1.168.192.in-addr.arpa" IN { type slave; masters { 192.168.1.150; }; file "slaves/192.168.1.zone"; }; rndc :命令tcp/953 端口 COMMAND: reload :重载主配置文件 reload zone :加载单个zone retransfer zone :手动区域传送 notify zone :重新对区域发送通知 reconfig :重载主配置文件 querylog [on|off] :开启关闭查询日志 trace :调整日志级别 ,递增debug 级别 rndc trace 5 //日志压力非常大 slave dns 配置文件梳理: **************************************************************** options { listen-on port 53 { 127.0.0.1; 192.168.1.200; }; //named.conf 配置基本和主dns 相同, 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 { localhost; any; }; /etc/named.rfc1912.zones zone "zy.com" IN { type slave; //指定为slave dns masters { 192.168.1.150; }; //指定masters dns 地址 file "slaves/zy.com.zone"; //指定传送的zone 文件保存位置 // bind 默认让保存到 /var/named/slave/ 目录下 }; *************************************************************** bind 安装: bind ,bind-libs, bind-utils 主从同步: 主服务器授权允许同步,默认允许 1.NS 记录 2.授权允许传送区域 从服务器: 1.只需定义区域 子域授权 :分布式数据库的方式 正向解析区域子域授权方法: 定义一个子区域: ziyu.zy.com. IN NS ns1.ziyu.zy.com. ziyu.zy.com. IN NS ns2.ziyu.zy.com. ns1.ziyu.zy.com. IN A 1.1.1.1 ns2.ziyu.zy.com. IN A 1.1.1.2 转发服务器 : 需要关闭dnssec 功能 注意: 被转发的服务器允许递归 1.全部转发:非本机所负责解析区域的请求,通通转发给指定服务器 options 中定义: options { forward {first|only}//first 优先转发,否则自己迭代查询,only 直接递归至转发服务器 forwarders {}; }; 2.区域转发;仅转发特定区域的请求至某服务器 zone "zone_name" { type forward; forward forwarders }; ------------------------------------- zone "test.com" IN { type forward; forward only; forwarders { 192.168.100.150; }; }; //单个区域转发 -------------------------------------------- 父域配置文件; ************************************************************** $TTL 1D $ORIGIN test.com. @ IN SOA ns1.test.com. admin.test.com. ( 01 1H 5M 1D 1D ) IN NS ns1 IN NS ns2 ns1 IN A 192.168.100.150 ns2 IN A 1.1.1.100 www IN A 2.2.2.2 ops IN NS ns1.ops.test.com. ns1.ops IN A 192.168.100.200 //ops 为委派子域 *************************************************************** 子域配置文件: $TTL 1D $ORIGIN ops.test.com. @ IN SOA ns1.ops.test.com. admin.ops.test.com. ( 01 1h 30M 1d 300M ) IN NS ns1.ops.test.com. IN NS ns2.ops.test.com. ns1 IN A 192.168.100.200 ns2 IN A 3.3.3.3 www IN A 6.6.6.6 ****************************************************************** bind 中基础的安全相关配置: acl ;把一个或多个地址归并为一个集合,统一调用 acl acl_name { ip; ip; net; }; 示列: acl acl_1 { 192.168.100.0/24; }; bind 有四个内置的acl : none :没有一个主机 any; 任意主机 local;本机 localnet :本机IP 掩码运算后的网络地址 注意acl 只能先定义,后使用,一般定义下options 上面 访问控制的指令: allow-query {}; 允许查询的主机;可在全局配置和zone 里面进行指定 zone "test.com" IN { type master; file "test.com.zone"; allow-query { 127.0.0.1; 192.168.100.200; }; }; allow-transfer {]; 允许进行区域传送的主机,白名单 zone "zy.com" IN { type master; file "zy.com.zone"; allow-update { none; }; allow-transfer { 127.0.0.1; }; }; or allow-transfer { 192.168.100.200; }; allow-recursion {};允许递归的主机,一般允许本地,不定义允许所有 //recursion yes; allow-recursion { 127.0.0.1; 192.168.100.200; }; allow-update {}; 允许跟新区域库中的内容,一般none allow-update {none;}; bind view : 视图:功能类似于F5 GTM 智能dns 解析 一个bind 服务器可以定义多个view, 每个view可以定义一个或者多个zone: 每个view 用来匹配一组客户 多个view 内可能需要对同一个区域进行解析,但是用不同的区域进行解析 用法: view view_name { match-clients {}; }; 注意: 1.一旦启用了view ,所有的zone 都只能在view 中定义 2.仅有必要再匹配到允许递归请求的客户端所在的根区域 3.客户端请求到达时是自上而下检查每个view 所服务的客户端列表 vim 定义的方式 : view 相当于数据接口,由上往下匹配客户端地址,然后响应所请求的域名, 在每个view 中 里面每个zone 所包含的域名信息由自己定义 首先将在主配置文件中的 hint 根域文件剪切到 /etc/named.rfc1912.zones 文件中 然后定于客户端的 class 类 如下: ———————————————————— acl 200_net { 192.168.100.200; 127.0.0.1; }; acl 100_net { 192.168.100.100; 127.0.0.1; }; —————————————————————————— 然后在/etc/named.rfc1912.zones 文件中 定义view 配置文件如下: ****************************************************************** // named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example named configuration files. // view test100 { //注意这个花括号里面定义的zone 都是包含在这个view 的匹配规则中 match-clients { //我们的根域名只能在每个view 中分别指定,相对于F5 少一个检测机制的灵活调用 200_net; }; //在这个match-clients 中定义客户端地址网段,匹配后再继续往下匹配规则和请求的域名 allow-recursion { 200_net; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; zone "zy.com" IN { type master; file "zy.com.zone"; allow-update { none; }; }; zone "100.168.192.in-addr.arpa" IN { type master; file "192.168.100.zone"; }; zone "test.com" IN { type master; file "test.com.zone"; allow-query { 127.0.0.1; 192.168.100.200; }; }; }; view external { // 我们可以定义多个view ,指定不同的匹配规则 match-clients { 100_net; }; zone "test.com" IN { type master; file "test.com.zone.external"; allow-update {none;}; }; }; ********************************************************************** 编译安装bind: isc.org: bind 9 1. yum groupinstall "Development Tools" 2. yum -y install openssl* //缺少openssl 库文件 3. ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads 程序安装路径 配置文件路径 开启多线程 --enable-epoll --disable-chroot 多路复用IO 不使用chroot 4. ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads --enable-epoll --disable-chroot 5./etc/profile.d/named.sh // export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH 后续自己创建named.conf 文件 和 ln -sv /usr/local/bind9/include/ /usr/include/named vim /etc/ld.so.conf.d/named.conf 库文件 queryperf dns 压力测试 —————————————————————————————————————————————————————————————————————————————————————— @ IN SOA dns.wubinary.com dnsadmin.wubinary.com ( 2014031201 ;标识序列号,十进制数字,不能超过10位,通常使用日期 2H ;刷新时间,即每隔多久到主服务器检查一次,此处为2小时 4M ;重试时间,应该小于刷新时间,此处为4分钟 1D ;过期时间,此处为1天 2D ;主服务器挂后,从服务器至多工作的时间,此处为2天) ——————————————————————————————————————————————————————————————————————————————————————