我有一个 OpenWRT 路由器设置,192.168.1.1
带有搜索域local
(与默认的相反lan
)。
我已经设置了一个服务器,192.168.1.200
其主机名是server.local
。
我有一个工作站,192.168.1.10
,其主机名是workstation.local
。
server.local
还运行 NGINX 反向代理,以提供诸如之类的子域名sub.server.local
。
如果我的工作站尝试访问,server.local
则它会被正确解析为指向192.168.1.200
。
但是,如果我的工作站尝试访问,sub.server.local
它无法解析192.168.1.200
。
如果我的工作站已将192.168.1.200 sub.server.local
其添加到其主机文件中,则它可以正确解析,并且服务器反向代理会将传入的连接路由到正确的端口。
我该如何修复这个问题,以便 的所有子域名都能server.local
解析为192.168.1.200
?无需为每个工作站、每个服务器上的子域名添加主机记录,这显然是不可持续的。
我假设我需要更改 OpenWRT 路由器上的某些 DNS 记录,但查看 Luci(Web 界面)中的设置,没有任何内容可以实现这一点。
有任何想法吗?
答案1
答案2
我最终把一切都解决了。
根据:
https://openwrt.org/docs/guide-user/base-system/dhcp_configuration#a_and_aaaa_rr
其中指出:
这是 --address 选项的实现。查询域 home 和子域 *.home 时返回 10.10.10.1。
我能够登录到 OpenWRT(使用),并运行:ssh [email protected]
uci add_list dhcp.@dnsmasq[0].address="/server.local/192.168.1.200"
uci commit dhcp
/etc/init.d/dnsmasq restart
然后允许以下操作进行:
~$ ping www.server.local
PING www.server.local (192.168.1.200) 56(84) bytes of data.
64 bytes from server.local (192.168.1.200): icmp_seq=1 ttl=63 time=55.4 ms
64 bytes from server.local (192.168.1.200): icmp_seq=2 ttl=63 time=77.3 ms
还有其他任何事情:
~$ ping hdsjdjk.server.local
PING hdsjdjk.server.local (192.168.1.200) 56(84) bytes of data.
64 bytes from server.local (192.168.1.200): icmp_seq=1 ttl=63 time=101 ms
64 bytes from server.local (192.168.1.200): icmp_seq=2 ttl=63 time=124 ms
据我了解,这会在 DNSMasq 中创建一个 A 记录,它自动包含所有子域。
您可以在中看到变化/etc/config/dhcp
,现在看起来(部分)如下:
config dnsmasq
[...]
option domain 'local'
option local '/local/'
list address '/server.local/192.168.1.200'
[...]
希望这能在未来帮助到其他人!