xdays

Bind基于DLZ实现智能DNS

简介

在我看来基于Bind的只能DNS方案主要包括两个部分:Geolocation和Dynamic Record。国内的业界对智能DNS的定位也无非这两点,但是我所理解的智能DNS是建立在这两条基础上的智能调度系统,比如我有三个负载能力不同的数据中心,DNS可以根据数据中心的metrics(这里可能包括带宽,服务能力等)实现流量的调度,限于个人水平个人未在这个方向有所实践,这个话题留作以后讨论,所以本文只针对前两个问题。由于Bind本身的配置可运维性比较差,这就引出本文主要讨论的DLZ。

原理

DLZ实际上就是扩展了Bind,将Zonefle的内容放到外部数据库里,然后给Bind配置查询语句从数据库里查询记录。当修改数据库里的记录信息的时候,无需重启Bind,下次客户请求时直接就能返回新的记录了。另外,DLZ本身不支持缓存,所以需要自己根据实际情况解决查询的问题。

安装

注意: 这里我以CentOS7上安装dlz-mysql模块为例。

安装依赖

yum install mariadb-devel gcc wget patch make

下载源码

Bind9.8之前的版本需要打patch,具体可参考DLZ官方文档,Bind9.8之后(包括9.8)的版本已经集成DLZ:

wget ftp://ftp.isc ...

Bind搭建DNS服务系统

简介

Bind是目前应用最广泛的DNS服务器软件,其主要包括服务器实现,解析器库实现和测试三个部分。

说明

本文仅讨论如何把Bind配置成一台DNS域名服务器,关于DNS协议的说明,请参考DNS协议详解

安装

centos

yum install bind bind-libs bind-utils bind-chroot

其中bind-chroot用于让bind运行于chroot模式下。

ubuntu

apt-get install bind9 dnsutils

配置

概述

bind的配置文件为named.conf,没有chroot时位于/etc/named.conf,chroot时位于/var/named/chroot/etc/named.conf下。配置文件由配置语句和注释组成。关于配置的详细说明可参考BIND 9 Administrator Reference Manual

配置语句列表

  • acl 定义一个IP列表名,用于接入控制
  • controls ...