Domain-Name-System

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

  • February 10, 2021

我有一個 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, 添加到它的 hosts 文件中,它會正確解析,並且伺服器反向代理將傳入連接路由到正確的埠。

我該如何解決這個問題,以便所有子域都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

然後允許以下工作:

~$ 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'

[...]

希望這對將來的其他人有所幫助!

引用自:https://serverfault.com/questions/1053045