为什么我的tcp客户端跳过代理并直接连接到服务器

时间:2016-02-17 07:34:58

标签: python sockets tcp proxy localhost

我为此https://gist.github.com/voorloopnul/415cb75a3e4f766dc590#file-proxy-py编写了一个反向代理。

我需要这个来覆盖客户端的身份验证信息。喜欢以下。

Client(passA)  --->   Proxy(overwrite passA into passB)  ---> Server(passB)

其中passB是正确的密码,passA是随机数。

算法是SCRAMSHA256,有点复杂,但我设法做到这一点。 当代理和服务器不在同一台机器上时,Eventhing运行良好。 我试图在 windows和linux 上部署代理。代理使用“ IP地址 ”指向服务器

然而,当代理使用“ localhost ”指向服务器时,它被破坏了,无法通过某个客户端传递身份验证(我为此制作了代理人)。但与其他客户一样,它也运作良好。

这不应该是封装并且对用户透明吗?

为什么localhost如此特殊以及如何解决这个问题?

更新最新研究

验证失败,因为客户端直接连接到服务器,因此我的代理不会修改密码。

Condition 1: Proxy on another machine. The proxy works.
Client(192.168.1.1) ==> Proxy(192.168.1.3:8000) ==> Server(192.168.1.2:6000) 

-

Condition 2: Proxy on the same machine as the Server.
The proxy listen 0.0.0.0:8000 and forward packets to localhost:6000.

Client(192.168.1.1) ==> Proxy(192.168.1.2:8000) ==> Server(192.168.1.2:6000)

After the first connection, the rest connection becomes

Client(192.168.1.1) =====> Server(192.168.1.2:6000) without proxy.

这使得代理不再起作用了。 为什么客户会在条件2中跳过它?

0 个答案:

没有答案