我家里有几台不同的服务器。有些暴露在外面,我为家里的东西设置了一个域名。假设这是myhome.mydomain.com
。我还设置了一个通配符 DNS *.myhome.mydomain.com
,指向同一台服务器(两者都是指向我路由器内置 DDNS 功能的 CNAME 记录)。
从外部看,这运行正常。但从内部看,有些东西出了问题。我猜这与从内到外再到内的路由有关...所以在我看来,我的选择是要么找出路由中断的原因,要么设置一个内部 DNS 服务器以指向myhome.mydomain.com
此服务器的内部 IP,然后将其余部分转发到我的 ISP 的 DNS 或 Google 或 OpenDNS 等。
如何设置此内部 DNS 服务器?我还希望它响应通配符,因为我的计划是在所有我希望最终向外部公开的服务前面设置一个 nginx 代理。
答案1
外部部分已经好了。以下步骤是启用内部DNS服务器。
在本地 Linux 机器上设置 dnsmasq。
将其设置为监听连接到您的 LAN 的接口。
设置一些外部 DNS /etc/resolv.conf
(或配置自定义解析文件并在其中添加 DNS 服务器)。这些 DNS 服务器将用于解析 dnsmasq 无法使用其配置文件或 /etc/hosts 内容解析的任何内容。
然后:
如果您希望 *.myhome.mydomain.com 解析为单个内部 IP,请添加:
address=/.myhome.mydomain.com/YOUR.IP.ADD.RESS
在 dnsmasq 的配置文件中(通常
/etc/dnsmasq.conf
)/etc/hosts
使用以下格式添加您希望通过 dnsmasq 解析的其他主机:192.168.1.x name1.myhome.mydomain.com 192.168.1.y name2.myhome.mydomain.com 192.168.1.z name3.otherdomain.com
将您的盒子 IP 地址设置为本地网络的 DNS。