近日为了规划新IDC内部DNS,时隔多年又重新搞起djbdns,发现了一个新的fork,名字叫ndjbdns,安装配置比原始版的方便多了,流水账一下。关于split-horizon的原理,不解释,本blog里就有几年前我写的文档,可以参考。
需求:
1. 机房内服务器的DNS服务器配置为本地的DNS Server
2. 机房内解析公司的域名是内部地址
3. 机房内解析非公司域名是正常解析
4. 服务器间可以使用域名互访
方案:
1. tinydns监听在 127.0.0.1,dnscache监听在内网卡上,做split-horizon
2.
tinydns负责解析internal域,服务器主机名设置为hostname.internal,resolv.conf设置搜索域为internal
步骤:
1. Centos7 安装EPEL源
2. 安装ndjbdns,epel源中就有,比djbdns繁复的编译安装那是简单太多了。
]# yum install ndjbdns
3. 安装dig等常用的域名工具
]# yum install bind-utils
4. 创建并编辑tinydns的解析文件
首先加入"internal"域的正反向解析NS记录,再添加一条mysql01.internal的A记录
使用tinydns-data命令生成实际的域名文本数据库data.cdb
]# cd /etc/ndjbdns
]# touch data
]# tinydns-edit data data.new add ns internal 127.0.0.1
]# tinydns-edit data data.new add ns 1.168.192.in-addr.arpa
127.0.0.1
]# tinydns-edit data data.new add host mysql01.internal
192.168.1.22
]# tinydns-data
5. 配置internal域的解析服务器为127.0.0.1,即本机上的tinydns,注意反向解析的域名格式。
]# vi /etc/ndjbdns/servers/internal
===> 127.0.0.1
]# vi /etc/ndjbdns/servers/1.168.192.in-addr.arpa
===> 127.0.0.1
6. 配置dnscache监听在内网卡接口
]# vi /etc/ndjbdns/dnscache.conf
===> IP=192.168.1.140
7. 配置tinydns监听在loopback接口
]# vi /etc/ndjbdns/tinydns.conf
===> IP=127.0.0.1
8.配置允许192.168.1.0/24网段使用dnscache做递归查询
]# touch /etc/ndjbdns/ip/192.168.1
9. 启动tinydns和dnschace服务
]# systemctl start dnscache
]# systemctl start tinydns
9. 使用host命令测试一下
解析内部域名,正常
[root@pxe servers]# host mysql01.internal 192.168.1.140
Using domain server:
Name: 192.168.1.140
Address: 192.168.1.140#53
Aliases:
mysql01.internal has address 192.168.1.22
解析外部域名,正常
[root@pxe servers]# host www.sina.com.cn
192.168.1.140
Using domain server:
Name: 192.168.1.140
Address: 192.168.1.140#53
Aliases:
www.sina.com.cn is an alias for spool.grid.sinaedge.com.
spool.grid.sinaedge.com has address 123.126.157.222
反向解析内部IP,正常
[root@pxe servers]# host 192.168.1.22 192.168.1.140
Using domain server:
Name: 192.168.1.140
Address: 192.168.1.140#53
Aliases:
22.1.168.192.in-addr.arpa domain name pointer
mysql01.internal.
测试搜索域,正常
[root@pxe servers]# ping mysql01
PING mysql01.internal (192.168.1.22) 56(84) bytes of
data.
64 bytes from 192.168.1.22: icmp_seq=1 ttl=64 time=0.302
ms
64 bytes from 192.168.1.22: icmp_seq=2 ttl=64 time=0.345
ms
齐活儿了,打完收工。
参考文档:
https://n40lab.wordpress.com/2013/07/04/installing-ndbjdns-on-centos-6-3/
https://qiita.com/tukiyo3/items/6994ab172b4da359cf93