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

Jac*_*_Hu 5 domain-name-system routing reverse-proxy subdomain 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 界面)中的设置,没有发现任何内容能够实现此目的。

有任何想法吗?

Jac*_*_Hu 4

我最终把它解决了。

根据:

https://openwrt.org/docs/guide-user/base-system/dhcp_configuration#a_and_aaaa_rr

其中指出:

这是 --address 选项的实现。查询域 home 和子域 *.home 返回 10.10.10.1。

我能够登录 OpenWRT (使用ssh root@192.168.1.1),并运行:

uci add_list dhcp.@dnsmasq[0].address="/server.local/192.168.1.200"
uci commit dhcp
/etc/init.d/dnsmasq restart
Run Code Online (Sandbox Code Playgroud)

然后允许以下操作工作:

~$ 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
Run Code Online (Sandbox Code Playgroud)

还有其他与此相关的事情:

~$ 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
Run Code Online (Sandbox Code Playgroud)

据我了解,这会在 DNSMasq 中创建一条 A 记录,其中自动包含所有子域。

这些变化可以在 中看到/etc/config/dhcp,现在看起来(部分)像:

config dnsmasq
        [...]
        option domain 'local'
        option local '/local/'
        list address '/server.local/192.168.1.200'

[...]
Run Code Online (Sandbox Code Playgroud)

希望这对将来的其他人有帮助!