面向开发人员的纯python dns服务器

devns的Python项目详细描述


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

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.devreallycoolprogrammer.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查询 结束它的域.devdevns

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有本地和在线数据库的java桌面应用程序   corePoolSize=0的java ScheduledThreadPoolExecutor会在一个CPU内核上产生100%的负载   Java打印2D数组,就像带边框的表格一样   优化有没有办法通过方法回调在代码中捕获Java中的对象分配?   java为什么我的变量不能工作?   jface树项上的java刷新存在绘制问题   内存管理在Java中如何在一行中返回数组?   java向云端点添加参数会导致404 GoogleJsonResponseException   java如何定义webservice端点url   来自play store的安卓 AdneEngine错误:java。lang.NoSuchMethodError   java是否可以在Gluon移动应用程序中加载网页?   java Maven OSGi项目已编译,但不会运行   java如何修复布局抖动?   xml Java SoapMessage添加空命名空间   在Java中从派生类调用基类构造函数   java使用netbeans从jtable中的mysql检索数据   使用FIPS 1402库在Java中创建OpenPGP消息的加密   java编程语言的第二个实现可以用这种语言编写吗?   java如何使用带多个参数的分隔符