如何使用 dnsmasq 配置静态通配符子域

如何使用 dnsmasq 配置静态通配符子域

我有一个位于 NAT 后面的网络,其中有几台机器。

这些机器是:

  • 路由器 - NAT、dnsmasq、转发 - 直接连接到 inet
  • 服务器 - 运行 ssh、www 和一些其他东西
  • 客户端——在服务器上执行操作

我还有 mydomain.com。server.mydomain.com
指向我的连接的 IP(单个 IP),即路由器,它将端口转发到服务器。

服务器正在运行 httpd,它根据 vhosts 为不同的站点提供服务。
所以我有 site1.server.mydomain.com、site2……

问题是所有流量都经过路由器,当我检查日志时,我总是看到所有内容的路由器 IP(因此很难看到谁在运行带有 while(1) 的脚本)。

我只想使用 ServerAlias site1.server.local,但大多数站点都有一个保存在某处的根 URL,其他 URL 都是在其上构建的,所以我无法这样做。

对我来说,解决方案是告诉 dnsmasq 以某种方式使用服务器的 IP 来回答 *.mydomain.com。

这可能吗?

答案1

我在我的开发服务器上做了完全相同的事情,以便我可以在本地和异地服务器上拥有具有相同配置的 rsynced 镜像。

假设您的 Web 服务器的内部接口是 192.168.0.3,那么这就是您在 dnsmasq.conf 中所需要的内容(请确保重新启动它):

address=/.server.mydomain.com/192.168.0.3

这将为 *.server.mydomain.com 创建一个通配符条目,只要您的客户端使用 DNSMasq 作为其 DNS(并且您的服务器在内部接口中监听),您就设置好了。

答案2

我不确定我是否理解了您的问题,但在我看来,您遇到的问题的根本原因是路由器上的传入连接 NAT。更具体地说,由于您说所有传入连接都与路由器 IP 地址一起出现在日志中,因此似乎您正在伪装所有传入连接。

您应该做的是在路由器上对传入连接进行 DNAT,对传出连接进行 SNAT,这将保留每个连接的源 IP。

相关内容