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子域名授权管理