跳转到主要内容

用Python编写的简单DNS服务器,用于开发和测试。

项目描述

dnserver

CI Coverage pypi docker versions license

用Python编写的简单DNS服务器,用于开发和测试。

该DNS服务器服务于其自己的记录,如果没有找到,则将请求代理到上游DNS服务器,例如 CloudFlare 在 1.1.1.1

您可以使用自定义的 zones.toml 文件设置要服务的记录,请参阅 example_zones.toml 示例。

从PyPI安装

使用以下命令安装

pip install dnserver

用法

dnserver --help

(或 python -m dnserver --help)

例如,要在端口 5053 上提供服务名为 my_zones.toml 的文件,请运行

dnserver --port 5053 my_zones.toml

使用Python的用法

from dnserver import DNSServer

server = DNSServer.from_toml('example_zones.toml', port=5053)
server.start()
assert server.is_running

# now you can do some requests with your favorite dns library

server.stop()

使用Docker的用法

要使用Docker

docker run -p 5053:53/udp -p 5053:53/tcp --rm samuelcolvin/dnserver

(见 dnserver on hub.docker.com)

或者使用自定义区域文件

docker run -p 5053:53/udp -v `pwd`/zones.toml:/zones/zones.toml --rm samuelcolvin/dnserver

(假设您的区域记录在 ./zones.toml 中,使用 dig 不需要TCP,因此在此情况下省略了它。)

您可以使用以下方式测试(以上任何一种):

~   dig @localhost -p 5053 example.com MX
...
;; ANSWER SECTION:
example.com.		300	IN	MX	5 whatever.com.
example.com.		300	IN	MX	10 mx2.whatever.com.
example.com.		300	IN	MX	20 mx3.whatever.com.

;; Query time: 2 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; WHEN: Sun Feb 26 18:14:52 GMT 2017
;; MSG SIZE  rcvd: 94

~   dig @localhost -p 5053 tutorcruncher.com MX
...
;; ANSWER SECTION:
tutorcruncher.com.	299	IN	MX	10 aspmx2.googlemail.com.
tutorcruncher.com.	299	IN	MX	5 alt1.aspmx.l.google.com.
tutorcruncher.com.	299	IN	MX	5 alt2.aspmx.l.google.com.
tutorcruncher.com.	299	IN	MX	1 aspmx.l.google.com.
tutorcruncher.com.	299	IN	MX	10 aspmx3.googlemail.com.

;; Query time: 39 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; WHEN: Sun Feb 26 18:14:48 GMT 2017
;; MSG SIZE  rcvd: 176

您可以看到,第一个查询耗时2毫秒,并从example_zones.toml返回结果,第二个查询耗时39毫秒,因为dnserver没有该域名的记录,因此必须代理查询到上游DNS服务器。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

dnserver-0.4.0.tar.gz (13.4 kB 查看哈希值)

上传时间

构建分发

dnserver-0.4.0-py3-none-any.whl (8.6 kB 查看哈希值)

上传时间 Python 3

支持