bind
bind
yum install bind bind-utils -y 修改主配置 vi /etc/named.conf listen-on port 53 {any;}; //将监听的地址改为any,监听本机的所有地址。 listen-on-v6 port 53 {any;}; allow-query { any; }; //改为any,允许任意主机查询 zone "xx.com" IN { type master; file "xx.com.zone"; allow-update { none; }; }; //添加正向解析区域 xx.com //使用file 参数指出该区域的数据库文件(默认/var/named目录下,根据主配置文件的参数决定) 修改zone文件 cd /var/named cp named.localhost xx.com.zone chmod 644 xx.com.zone //使named用户拥有读取的权限 vi xx.com.zone //编辑数据库文件,设置解析条目 NS @ A 192.168.128.133 AAAA ::1 www A 192.168.128.133 *.ic A 10.215.105.7 statics.ic A 10.215.105.7 //格式如图所示。 A 对应 IPv4的解析条目 AAAA对应IPv6的解析条目。 //注意不可缺少 A 192.168.128.133 AAAA ::1 不能缺少没有主机名的这两项,否则会造成服务无法启动。逆向解析数据库也是如此。 创建逆向解析条目和数据库 vi /etc/named.rfc1912.zones //编辑DNS辅配置文件 //参考末尾的逆向解析条目,创建自己的逆向解析。 zone "128.168.192.in-addr.arpa" IN { type master; file "128.168.192.zone"; allow-update { none; }; }; //注意格式问题,比如IP地址点分十进制的格式,每个十进制为一个整体,倒着书写,且不写主机位。 //“.in-addr.arpa” 为逆向解析的固定格式 不能写错。 //数据库文件可以新建,也可以使用正向的数据库,在其中添加逆向的条目。 //注意权限问题。 cd /var/named cp named.localhost 128.168.192.zone chmod 644 128.168.192.zone 编辑逆向解析条目 vi 128.168.192.zone 133 PTR www.xx.com. //此为逆向解析的条目格式 不能缺少没有主机名的这两项,否则会造成服务无法启动。逆向解析数据库也是如此。 重启服务,进行检测 service named restart
bind edns
https://blog.gnuers.org/?p=1379 yum install GeoIP GeoIP-devel ./configure --prefix=/usr/local/bind9.12.0 --with-geoip=/usr/share/GeoIP/ --enable-threads make && make install ./sbin/rndc-confgen -r /dev/urandom > etc/rndc.conf dig测试 dig在源码编译目录下的 /root/bind-9.12.1-P2/bin/dig/dig ./bin/dig/dig @127.0.0.1 a.test.com +subnet=172.1.1.1/24 含有OPT PSEUDOSECTION表示支持edns acl zone1 { ecs 10.0.0.0/8; 10.0.0.0/8; }; acl zone2 { ecs 172.0.0.0/8;172.0.0.0/8; }; acl ecs-zone1 { ecs 10.0.0.0/8; }; acl ecs-zone2 { ecs 172.0.0.0/8;}; view "ecs-zone1" { match-clients {ecs-zone1;}; zone "test.org" { type master; file "ecszone/test.org" ;}; }; view "ecs-zone2" { match-clients {ecs-zone2;}; zone "test.org" { type master; file "ecszone2/test.org" ;}; }; view "zone1" { match-clients {zone1;}; zone "test.org" { type master; file "zone/test.org" ;}; }; view "zone2" { match-clients {zone2;}; zone "test.org" { type master; file "zone2/test.org" ;}; }; dig @10.10.0.15 test100.test.org dig @172.18.0.6 test100.test.org dig @10.10.0.15 test100.test.org +subnet=172.1.1.1/24 dig @10.10.0.15 test100.test.org +subnet=10.1.1.1/24 dig @172.18.0.6 test100.test.org +subnet=10.1.1.1/24 dig @172.18.0.6 test100.test.org +subnet=172.1.1.1/24 cat /etc/init.d/named #!/bin/bash # named a network name service. # chkconfig: 345 35 75 # description: a name server PIDFILE='/var/named/named.pid' BASEDIR='/usr/local/bind9.12.0' if [ `id -u` -ne 0 ]; then echo "ERROR:For bind to port 53,must run as root." exit 1 fi case "$1" in start) if [ -x $BASEDIR/sbin/named ]; then if [ -e $PIDFILE ]; then echo 'BIND9 already started' else $BASEDIR/sbin/named -u named -c /etc/named.conf && echo . && echo 'BIND9 server started' fi fi ;; stop) if [ -e $PIDFILE ]; then /bin/kill -9 `cat $PIDFILE` && echo . && echo 'BIND9 server stopped' else echo 'BIND9 already stopped' fi rm $PIDFILE -f ;; restart) echo . echo "Restart BIND9 server" $0 stop sleep 3 $0 start ;; reload) $BASEDIR/sbin/rndc reload ;; status) $BASEDIR/sbin/rndc status ;; *) echo "$0 start | stop | restart |reload |status" ;; esac