centos7上使用bind解析子域名


2020年4月8日,本文有效期预计3年。

假设有这样的练习:

在云服务商甲那里购买了域名yunfwa.com,自己有带公网IP的5.5.5.6服务器乙(centos 7.x环境),目标是用乙服务器实现web.yunfwa.com及其三级子域名的解析。

具体来说,web.yunfwa.com想解析到5.5.5.7

www.web.yunfwa.com也解析到5.5.5.7

blog.web.yunfwa.com想解析到5.5.5.8

第一步,在服务器乙上安装DNS解析软件bind,并启动

# yum install bind bind-utils caching-nameserver –y
# systemctl start named

bind-chroot在这个练习里未使用。

第二步,放行防火墙DNS服务端口 53 udp

# firewall-cmd --zone=public --add-port=53/udp --permanent  添加(--permanent永久生效,没有此参数重启后失效)
# firewall-cmd --zone=public --query-port=53/udp  查看
# systemctl restart firewalld  重启防火墙

 另外两条firewall命令

# firewall-cmd --reload  重新载入  
# firewall-cmd --zone=public --remove-port=53/udp --permanent 删除

第三步,修改各配置文件

三.1 修改主配置文件,允许所有ipv4地址来访问DNS解析,并拒绝所有ipv6访问;并且

# vi /etc/named.conf

修改以下内容

        listen-on port 53 { any; };        // 所有网卡上允许ipv4
        listen-on-v6 port 53 { none; };    // 禁止ipv6
        allow-query     { any; };          // 允许所有人访问
        allow-query-cache { any; };        // 不懂
        recursion no;                      // 根据上下文注释,公网上自己提供DNS时设置为no更安全

三.2 在rfc1912.zones文件中增加web.yunfwa.com区域

# vi /etc/named.rfc1912.zones

在末尾增加以下内容

 zone "web.yunfwa.com" IN {
        type master;
        file "web.yunfwa.com.zx";
        allow-update { none; };
};

三.3 在/var/named/目录下,新增web.yunfwa.com.zx文件

# cd /var/named/
# cp -p named.localhost web.yunfwa.com.zx
# chmod 644 web.yunfwa.com.zx
# vi web.yunfwa.com.zx

web.yunfwa.com.zx根据3.2的定义,是一个正向解析文件,反向在我们这种情况下不知道怎么提供,算了。

这个文件要对named可读,所以用了chmod,或者用chown root:named web.yunfwa.com.zx命令应该也能达到效果。

文件内容设置如下:

$TTL 1D
@       IN SOA  @ root.nothereyet.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       5.5.5.7
www     A       5.5.5.7
blog    A       5.5.5.8

第四步,在服务器乙检验并重启bind服务

检查zone文件

# named-checkzone web.yunfwa.com /var/named/web.yunfwa.com.zx

正确的话显示OK,即可重启bind(named)服务

# systemctl restart named

如果启动中遇到错误,可以用systemctl -l status named查看出错内容。

接下来用bind-tuils安装的两个命令检查之前设置的子域解析

# dig @5.5.5.6 web.yunfwa.com
# nslookup blog.yunfwa.com 5.5.5.6

第五步,在云服务商甲处设置web.yunfwa.com子域的两条解析记录

web的NS类型记录,值为dnsbind.web

dsnbind.web的A类型记录,值为5.5.5.6

如果甲商允许NS直接使用ipv4的地址值,那用一条就够了。

一般一两分钟后,ping blog.web.yunfwa.com就可以看到结果。

另外,更高效的方法,是在甲商处直接指定yunfwa.com的域名解析服务器为自己的公网服务器,全自己来。

参考资料,感谢

Centos6安装配置DNS服务器Bind

BIND子域名授权管理