带有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第三方库


热门话题
安卓hive教程中的java JSONParser,DefaultHttpClient中的NoSuchMethodError   java实现了一个函数来检查链表是否是回文无递归、无堆栈、无反转   java SQLite高分,草率IndexOutofBounds Android   java PermGen以99%的速度猛增,但远不及MaxPermSize   在PHP中重新创建java HashMap函数   java为什么我不能在JFrame上“画画”?   java如何从字符串中转义特殊字符   Java SimpleDateFormat时区偏移量,分钟用冒号分隔   java Actionbar,带有每个选项卡的菜单   PHP加密和解密方法到java的aes转换   java在maven构建期间提供三个属性文件作为输入   java缩短开关块内case语句中的代码行