我在 NAT 后面有一个带有几台机器的网络。
这些机器是:
- 路由器 - NAT、dnsmasq、转发 - 直接连接到 inet
- 服务器 - 运行 ssh、www 和其他一些东西
- 客户端——在服务器上做事
我也有 mydomain.com。
server.mydomain.com 指向我连接的IP(单一IP),即路由器,将端口转发到服务器。
服务器,有一个 httpd 正在运行,它基于 vhost 为不同的站点提供服务。
所以我有site1.server.mydomain.com,site2..
问题是所有流量都通过路由器,当我检查日志时,我总是看到路由器的 IP (所以很难看到谁在使用 while(1) 运行脚本)。
我只会使用 ServerAlias site1.server.local,但大多数网站都有一个根 URL 保存在某个地方,其他 URL 是在该 URL 之上构建的,所以我不能这样做。
我的解决方案是告诉 dnsmasq 以某种方式用服务器的 IP 回答 *.mydomain.com。
这有可能吗?
我在我的开发服务器上做完全相同的事情,这样我就可以在本地和具有相同配置的异地服务器上拥有一个 rsynced 镜像。
假设您的网络服务器的内部接口是 192.168.0.3,这就是您在 dnsmasq.conf 中需要的内容(确保重新启动它):
这将为 *.server.mydomain.com 创建一个通配符条目,只要您的客户端使用 DNSMasq 作为其 DNS(并且您的服务器在内部接口中侦听),您就设置好了。
我不确定我是否理解您的问题,但在我看来,您的问题的根本原因是对路由器上的传入连接进行 NAT。更具体地说,由于您说所有传入连接都出现在带有路由器 IP 地址的日志中,因此您似乎在伪装所有传入连接。
您应该做的是路由器上的 DNAT 传入连接和 SNAT 传出连接,这将保留每个连接的源 IP。