面向开发人员的纯python dns服务器
devns的Python项目详细描述
pydevns是面向开发人员的纯python dns服务器。你知道你需要什么 用于在本地与应用程序交互的域名?好吧,这是 给你的工具。
安装
pip install devns
嘿,不是每件事都很难。
基本原理
我知道你在想什么:
Dude, what? I just put ^{tt2}$ in my ^{tt3}$ file.
一切都很好,但是当你需要local.dev和 *.local.co?
There’s like a million things out there that do this. I could use ^{tt6}$, or one of the other 40 random Python “dev DNS” servers you probably stole your implementation from.
好吧,dnsmasq看起来有点过分了,但是当你需要的时候呢 local.dev或reallycoolprogrammer.local.dev从 码头集装箱?
Well then I just make ^{tt6}$ resolve it to my real IP instead of ^{tt11}$.
因此,每次从家中移动时,编辑配置并重新启动dnsmasq, 去咖啡厅,去办公室,无论在哪里……
That is kind of a pain, now that you mention it…
我想是的。
默认行为
如果运行devns时没有参数,服务器将启动,绑定到 0.0.0.0使用随机端口,并尝试找到合适的IP地址来使用 用于解析任何传入的DNS请求。它根本不在乎什么领域 你要求,它总是回应,总是用相同的IP,希望是IP 实际网络接口的地址(例如192.168.1.52或其他)。 它试图自己解决这个问题,我认为它做得很好 是的。
But then how do I make DNS queries go to it, especially if it’s using a random port every time it runs?
很高兴你这么问。它还将尝试将文件写入/etc/resolver/dev,其中 如果你的操作系统支持这样的东西,会告诉它发送任何dns查询 结束它的域.dev到devns。
But wouldn’t I need to…
用sudo来运行它?可能吧,除非你的系统是疯狂的 让任何人随意写信给/etc,在这种情况下 比让local.dev解决一些合理的问题更大的问题。
Don’t I have to restart it every time my IP changes, just like ^{tt6}$?
不,有一个可配置的ttl与 它的反应。默认情况下,这是5分钟。如果一个查询出现并且 地址最后一次确认是在5分钟前,它会尝试重新发现 它。这应该涵盖大多数从一个地点迁移到另一个地点的情况。
示例
使用随机端口和自动配置的解析程序为^{tt17}运行服务器$ 解析为可感知的自动检测IP地址:
^{tt25}$
每15分钟重新发现一次响应地址,而不是5:
^{tt26}$
在端口53535上侦听,而不写入任何解析程序文件:
^{tt28}$
将解析程序文件写入/usr/local/etc/resolver,而不是 /etc/resolver:
^{tt31}$
用172.24.3.1响应所有查询,并忽略ttl:
^{tt33}$
监听端口53535,为.dev和.local.co编写配置文件:
^{tt37}$
绑定到127.0.0.1上的随机端口,并发出大量噪音:
^{tt39}$
注释/注意事项
如果您的/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