用于将子域动态解析为自定义IP地址的DNS服务

时间:2015-01-28 23:55:02

标签: dns ip-address hostname

我有一个奇怪的情况(通过axTLS进行TLS证书验证),我需要通过DNS解析的主机名访问本地开发服务器,一个IP地址。

是否有DNS服务动态解析子域的A记录,例如" 192-168-0-42.example.com"无论代表什么IP地址?

我不是要尝试将IP地址反向查找到其主机名。就我而言,我的本地DNS基础结构没有 IP地址的主机名。我需要一个特定IP地址的公共DNS条目,而不是自己设置一个并等待它传播,也许有人已经设置了一个动态解析器​​?

2 个答案:

答案 0 :(得分:4)

您可以使用--synth-domain参数使用dnsmasq实现此目的。

使用您最喜欢的软件包管理器安装dnsmasq后,在前台运行它(-k)进行测试(注意:如果软件包管理器为您启动dnsmasq,您可能必须将其停止才能启动第二个例子):

$ sudo dnsmasq -k --synth-domain=ip,0.0.0.0,255.255.255.255,internal-

这将合成.ip TLD上所有主机名的A记录,其格式为internal-10-11-12-13.ip(您可以自由使用更窄的IP范围或地址和网络掩码;请参阅手册页详情)。尾随internal-是可选的,如果您想使用10-11-12-13.ip形式的地址,可以省略它。

在另一个shell中,测试它是否按预期工作:

$ dig @localhost internal-10-11-12-13.ip

; <<>> DiG 9.8.3-P1 <<>> @localhost internal-10-11-12-13.ip
; (3 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10038
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;internal-10-11-12-13.ip.   IN  A

;; ANSWER SECTION:
internal-10-11-12-13.ip. 0  IN  A   10.11.12.13

这告诉dig使用在localhost上运行的nameserver,它应该是我们刚刚在第一部分开始的dnsmasq实例。

如果对合成记录的格式感到满意,可以将操作系统配置为使用dnsmasq作为.ip TLD的解析器。假设您有一个相当新的Linux或OS X作为主机分发,这可以简单地实现。使用以下内容创建一个文件(以root身份)/etc/resolver/ip

nameserver 127.0.0.1

(您可能需要勾选操作系统以使其识别此更改;在Yosemite上我必须touch /etc/resolv.conf才能开始工作。

最后,您可能希望在dnsmasq中永久更改此更改。请咨询您的软件包管理器,了解dnsmasq配置文件的位置以及如何在启动时启动它。在Yosemite上,并使用自制软件安装,可在/usr/local/etc/dnsmasq.conf中找到。您可以在配置文件中包含以下内容:

address=/ip/127.0.0.1
synth-domain=ip,0.0.0.0,255.255.255.255

这会导致10-11-12-13.ip形式的所有地址解析为指定的IP地址,而.ip上的所有其他地址都解析为127.0.0.1。

如,

$ ping 10-11-12-13.ip
PING 10-11-12-13.ip (10.11.12.13): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
^C
--- 10-11-12-13.ip ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
$ ping foo.ip
PING foo.ip (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.027 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.071 ms
^C

最后,请注意,虽然dnsmasq确实对合成地址执行了反向解析,但它们只能在使用类似配置的dnsmasq实例的计算机上进行反转。

答案 1 :(得分:2)

是的! 37Signals提供http://xip.io/,看起来完全我想要的东西!从它的主页:

  

xip.io是一个神奇的域名,可为任何IP提供通配符DNS   地址。假设您的LAN IP地址是10.0.0.1。使用xip.io,

      10.0.0.1.xip.io   resolves to   10.0.0.1
      …

信用:通过https://stackoverflow.com/a/12162955/179583发现了这一点。