我有一个奇怪的情况(通过axTLS进行TLS证书验证),我需要通过DNS解析的主机名访问本地开发服务器,不一个IP地址。
是否有DNS服务动态解析子域的A记录,例如" 192-168-0-42.example.com"无论代表什么IP地址?
我不是要尝试将IP地址反向查找到其主机名。就我而言,我的本地DNS基础结构没有 IP地址的主机名。我需要一个特定IP地址的公共DNS条目,而不是自己设置一个并等待它传播,也许有人已经设置了一个动态解析器?
答案 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发现了这一点。