最近工作接触到了内网采用bind9构建局域网域名服务器的项目,自己手工搭建一个bind9服务器学习了bind9的使用方法,简单记录一下。
搭建环境:ubuntu16.04
dns机器:
dns IP:10.0.0.61
另外两台测试机器:
host1 IP:10.0.0.62
host2 IP:10.0.0.61
一.搭建
在dns机器上执行如下操作
1.安装bind9
sudo systemctl stop bind9
2.bind9的配置文件都存放在/etc/bind目录下,在bind中一个域的配置都是以区块文件来划分的,首先在bind的配置文件中指定一个配置域的区块文件,编辑文件/etc/bind/named.conf.local,追加如下内容到文件尾部:
zone "nyc3.example.com"{
type master;
file "/etc/bind/zones/db.nyc3.example.com"; # 区文件路径};
最后/etc/bind/named.conf.local文件如下:
//
// Do any local configuration here
//// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "nyc3.example.com"{
type master;
file "/etc/bind/zones/db.nyc3.example.com"; # 区文件路径};
3.上面在bind的默认配置文件中指定了区块文件,现在需要创建并编辑该区块区块文件。
cd /etc/bind/
mkdir zones
然后将/etc/bind目录的区块文件模板复制一份修改。
cp /etc/bind/db.empty /etc/bind/zones/db.nyc3.example.com
然后编辑区块文件db.nyc3.example.com:
修改SOA后面的localhost.为ns1.nyc3.example.com. #表示采用ns1.nyc3.example.com域名标识的主机作为DNS服务器
修改root.localhost. 为admin.nyc3.example.com. #表示管理账号为admin.nyc3.example.com
再在后面添加如下内容:
; name servers - NS records
IN NS ns1.nyc3.example.com.
; name servers - A records
ns1.nyc3.example.com. IN A 10.0.0.61
; 10.128.0.0/16 - A records
host1.nyc3.example.com. IN A 10.0.0.62
host2.nyc3.example.com. IN A 10.0.0.63
最后文件内容如下:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
343 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
;@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1
; name servers - NS records
IN NS ns1.nyc3.example.com.
; name servers - A records
ns1.nyc3.example.com. IN A 10.0.0.61; 10.128.0.0/16 - A records
host1.nyc3.example.com. IN A 10.0.0.62
host2.nyc3.example.com. IN A 10.0.0.63
注意每次编辑文件后,最后修改Serial的值,自增1。
下面为帮助理解的说明:
关于区块文件的配置说明,可以参考:https://blog.51cto.com/ylive/389892
其中常见的语法说明:
; | 注释 |
@ | 表示当前域 |
() | 允许数据夸行,通常用于 SOA 记录 |
* | 仅用于 name 字符的通配符 |
含有A的一行记录为域名与IP地址的映射关系配置,每个域名只可以配置一条映射记录。
4.保存配置文件,重启bind服务。
systemctl restart bind9
二.测试
在host1主机上执行以下命令:
nslookup host2.nyc3.example.com
结果如下:
Server: 10.0.0.61
Address: 10.0.0.61#53Name: host2.nyc3.example.com
Address: 10.0.0.63
可以看到hos1通过host2的域名访问host2是成功的,同样在host2上域名访问host1也成功。
参考:https://www.jianshu.com/p/330359b2b06e