我们使用一个基于DNS的代理系统,它根据DNS条目代理某些地址,例如,对于website1.com,DNS代理返回IP,然后发送请求,但是对于website2.com,DNS返回常规地址和请求直接发送。 那没问题
但是,这只适用于基于名称的调用。 我们也需要能够对某些IP地址也做同样的事情,但有没有办法做到这一点?
例如,用户浏览到IP 1.2.3.4但没有DNS条目的网站,既不是A也不是PTR。 然后,我们需要呼叫不去IP 1.2.3.4,而是我们的服务器10.0.0.4。 有没有办法做到这一点? 我们意识到这将需要在客户机上设置,但仍然有什么办法呢?
客户端可以是任何东西,Windows,Mac,Linux,Android,无论如何..也许这是不可能的,但它们中的任何一个都有可能吗?
当您指定networking时,在networking级别上有一个选项,我提供了一个networking解决scheme,标记为NETWORK。 通常只有less数协议被代理,但大多数协议与NAT(networking解决scheme)协同工作。 HTTP和HTTPS通常是代理的,所以这是我的第一个反应。
我很困惑你的描述基于DNS的代理。 为不同的地址指定不同的IP地址,或为相关的站点设置相同的IP地址,这是常见的。 正如你指定网站作为你的主机名,我相信我们可以假设你想代理网站。 我相信您所寻找的是“基于名称的虚拟主机”或“基于名称的代理”
对于HTTP或HTTPS,许多服务器可以根据IP地址和/或HOST头中指定的名称来代理stream量。 Apache Web Server使用VirtualHosts来分隔网站。 其他可代理stream量的软件具有相同或相似的function。 在Apache中,要为同一站点执行基于IP的代理和基于代理的代理,您需要为IP地址创build一个VirtualHost,然后将需求名称添加到该虚拟主机。 然后,您将configurationVirtualHost来代理整个站点或其中的一部分。
networking:如果想要将IP地址redirect到不同的地址,可以通过路由器完成。 使用的机制是呼叫NAT(networking地址转换)。 在这种情况下,您需要DNAT(目标networking地址转换)。一些路由器可以在每个端口(服务)地址上执行NAT。 在这种情况下,您希望相关的DNS条目返回正在翻译的IP地址。
编辑:额外的评论提供了额外的信息。 正如我所理解的要求: – 代理将只针对来自某些地址/地址范围的用户,并不是所有到名称/ IP的stream量都将被代理。
– 代理请求必须似乎来自代理而不是原始主机。 – 当前的解决scheme根据请求的来源提供不同的地址logging。 (我相信现在的解决scheme在这里被打破了,DNS请求来自于客户端正在使用的DNS服务器,这可能不是客户端的设备,DNS响应被caching,所以你不能依赖请求前的DNS请求。
我认为最有可能的解决scheme是使用服务器和代理之前的设备上的NAT规则处理此问题。 这将根据源IP地址将所有要代理的stream量都转换为代理设备,并将其他stream量直接传递到服务器。