redirect443特定传入IP地址的stream量?

目前,我的IPtable不分青红皂白地将所有传入的请求发送到我的Squid透明代理。 但是,由于我需要SSL来工作,我需要一种方法来避免拦截SSLstream量。

理念

  1. example.com – > IP = 100.100.100.1
  2. http访问example.com – >发送到Squid代理
  3. https访问example.com – >拦截请求100.100.100.1:443; 而不是发送到Squid代理,redirect到example.com 100.100.100.1的IP

有没有可能在iptable中做到这一点? 谢谢!

编辑:我添加更多关于我的设置的信息。

  1. 最终客户
  2. DNS服务器
  3. 鱿鱼

由于具体要求,我必须使用DNSredirect将stream量发送到Squid透明代理,而不是典型的路由器/网关redirect。

拦截方法

  • 用户请求www.example.com
  • DNS服务器将www.example.com指向Squid服务器
  • Squid服务器拦截www.example.com请求

当前的IP表规则

  • 将端口80转发到端口3128(Squid端口)
  • 将端口443转发到端口3128(Squid端口)

显然,你正在使用一个典型的路由器/网关转发stream量到Squid,你可以转发端口80,忽略443,因为443stream量将直接跳过,鱿鱼。

不幸的是,用我目前的设置,如果我不转发443,任何HTTPS连接都会超时。

现在唯一的解决scheme是拦截所有443请求,将每个域映射到每个唯一的IP地址,并将请求发送回原始源IP。

我尝试使用Rinetd转发443到原来的网站的IP地址。 不幸的是,这种方法将我所有的443stream量转发到只有1个IP地址,因为它不会区分请求IP。

例如,我将443映射到Gmail.com的IP。 当我访问https://gmail.com时 ,它会正常工作。 但是,如果我访问https://hotmail.com ,它仍然会将我发送到gmail.com的IP

我需要find一个方法来映射每个IP与每个域,所以当我访问gmail.com,它会转发到gmail的IP; 当我访问hotmail.com时,它会将我转到hotmail.com的IP

你所描述的是一个“透明的SSL代理”,它不存在(对于前进的情况,它可以用于SSL加速器)。 让我们看看为什么:

  1. 客户端尝试parsingserverfault.com。
  2. 你的“虚构的DNS”服务器返回Squid框的地址。
  3. 客户端连接到squidbox:443并尝试启动TLS会话。
  4. 此时需要交换证书等

    但是…如何Squid框知道什么网站真正被访问(即什么远程主机连接)? 客户端不会告诉SSL服务器它期望的是哪个站点 – 它依赖于服务器已经知道了! 这是SSL的安全function的一部分。

这是与iptables相同的问题 – 它如何知道客户端真正想要的东西? 这些信息根本不可用(因为“虚构的DNS”服务器已将其丢弃)。

我知道代理SSL的唯一方法是通过CONNECT方法; 为此,您需要将Squid框指定为显式代理。

老实说,问题是DNSredirect。 我很困惑,为什么你不能使用iptablesredirect端口80,只有443。