Bind 9.10 源码安装 以及 新增redirect 类型 以及$GENERATE指令用法

系统平台:CentOS 6.6 x86_64

Bind版本:bind-9.10.2

准备工作

下载bind 源码包,  省略……

安装开发工具包,   省略……

安装:

解压bind-9.10.2.tar.gz

#tar xvf bind-9.10.2.tar.gz
#cd bind-9.10.2/
#./configure -h
#./configure --prefix=/usr/local/bind --mandir=/usr/share/  --sysconfdir=/etc/named/  --disable-ipv6  --disable-chroot   --enable-threads 
#make -j 2 && make install
#ln -s /usr/local/bind/bin/* /usr/bin/
#ln -s /usr/local/bind/sbin/* /usr/sbin/
#groupadd -r named
#useradd -r -g named -M -s /sbin/nologin named
#mkdir /usr/local/bind/var/run/named
#chown named:named /usr/local/bind/var/run/named
#ll -d /usr/local/bind/var/run/named/
#[ -d /etc/named/ ] || mkdir /etc/named
#chown named:named /etc/named
#[ -d /var/named ] || mkdir /var/named
#chown named:named /var/named

开始配置基础zone文件

#dig -t NS . @61.139.2.69 > /var/named/named.ca
#cd /var/named/

# vim named.localhost
$TTL 1D
@      IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H)    ; minimum
       NS      @
       A       127.0.0.1
       
#vim named.loopback
$TTL 1D
@      IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H)    ; minimum
       NS      @
       A       127.0.0.1
       PTR     localhost.       
       
#chown -R named.named /var/named/*

named.conf主配置文件  (bind安装源码文件中有提供named.conf的示例文件,bin/tests/named.conf)

#rndc-confgen -r /dev/urandom > /etc/named/rndc.conf
#cd /etc/named/
#touch named.conf
#vim rndc.conf
命令模式下 :2,11w >> named.conf
#cat named.conf
#vim named.conf
options {
       directory "/var/named";
       listen-on port 53 {any; };
       allow-query {any; };
       recursion yes;
};
  
zone "."  IN {
       type hint;
       file "named.ca";
};
  
zone "localhost" IN {
       type master;
       file "named.localhost";
       allow-update { none; };
};
  
zone "0.0.127.in-addr.arpa" IN {
       type master;
       file "named.loopback";
       allow-update { none; };
};
  
# Use with the following in named.conf,adjusting the allow list as needed:
 key"rndc-key" {
       algorithm hmac-md5;
       secret "8VWpbjeJ8mochoPghAN5SQ==";
 };
# 
 controls{
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };
 
#chown -R named.named /etc/named/*

运行named 

# named -u named -g
# named -u named
# netstat -tunpl
# tail /var/log/messages
查看日志情况,是否有报错
# iptables -t filter -I INPUT -p udp --dport 53 -j ACCEPT
远程电脑查询下域名,看是否能够正常查询

named 的系统服务脚本

#!/bin/bash
# named a network name service.
# chkconfig: 345 35 75
# description: a name server
[ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions
PidFile=/usr/local/bind/var/run/named/named.pid
LockFile=/var/lock/subsys/named
named=named
start() {
    [ -x /usr/local/bind/sbin/$named ] || exit 4
    if [ -f $LockFile ]; then
        echo -n "$named is already running..."
        failure
        echo
        exit 5
    fi
    
    echo -n "Starting $named: "
    daemon --pidfile "$PidFile" /usr/local/bind/sbin/$named -u named -4
    RETVAL=$?
    echo
    if [ $RETVAL -eq 0 ]; then
        touch $LockFile
        return 0
    else
        rm -f $LockFile $PidFile
        return 1
    fi
}
stop() {
    if [ ! -f $LockFile ];then
        echo "$named is not started."
        failure
    fi
    echo -n "Stopping $named: "
    killproc $named
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $LockFile
    return 0
}
restart() {
    stop
    sleep 1
    start
}
reload() {
    echo -n "Reloading $named: "
    killproc $named -HUP
    RETVAL=$?
    echo
    return $RETVAL
}
status() {
    if pidof $named > /dev/null && [ -f $PidFile ]; then
        echo "$named is running..."
    else
        echo "$named is stopped..."
    fi
}
case $1 in
start)
    start ;;
stop) 
    stop ;;
restart)
    restart ;;
reload)
    reload ;;
status)
    status ;;
*)
    echo "Usage:named {start|stop|status|reload|restart}"
    exit 2;;
esac


redirect 区域类型

Bind 9.10 源码安装 以及 新增redirect 类型 以及$GENERATE指令用法

该类型功能是如果在查询不到域名的情况下,重定向返回一个设定IP ,而不是返回空结果。

所以 可以利用该功能做一些额外的服务。

zone "." IN {
        type redirect;
        file "redirect.file";
};


$TTL    3600
@       IN      SOA     ns.EXAMPLE.net.    mail.EXAMPLE.net. (
        0
        0
        0
        0
        0
)

@       IN      NS      ns.EXAMPLE.net
*.      IN      A       8.8.8.8

测试


$GENERATE 指令用法

文档的介绍如下:

语法:

$GENERATE range lhs type rhs [ comment ]

$GENERATE 指令是用来生成一个资源记录序列,资源记录彼此之间只有一个重复性的

不同。$GENERATE 指令可以容易地被用来生成一个记录集合来支持RFC2317 中所描述的

sub/24 反向授权:无类的IN-ADDR.ARPA 授权。

$ORIGIN 0.0.192.IN-ADDR.ARPA.

$GENERATE 1-2 0 NS SERVER$.EXAMPLE.

$GENERATE 1-127 $ CNAME $.0

等价于:

0.0.0.192.IN-ADDR.ARPA NS SERVER1.EXAMPLE.

0.0.0.192.IN-ADDR.ARPA NS SERVER2.EXAMPLE.

1.0.0.192.IN-ADDR.ARPA CNAME 1.0.0.0.192.IN-ADDR.ARPA

2.0.0.192.IN-ADDR.ARPA CNAME 2.0.0.0.192.IN-ADDR.ARPA

127.0.0.192.IN-ADDR.ARPA CNAME 127.0.0.0.192.IN-ADDR.ARPA

实际测试

$GENERATE 1-6 lh$ 3600 IN CNAME googlehosted.l
等价于:
;lh2            3600    IN      CNAME   googlehosted.l
;lh3            3600    IN      CNAME   googlehosted.l
;lh4            3600    IN      CNAME   googlehosted.l
;lh5            3600    IN      CNAME   googlehosted.l
;lh6            3600    IN      CNAME   googlehosted.l
;lh7            3600    IN      CNAME   googlehosted.l

查询结果

Bind 9.10 源码安装 以及 新增redirect 类型 以及$GENERATE指令用法


named.conf 中 option选项中的一个参数: 

deny-answer-addresses 用法.

语法:

        deny-answer-addresses {

                     address_match_list

                } [ except-from { namelist } ];

从字面意思上不难理解,组织一个回答的地址.

比如我们dig 查询一个域名 fscdnuni-vip.115.com

Bind 9.10 源码安装 以及 新增redirect 类型 以及$GENERATE指令用法

可以看到返回有很多IP .

那么我们如果添加一个IP到 deny 选项中呢 ? 

        deny-answer-addresses   { 58.252.100.82;} ;

我们这里添加了其中一个IP 到deny-answer-addresses 中.

# rndc reload
# rndc flushname fscdnuni-vip.115.com

再查询试试:

Bind 9.10 源码安装 以及 新增redirect 类型 以及$GENERATE指令用法

发现,不予回复了.

        deny-answer-addresses   { 58.252.100.82;} except-from {"115.com";} ;

添加一个可选参数 except-from (例外)

Bind 9.10 源码安装 以及 新增redirect 类型 以及$GENERATE指令用法

这就是 deny-answer-addresses 的功能.

address_match_list 的格式可以是单个IP地址, 也可以死CIDR格式的网络地址段.

如果回复的IP地址中有和 address_match_list 中的匹配,哪怕只是一个,那么 named 在向外递归或者转发查询的时候,就不会给客户端返回查询结果了,因为它理解为只要有一个IP不可信,那么改条查询均不可信.

deny-answer-aliases 这个选项理应跟上面的选项功能类似,但是我这里测试好像没效果.

有谁知道怎么用才对么?  

原创文章,作者:CLZBV,如若转载,请注明出处:http://www.wangzhanshi.com/n/14611.html

(0)
CLZBV的头像CLZBV
上一篇 2025年1月1日 17:05:37
下一篇 2025年1月1日 17:05:39

相关推荐

  • 如何理解Fedora 7配置DNS技术

    经过长时间学习Fedora 7配置DNS,Fedora 7配置DNS能提高更方便的使用性能。下面就这就来讲术XX。在Fedora 7配置DNS服务很多朋友学习在Linux上配置DN…

    DNS解析 2025年1月1日
  • windows内网dns如何设置才能上网

    内网dns设置的方法 1、点击开始,再点击“控制面板” 2、点击“网络和共享中心” 3、点击“更改适配器设置” 4、右键本地连接,选择属性。 5、这里选择Internet 协议 (…

    2025年1月1日
  • DNS的原理和作用是什么呢

    Azure 的这次故障,国内很安静,国外很热闹,说明国内使用 Azure 的还是少。  微软云的这次故障,大概持续了 3 个小时。官方解释说是因为人为因素,把 DNS 配…

    2025年1月1日
  • 如何查询Linux中DNS服务器地址

    nslookup 程序是DNS 服务的主要诊断工具,它提供了执行DNS 服务器查询测试并获取详细信息。使用nslookup 可以诊断和解决名称解析问题、检查资源记录是否在区域中正确…

    DNS解析 2025年1月1日
  • DNS简述

    常见DNS记录 SOA:域权威开始 NS:权威域名服务器 A:主机地址 CNAME:别名对应的正规名称 MX:邮件传递服务器 PTR:域名指针 (用于反向 DNS) 查询过程 浏览…

    DNS解析 2025年1月1日
  • 搭建DNS服务器实现域名解析

    搭建DNS服务器实现域名解析 在公司配置一个内网DNS服务器,可以在内网解析域名 www.linux.com为IP:192.168.24.200;另外为保证DNS服务器稳定,还要搭…

    2025年1月1日
  • DNS主从服务器的配置以及作用

    今天小编分享的是DNS主从服务器的配置以及作用,可能大家对服务器并不陌生,或者从来没有了解过服务器。但是不用担心,今天小编会以最简单的描述来讲解服务器的原理。 从服务器的作用 1.…

    2025年1月1日
  • DNS查询过程及DNS服务器简单搭建

    1、描述DNS查询过程以及DNS服务器类别。     DNS查询过程:     一次完整的查询请求经过的流程:   &n…

    DNS解析 2025年1月1日
  • 高速缓存dns

    第三单元 高速缓存dns   一 dns   1 权威名称服务器   存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。权…

    2025年1月1日
  • centos7 DNS主从服务搭建及问题故障排错

    一、环境 centos7  主:192.168.3.173 从:92.168.3.172 二、都需要安装bind 服务安装包 配置主DNS服务器 主:/etc/named…

    2025年1月1日

发表回复

登录后才能评论