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