OpenWRT - 如何将主机名的所有子域重定向到同一主机,以便可以进行反向代理?

OpenWRT - 如何将主机名的所有子域重定向到同一主机,以便可以进行反向代理?

我有一个 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

从今天起*,此功能可在 Luci 中使用:在“网络”->“DHCP 和 DNS”->“常规”下,字段“地址”

Luci 网络 -> DHCP 和 DNS -> 常规 -> 地址

*合并于2020 年 9 月

答案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'

[...]

希望这能在未来帮助到其他人!

相关内容