带有rest api的简单dns服务器,仅用于本地主机

minidns的Python项目详细描述


Date:2013-09-11
Author:Doug Winter <doug.winter@isotoma.com>
Website:http://github.com/yaybu/minidns

说明

支持本地开发的小型DNS服务。默认情况下,服务器侦听 在5053号港口。iptables用于将请求转发到localhost:53到localhost:5053。

dns服务提供递归查询,因此您可以继续像往常一样使用dns。

然后可以设置新的权威域和可用的记录 在当地。

例如:

$ minidns start
$ host www.example.com
www.example.com has address 93.184.216.119
www.example.com has IPv6 address 2606:2800:220:6d:26bf:1447:1097:aa7
$ minidns add example.com
$ minidns record example.com a www 192.168.0.10
$ minidns show example.com
www 192.168.0.10
$ host www.example.com
www.example.com has address 192.168.0.10
$ minidns stop
$ host www.example.com
www.example.com has address 93.184.216.119
www.example.com has IPv6 address 2606:2800:220:6d:26bf:1447:1097:aa7

用法:

Usage: minidns [options] command

daemon control commands:
    start  start the minidns server and forward localhost:53 to it
    stop   stop the minidns server and remove iptables rules

zone commands:
    add name  add a new local authoritative zone "name"
    del name  delete the local authoritative zones "name"
    list      list all authoritative zones
    show name list records for the zone "name"

record commands:
    record zone a host [data]   create A record
    record zone del host        delete record

    e.g. record example.com a www 192.168.0.1

Options:
  -h, --help            show this help message and exit
  -c CONFIG, --config=CONFIG
                        path to configuration file
  -n, --no-divert       Do not use iptables to divert port DNS locally

iptables

作为启动和停止的一部分(除非提供-n开关),minidns 对iptables nat配置进行一些更改。这就好像 您正在使用localhost作为您的名称服务器(这是很常见的 配置)。

iptables命令用于将localhost:53重新路由到minidns端口,因此 它可以透明地占用您的本地dns。

这个机制被选为最不具侵入性的方式,在 尤其是它不会对/etc中的文件进行任何更改。

API

minidns主要用于自动部署系统,并且 为这些系统提供一个简单的rest api。

一般来说,成功的请求应该具有以下响应代码:

  • GET requests return 200 on success
  • PUT requests return 201 on success
  • DELETE requests return 204 on success

Web端口上的可用资源是:

根资源:/

get

返回受管区域的列表,每行一个,用n分隔。例如:

GET /

200 OK
example.com
foo.com

可能的状态码响应为:

  • 200 Success

域资源:/域

获取

返回此域中的记录列表,每行一条,用n分隔。例如:

GET /example.com

200 OK
A www 192.168.0.1

可能的状态码响应为:

  • 200 Success
  • 404 Domain not found. The domain has not been created as an authoritative zone in minidns.

放置

创建此域。例如:

PUT /example.com

201 Created

可能的状态码响应为:

  • 201 Created (success)
  • 200 Domain already exists, unchanged

删除

删除此域。例如:

DELETE /example.com

204 No Content

可能的状态码响应为:

  • 204 Success
  • 404 Domain not found. The domain has not been created as an authoritative zone in minidns.

记录资源:/域/主机

获取

返回记录的值。例如:

GET /example.com/www

200 OK
A 192.168.0.1

可能的状态码响应为:

  • 200 Success
  • 404 Record not found

放置

创建记录。有效负载应该是由空格分隔的类型和数据。例如:

PUT /example.com/www
A 192.168.0.1

201 Created

可能的状态码响应为:

  • 201 Created (success)
  • 404 Zone not found
  • 400 Malformed request. The reason message will provide more details.

删除

删除记录。例如:

DELETE /example.com/www

204 No Content

可能的状态码响应为:

  • 204 Success
  • 404 Domain or record not found

配置文件

不需要配置文件-提供了合理的默认值。请注意,默认情况下,google的dns服务器用作转发器。

如果您愿意,可以提供以下格式的文件:

[minidns]
forwarders = 8.8.8.8 8.8.4.4
udp_port = 5053
tcp_port = 5053
www_port = 5080
pidfile = minidns.pid
logfile = minidns.log

许可证

2013 ISOtoma有限公司版权所有

根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java这两个例子是等价的(volatile+synchronized increment还是synchronized fetch+increment)?   java Spring Boot+LocalDate:“没有主构造函数或默认构造函数”   java代码,用于在jasper报告中以指定格式显示浮点值   java@AllArgsConstructor不使用Springbean   在同一行上声明多个Java数组?   java在JSP中使用JSon   从Java运行PowerShell加载第三方模块ResourceUnavailable:FileNotFoundException   java Do SWIG在carrays中的数组类。我可以释放它们包装的调用数组吗?   java无法在linux中加载库MediaInfo   文件的java大小在写入一些文本时会变成GB   java将Arraylist转换为要通过Whatsapp共享的项目列表   java Android保存网络请求状态   java标签一个泛型类型参数,以超级   java向二进制文件添加自定义元数据   java在使用JScrollPane滚动文本时偶尔会出现扭曲显示   java log4j2仅记录到控制台   java不一致的Apache Solr查询结果   如何在web项目的前端使用php,后端使用java   java如何使spring批处理步骤执行与可配置线程数并行?   java无法为ArrayList<thread>中的可运行文件调用getter?