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 界面)中的设置,没有发现任何内容能够实现此目的。
有任何想法吗?
我最终把它解决了。
根据:
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)
希望这对将来的其他人有帮助!
归档时间: |
|
查看次数: |
7770 次 |
最近记录: |