因为工作测试需要,要在本机装一个环境,可以解析自己命名的域名,即域名->IP的映射服务。在网上找了下,都说是MaraDNS不错。也试了下,在本地配置是没有问题的。从官网上下载的是2-0-11.win32. 手机等测试设备指向内网的这个MaraDNS所在的机器IP做为手机上网的主DNS即可解析到自己命名的域名了。但,这时,你还想手机可以解析internet域名怎么办?官网上说MaraDNS不支持递归域名解析,要递归解析必须使用deakwood. 但是我测试了下DeadWood是可以递归域名解析,却不能配置成解析内网,所以要将MaraDNS与Deadwook一起配合用才可以。在网上找了很久,终于按如下的blog配置并测试成功:

原文:http://permalink.gmane.org/gmane.network.dns.maradns.general/2055

On 24 Aug 2011 at 10:42, Sam Trenholme wrote:
Hi,
thanks to Sebastiano and Sam.
I finally was able to set up the configuration for MaraDNS 2-0-3 and Deeawood 3.0.
I report the detials here for the benefit of MaraDNS users.
My problem was to be able to support on my intranet (which has its own DNS
servers that support both management of the intranet domain/subdomains and 
resolution for Internet domains) resolution for names belonging to the "example.org"
domain to IP addresses of machines on our intranet (these machines are not altered in
any way; so they still are part of the intranet domain. Our environment is Windows
based!).

I installed MaraDNS and Deadwood on my laptop (a Windows 7 Enterprise 64-bits)
following the instructions provided within the MaraDNS zip file.
I've not installed MaraDNS as a Windows service beacause I don't need a permanent
support for the "example.org" domain-2-IP resolution! Deadwood is, instead,
installed as a Windows service even if I changes its properties so that it doesn't start
automatically.

Having performed all the above instalaltion I've configured MaraDNS to bind on the
127.0.0.1 IP address, so that it cannot be directly accessed from other machines,
while Deadwood is bound to my laptop IP address (192.168.152.67 as indicated in
the config file below).

The MaraDNS config is the following:
    #
    # Bind MaraDNS to my laptop IP Address
    #
    # N.B.: this IP address has to be changed according to the IP address of the
    machine on which MaraDNS is running
    #
    ipv4_bind_addresses = "127.0.0.1"
    timestamp_type = 2
    random_seed_file = "secret.txt"

##
    # verbose_level: The number of messages we log to stdout. It can have five
    values:
    #   0     No messages except for the legal disclaimer and fatal parsing errors
    #   1     Only startup messages logged (Default level)
    #   2     Error queries logged
    #   3     All queries logged
    #   4     All actions adding and removing records from the cache logged
    #
    verbose_level = 1
    #
    #
    ## hide_disclaimer = "YES"
    #
    #
    # This section states where the data for the authoritative zone are held
    #
    csv2 = {}
    csv2["example.org."] = "db.example.org.txt"

as you can see I simply specify that MaraDNS has to manage the example.org
domain and be bound to the specified IP address.

The Deadwood config file instead is this one:
    #
    # This section instructs "Deadwood" to redirect DNS queries for non-
    authoritative zones to other DNS servers
    #
    # N.B.: the IP addresses in this section must be set according to the DNS
    configuration of your local Net
    #
    root_servers = {}
    root_servers["example.org."] = "127.0.0.1"
    root_servers["."] = "192.168.152.5,"
    root_servers["."] += "192.168.152.8,"
    root_servers["."] += "192.168.210.33"

#
    # Bind "Deadwood" to my laptop IP Address
    #
    # N.B.: this IP address has to be changed according to the IP address of the
    machine on which "Deadwood" is installed
    #
    bind_address="192.168.152.67"

#
    # Enable the provision of private IP addresses in DNS replies
    #
    filter_rfc1918=0
    #
    # The IPs allowed to connect and use the cache
    # N.B.: this value must be updated as requested
    recursive_acl = "192.168.152.0/24"

# The file containing a hard-to-guess secret
    random_seed_file = "secret.txt"

# This is the file Deadwood uses to read the cache to and from disk
    cache_file = "dw_cache_bin"

as you can see I've instructed Deadwood to redirect any example.org query to the
MaraDNS active on the 127.0.0.1 IP address and all other DNS queries to our
internal DNS servers (see root_servers["."] lines above).
Additionally I've instructed Deaddwood to bind to my laptop IP address and accept
DNS queries from all machines in our intranet.
All this is not sufficient if you don't specify the filter_rfc1918=0 line, instrcting
Deadwood to return IP private address in DNS replies. Indeed if you leave the
filter_rfc1918 default value (1), Deadwood will correctly pass example.org queries
to MaraDNS but will not return any IP address (if, as normal, you are using private
IP addresses for the example.org domain).

That' all. Thanks again to the people who provided hints to me.
Regards
   Domenico

> > My Deadwood configuration file is:
> >
> [snip]
> > bind_address="127.0.0.1, 192.168.88.3"
> > root_servers={}
> > root_servers["home.lan."]="192.168.88.4"
> > root_servers["."]="198.41.0.4,"
> [snip rest of ICANN root servers]
> > upstream_servers={}
> [Note: no other use of upstream_servers]
>
> Thanks for the report.  The issue here may be that combinations of
> root_servers and upstream_servers have some issues.  What may also
> work for Domenico is to use Deadwood 2.3 (which has really good
> upstream_servers support, but no root_servers support) instead of
> Deadwood 3.0.
>
> There appear to be two different bugs with Deadwood 3's upstream_servers:
>
> * upstream_servers has issues if one of the upstream servers gives us
> a SERVER FAIL
>
> * There may be problems in Deadwood configurations where both
> upstream_servers and root_servers are used.
>
> I will look in to these issues on September 5 (sooner if I can get
> sponsorship to fix these bugs).
>
> - Sam

同时在博客园中有一篇中文的博客不错,但他写的只适合MaraDNS解析内网,在这里也备注一下,以后忘记的时候可以参考下

http://www.cnblogs.com/scorpio0920/p/4480100.html

MaraDNS与DeadWood一起配置为本地机器提供小型化DNS服务的更多相关文章

  1. linux下如何查看当前机器提供了哪些服务

    答:使用netstat工具 在命令行下输入netstat -atun即可列出当前机器提供的服务 netstat各选项解析: -a 列出所有服务 -t 列出tcp相关 -u 列出udp相关 -n 以数字 ...

  2. Azure File Storage(一)为本地机器配置网络磁盘

    一,引言 本地机器硬盘空间不够了怎么办?重要文件不想存储在本地硬盘怎么办?加外接移动硬盘:或者换大容量存储设备,都是解决方案.但是每次都得携带,还得考虑当前设备是否支持外接硬盘. 1,这个时候 Win ...

  3. C#开发中使用配置文件对象简化配置的本地保存

    C#开发中使用配置文件对象简化配置的本地保存 0x00 起因 程序的核心是数据和逻辑,开发过程中免不了要对操作的数据进行设置,而有些数据在程序执行过程中被用户或程序做出的修改是应该保存下来的,这样程序 ...

  4. Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...

  5. RedHat linux配置yum本地资源

    今天安装个linux平台的oracle数据库,在oracle检测的时候发现有些系统补丁包没有安装,手动rpm安装报有些关联包也没有安装,想想如果一个一个rpm的话累死人了要,所以想起用yum来进行安装 ...

  6. 配置rpm本地源及局域网环境下使用

    LInux个人开发过程中可以直接连到公网,所以想要安装各种软件时直接安装即可,但工作环境往往很让人头疼. 如果应用场景是没法链接外网的,公司内部绝大多数情况下是在自己的局域网下玩,这时候想装个软件是相 ...

  7. Dnsmasq安装与配置-搭建本地DNS服务器

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...

  8. JBOSS安装与配置搭建本地项目环境(方便前端开发调式)

    JBOSS安装与配置搭建本地项目环境  什么是JBOSS? JBOSS是EJB的服务器,就像Tomcat是JSP服务器一样,就是服务器的一种. 环境搭建如下: 一:首先安装JDK,配置环境变量(PAT ...

  9. Maven settings.xml配置(指定本地仓库、阿里云镜像设置)

    转: 详解Maven settings.xml配置(指定本地仓库.阿里云镜像设置) 更新时间:2018年12月18日 11:14:45   作者:AmaniZ   我要评论   一.settings. ...

随机推荐

  1. 初涉JavaScript模式 (13) : 代码复用 【上】

    引子 博客断了一段时间,不是不写,一是没时间,二是觉得自己沉淀不够,经过一段时间的学习和实战,今天来总结下一个老生常谈的东西: 代码复用. 为何复用 JS门槛低,故很多人以为写几个特效就会JS,其实真 ...

  2. 面向对象设计模式之Facade外观模式(结构型)

    动机:有些系统组件的客户和组件中各种复杂的子系统有了过多的的耦合,随着外部客户程序  和个子系统的演化,这种过多的耦合面临很多变化的挑战:如何简化外部客户程序和系统的交互接口?  如何将外部客户程序的 ...

  3. Linux下Openfire相关安装和配置

    记录下来,方便下次再用时从头查找资料 小京东ecshop中的通讯有用到openfire,Window下配置安装很简单,直接下载exe文件安装就行,而linux下要麻烦一点.安装后的配置下面会细说: 一 ...

  4. JQuery执行函数与window.onload函数

    JavaScript和HTML之间的交互: 1.通过用户和浏览器操作页面时引发的事件来处理的. 2.当文档或者它的某些元素发生某些变化时,浏览器会自动生成一个事件. 例如:当浏览器装载完一个文档后,会 ...

  5. IOS自定义alertview

    在家闲来无事,于是就看起来ios绘图的那块,写点什么好呢? 鼓捣了一会,总算写出了一个小东西 这个是写完以后的效果 这里我实现了三种款式的alertview 分别是成功,错误和警告,剩下的呢有空继续添 ...

  6. [Struts2学习笔记] -- 输入校验

    Struts2可以对客户端的输入进行校验,通过重写ActionSupport的validate方法来实现,具体如下: 首先通过用struts标签库创建一个form表单,表单中控件的name与actio ...

  7. 快速排序(Quick Sort)的C语言实现

    快速排序(Quick Sort)的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对着两部分记录继续进行排序,以达到整个序列有序,具体步骤 ...

  8. Scut:从PackageReader分析客户端协议规则

    看第一个解析API: private void ParseData(byte[] data) { var paramBytes = SplitBuffer(data); RawParam = _enc ...

  9. OC中的@interface和java中的区别以及 @implementation @protocol

      java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时, ...

  10. codevs4373 窗口

    题目描述 Description 给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表: Window position Min val ...