背景:在很多时候,有没有经常遇到过,线上部署的系统依赖二级或三级域名,而测试环境又因没有多的域名而无法真实的进行测试,最终线上出现各种有关域名配置的错误导致不可用,为了解决此问题而又不需重新申请测试域名,以下使用bind搭建DNS服务器(Linux)来解决此问题。
介绍:DNS域名解析服务(DomainNameSystem)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析:
正向解析:根据主机名(域名)查找对应的IP地址。
反向解析:根据IP地址查找对应的主机名(域名)。
工作形式上又分主服务器、从服务器和缓存服务器。
主服务器:在特定区域内具有唯一性、负责维护该区域内的域名与IP地址对应关系。
从服务器:从主服务器中获得域名与IP地址对应关系并维护,以防主服务器宕机等情况。
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址对应关系,提高重复查询时的效率
首先准备一台linux服务器(192.168.0.85)作为dns服务主机,同时需放开防火墙对公网的udp/53端口。
step1(安装bind):
[root@vm20702 ~]# yum install -y bind bind-chroot bind-utils
step2(主配置文件):
[root@vm20702 ~]# vim /etc/named.conf
step3(配置zone,新增一个域名映射):
正向解析的作用是根据主机名(域名)查找到对应的IP地址,区域文件中已有一些默认信息,可不必理会,直接在下面追加即可。
[root@vm20702 named]# vim /etc/named.rfc1912.zones
zone"music.com" IN {
type master;
file"music.com.zone";
allow-update { none; };
};
step4(配置具体域名-IP解析信息):
可直接复制正向解析模板文件:"/var/named/named.localhost",填写信息后即可直接使用。
[root@vm20702 named]# cp /var/named/named.localhost /var/named/music.com.zone
[root@vm20702 named]# vi /var/named/music.com.zone
检查之前先看下 配置文件有没有读取权限 ll /var/named (如果没有读取权限, chmod +r /var/named/* 即可,非常重要)
[root@vm20702 named]# chmod +r /var/named/*
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 120.79.x.x
AAAA ::1
portal IN A 120.79.x.x
step5(重启named服务让配置文件立即生效):
[root@vm20702 named]# systemctl restart named
默认日志查看
[root@vm20702 named]# tail -f /var/named/data/named.run
step6(检验解析结果):
将本机的DNS设置为本机的IP 192.168.0.85
[root@vm20702 named]# cat/etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.0.85
nameserver 192.168.0.85
options timeout:2 attempts:3 rotate single-request-reopen
使用nslookup命令用于检测能否从网络DNS服务器中查询到域名与IP地址的解析记录,检测named服务的解析能否成功,此为查询DNS服务器的信息:
[root@Centos named]# nslookup
> ems.music.com
Server: 192.168.0.85
Address: 192.168.0.85#53
Non-authoritative answer:
Name: ems.music.com
Address: 120.77.x.x
至此,DNS服务器就已搭建成功。
step7(在windows下配置此dns服务器用于测试环境模拟线上域名调试):
然后打开cmd, ping ems.music.com 查看响应ip就是 120.77.x.x 这个ip,至此所有操作成功完成。