一批测试服务器,之间希望通过自定义的域名进行访问,这样比较方便,但每个人每台机器都维护一个hosts的话会非常麻烦,于是想搭建一个内部的DNS服务器,对自定义的域名进行解析,同时缓存公网的域名。
首先,向导的DNS服务器肯定是bind9,但所谓杀鸡焉用牛刀,并且bind9的配置和后期维护都是比较麻烦的,而内网这种测试环境又经常需要更新配置。
于是,我们采用了dnsmasq,它简直太简单了,只需要下面几步就完成配置了。
安装dnsmasq
$ sudo apt-get install dnsmasq
添加域名解析记录
$ sudo vim /etc/hosts
192.168.10.10 hadoop-master.heylinux.com
192.168.10.11 hadoop-node-1.heylinux.com
配置上级DNS服务器地址
$ sudo vim /etc/resolv.conf
nameserver 61.139.2.69
重启DNS服务
$ sudo /etc/init.d/dnsmasq restart
配置客户端,填入dnsmasq所在地址
$ sudo vim /etc/resolv.conf
nameserver 192.168.10.5
测试内网DNS
$ ping hadoop-master.heylinux.com
测试反解析
$ dig PTR 10.10.168.192.in-addr.arpa.
dnsmasq默认使用了/etc/hosts和/etc/resolv.conf,这样DNS本机也可以共享这些配置,但如果想要分开专门进行维护的话,可以在/etc/dnsmasq.conf中指定。
dnsmasq默认还集成了DHCP与TFTP服务器,默认如果不配置的话服务不会启动。
dnsmasq的优点在于快捷方便并易于维护,如果想实现比如多IP轮询,根据IP源做智能解析等高级功能,毫无疑问,安心上bind9吧
Dnsmasq原理:
•本机APP访问主机的/etc/resolv.conf获取DNSServer,该文件指向的DNSServer为Dnsmasq。
•本地局域网中的主机可以直接访问Dnsmasq,即在这些主机中/etc/resolv.conf指向了Dnsmasq。
•Dnsmasq需要通过上游DNS来进行域名解析,上游DNS可以配置在/etc/resolv.dnsmasq.conf中,该文件需要在Dnsmasq的配置文件/etc/dnsmasq.conf中指定。
DNS子系统为网络提供本地DNS服务器,将所有查询类型转发到上游递归DNS服务器并缓存常用记录类型(A,AAAA,CNAME和PTR,以及启用DNSSEC时的DNSKEY和DS)。
本地DNS名称可通过读取/ etc / hosts,通过从DHCP子系统导入名称或配置各种有用的记录类型来定义。
上游服务器可以用各种方便的方式进行配置,包括动态配置,这些配置会随着移动上游网络而发生变化。
权威DNS模式允许本地DNS名称可以导出到全球DNS中的区域。Dnsmasq充当此区域的权威服务器,并且还根据需要为该区域的辅助区域提供区域传输。
可以对来自上游名称服务器的DNS答复执行DNSSEC验证,从而提供针对欺骗和缓存中毒的安全性。
指定的子域可以定向到它们自己的上游DNS服务器,从而使VPN配置变得容易。
支持国际化域名。
DHCP子系统支持DHCPv4,DHCPv6,BOOTP和PXE。
支持静态和动态DHCP租约,以及DHCPv6中的无状态模式。
PXE系统是一个完整的PXE服务器,支持网络引导菜单和多种体系结构支持。它包括代理模式,PXE系统与另一台DHCP服务器协同工作。
有一个内置的只读TFTP服务器来支持网络启动。
通过DHCP配置的计算机的名称会自动包含在DNS中,并且名称可以由每台计算机指定,或者通过在dnsmasq配置文件中将名称与MAC地址或UID关联来集中进行。
路由器通告子系统为IPv6主机提供基本的自动配置。它可以单独使用或与DHCPv6结合使用。
M和O位是可配置的,以控制主机使用DHCPv6。
路由器通告可以包含RDNSS选项。
有一种方式使用来自DHCPv4配置的名称信息来为自动配置的IPv6地址提供DNS条目,否则这些地址将是匿名的。
为了更加紧凑,编译时可能会省略未使用的特性。