我有一个客户希望在SSLstream量离开networking时拦截他们。 我build议的解决scheme是设置一个透明的代理,包括第2层和第3层,这样就可以简单地将其放入networking中,而不需要对configuration进行任何更改。 代理有两个网卡,一个连接到服务器,另一个连接到客户端。 客户端,代理和网关在客户的控制下,服务器不在。
例如:
client --- Proxy --- gateway -|- server
我有我的代理程序configurationIP_TRANSPARENT套接字选项,它可以响应连接目标为远程IP。
我正在使用以下设置:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --on-port 3128 --tproxy-mark 1/1 iptables -t mangle -A PREROUTING -p tcp -j MARK --set-mark 1 ip rule add fwmark 1/1 table 1 ip route add local 0.0.0.0/0 dev lo table 1
有问题的客户端位于其自己的子网上,并已configuration为使代理服务器成为默认网关。
结果是:
有没有办法在mac地址级别透明的东西? 也就是说,将客户端放在与网关相同的子网上。 网关将源IP和MAC视为客户端,即使它们来自代理。 这可以通过configuration代理作为桥梁,然后使用ebtables来升级stream量来由iptables处理?
当我使用ebtables向iptables推送某些东西时,看起来我的代理程序不响应数据包,因为它们是以网关的mac地址为目标的,而不是代理的。
我可以调查的其他潜在途径是什么?
编辑:当客户端和网关在不同的子网(和客户端已设置为代理作为网关),它的工作原理如1至5。但我想知道是否有可能有客户端和网关在相同子网和代理完全透明(即客户端不知道代理)。 客户不想将某些客户端移动到不同的子网,他们只是想要一个解决scheme。 谢谢!
编辑2:我可以configuration代理作为使用brctl的桥梁,但无法find一种方法来引导这个stream量到我的代理程序 – 这里问可能为linux桥拦截stream量? 。 目前,编号为1至5的描述在第三层操作; 它在客户端(客户端认为它正在与服务器的IP通话)是透明的,而不是在网关端(网关正在与代理的IP通话)。 我想知道的是,是否有可能在第二层操作,所以它是完全透明的? 我应该研究哪些可用选项? 谢谢
编辑3:更详细地阐明了情况。
如果机器在同一个子网上,答案是否定的。 在一个子网内,以太网协议将数据包从机器传送到机器,而在以太网层,MAC地址是真正的源地址,IP地址是未知的。