面向开发者的纯Python DNS服务器
项目描述
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f1474d8b852b93940f22c227b704a1d4bc26045fdb5876a47f0c9ade0d30a071 |
|
MD5 | 9751f956d7a367fa854c1bf42ed3c2cf |
|
BLAKE2b-256 | d8c851ef89155792aae8a2da116d98aed8bf564783b350cc12397a1a9dc6c213 |
devns-0.5.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3df8e2b929621c4241d5125bdfd04a9344edb7068bd09b497241b73ea9d34043 |
|
MD5 | 1c057e7eeb0b6070fcd3c9a25cb24ba5 |
|
BLAKE2b-256 | b52c9a46a4c7417e82cbf0c6ac8bc9f04411f66ffdb7fd6375b8874f5bde9107 |