跳转到主要内容

面向开发者的纯Python DNS服务器

项目描述

https://img.shields.io/pypi/v/devns.svg https://img.shields.io/pypi/l/devns.svg https://img.shields.io/pypi/wheel/devns.svg https://img.shields.io/pypi/pyversions/devns.svg https://travis-ci.org/daveisadork/PyDevNS.svg?branch=master https://codecov.io/gh/daveisadork/PyDevNS/branch/master/graph/badge.svg

PyDevNS是一个面向开发者的纯Python DNS服务器。您知道您需要一个域名来与您的本地应用程序交互吗?这个工具就是为您准备的。

安装

pip install devns

嘿,并非所有事情都必须很难。

理由

我知道你在想什么

伙计,什么?我只是在我的 /etc/hosts 文件中放入了 local.dev。

这很好,但当你需要 local.dev 和 *.local.co 呢?

这有像一百万样东西可以做这个。我可以使用 dnsmasq 或其他40个随机的Python“dev DNS”服务器,你很可能会从那里盗取你的实现。

好的,dnsmasq 可能有点过度,但当你需要在docker容器内部使用 local.dev 或 reallycoolprogrammer.local.dev 时怎么办?

那么我只需将 dnsmasq 解析到我的真实IP地址而不是 127.0.0.1。

所以每次你从家里到咖啡店,再到办公室,无论去哪里,你都要编辑配置并重新启动 dnsmasq...

提到这个,还真是有点麻烦……

想的一样。

默认行为

如果你不带参数运行 devns,服务器将会启动,绑定到 0.0.0.0 并随机选择端口,然后尝试发现一个合适的 IP 地址来解析任何进入的 DNS 请求。它实际上并不关心你请求哪个域名,它总是响应,并且总是同一个 IP 地址,希望是实际网络接口的 IP 地址(例如 192.168.1.52 或其他)。它会自己尝试找出这个地址,我认为它做得相当不错。

但问题来了,我怎么让 DNS 查询发送到它,尤其是它每次运行时都使用随机端口的情况下呢?

很高兴你问了。它也会尝试将文件写入到 /etc/resolver/dev,如果您的操作系统支持此类功能,就会告诉它将所有以 .dev 结尾的域名的 DNS 查询发送给 devns

我难道……

需要用 sudo 运行来做到这一点吗?是的,可能需要,除非你的系统疯狂到允许任何人都随意写入 /etc,在这种情况下,你面临的问题比让 local.dev 解析到有意义的地址要大得多。

我不需要每次 IP 地址变化时都重新启动它,就像 dnsmasq 一样,对吧?

不,与 devns 在响应中使用的地址相关联有一个可配置的 TTL。默认情况下,这是 5 分钟。如果查询进入并且地址在 5 分钟前最后一次确认,它会尝试重新发现它。这应该涵盖大多数从一个地方移动到另一个地方的情况。

示例

以随机端口和自动配置的解析器运行服务器,解析 .dev 到合理的、自动检测的 IP 地址

sudo devns

每 15 分钟而不是 5 分钟重新发现响应地址

sudo devns --ttl 900

监听端口 53535,不写入任何解析器文件

devns --port 53535 --no-resolver

将解析器文件写入 /usr/local/etc/resolver 而不是 /etc/resolver

devns --resolver-dir /usr/local/etc/resolver

对所有查询响应 172.24.3.1,并忽略 TTL

sudo devns --address 172.24.3.1

监听端口 53535,为 .dev.local.co 写入配置文件

sudo devns --port 53535 --domains dev local.co

绑定到 127.0.0.1 的随机端口,并制造很多噪音

sudo devns --host 127.0.0.1 -vvv

注意/警告

如果你的 /etc/hosts 中有任何你想要与 devns 一起使用的域名条目,你必须删除它们。仅此而已。

用法

这里是 devns --help 命令的输出

usage: devns [-h] [--version] [--verbose | --quiet]
             [--address ADDRESS | --ttl SECONDS] [--host HOST] [--port PORT]
             [--domains [DOMAIN [DOMAIN ...]]] [--resolver-dir DIRECTORY]
             [--no-resolver]

PyDevNS - A DNS server for developers.

optional arguments:
  -h, --help            show this help message and exit
  --version             show version and exit

Logging:
  --verbose, -v         verbose output
  --quiet, -q           quiet mode

Address:
  --address ADDRESS, -a ADDRESS
                        IP address to respond with
  --ttl SECONDS, -t SECONDS
                        how often to refresh the address

Network:
  --host HOST, -H HOST  address to listen on
  --port PORT, -p PORT  port to listen on

Resolver:
  --domains [DOMAIN [DOMAIN ...]], -d [DOMAIN [DOMAIN ...]]
                        domains to create resolver files for
  --resolver-dir DIRECTORY, -rd DIRECTORY
                        where to put resolver files
  --no-resolver, -nr    disable creating resolver files

项目详情


下载文件

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

源代码发行版

devns-0.5.0.tar.gz (13.0 kB 查看哈希值)

上传时间 源码

构建版本

devns-0.5.0-py2.py3-none-any.whl (13.8 kB 查看哈希值)

上传时间 Python 2 Python 3

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面