请教各类代理情况下, tcp 连接是由谁建立和维持的, 能否保证数据安全性

4 天前
 kyonn

将代理流量分为以下几种情况:

  1. 浏览器设置代理, 代理客户端流量走直连.
  2. 浏览器设置代理, 代理客户端流量走远端服务器.
  3. fakeip 方案的透明代理, 浏览器向 fakeip 发起 tcp 连接.

以下是我的理解; 针对情况 1/2, 浏览器跟代理客户端都是纯粹的 socks 通信, 所有 tcp 连接建立和维持, 包括 tls 握手都是由代理完成的. 1/2 的区别是由本机的代理客户端完成,, 还是远端的代理服务器完成.

针对情况 3, 本机浏览器直接建立了 tcp 连接, 完成 tls 握手, 但由于目标是 fake-ip, 因此 tcp 连接被代理客户端或远端服务器(取决于走直连还是远端)偷梁换柱, 修改报文, 以实现数据正确达到本机浏览器. 但是具体怎么个修改方法比较疑惑.

假设是直连的情况, fakeip 的模式下, 本机代理是重新建了个 tcp 连接, 然后把内容转发给本机浏览器? 还是只是修改了报文里的源 IP 之类的信息, 协助建立连接?

假设是走远端代理的情况, faeip 模式下, 远端代理是重新建了个 tcp 连接, 然后把内容转发给本机代理, 最后再转发给本机浏览器? 还是说只是偷换了本机浏览器的 tcp 连接报文内容, 协助到达目的地?

针对上面 3 种大类, 代理服务器到底能不能截获, 解析 HTTPS 的报文具体内容?如果是代理服务器代为建立连接, 感觉是可以的?

613 次点击
所在节点    问与答
3 条回复
stephenyin
4 天前
这些方式代理服务器都能拿到用户 IP 和 目标 IP ,其他的信息取决于 payload 有没有端到端加密。

情况 3 是代理服务器把用户 IP 绑定在自己的网卡上,然后修改了用户数据包的 checksum 后发出去的。
kyonn
3 天前
@stephenyin 比较好奇这 3 种方式下, 跟目标域名的 tcp 连接都是谁建立的. 换句话说, 本地或远端代理扮演的角色是 HTTP 代理/ssh 代理 还是单纯路由的一环.
stephenyin
3 天前
@kyonn #2 我理解这些情况都是 用户(代理客户端) <-- Socks5 | Trojan --> 代理服务器 <-- TCP | HTTP --> 目标服务器这样工作的,只是透明代理时代理服务器伪装成了用户的 IP 地址。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1102440

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX