Shadowsocks-windows: “允许来自局域网的连接”以及“正向代理”的设置问题

Created on 20 Mar 2017  ·  7Comments  ·  Source: shadowsocks/shadowsocks-windows

版本 3.4.3
Windows Server 2012R2 Standard, .NET Framework

运行 ss 的电脑 IP 为 A,选择“允许来自局域网的连接”后,ss_win_temp 下的 privoxy.conf 文件的监听地址就从本机变成了允许所有地址以及一个随机的端口号 B,然后设置局域网里其他的机器的 http 代理走 A:B,但是永远都连不上,privoxy 的 https://www.privoxy.org/config/ 页面永远都是 Privoxy is not being used,自己装 privoxy 也是一样的效果。

然后 3.4.3 有一个新的功能是“正向代理”,没太明白这个是干嘛用的,wiki 以及更新日志也没有找到相关说明,能给解释一下吗?

谢谢~

Most helpful comment

正向代理一般家庭用户不太会用到。
主要是公司局域网经常需要通过代理服务器才能上网。老版本SS启动后会忽视代理服务器而尝试直连导致连接失败。

browser----(http/socks)----privoxy----(socks)----shadowsocks----(encrypted socks)----company's proxy----internet

All 7 comments

默认https://www.privoxy.org/config/是不启用的。

config文件

listen-address 0.0.0.0:12109
toggle 0
logfile ss_privoxy.log
show-on-task-bar 0
activity-animation 0
forward-socks5 / 127.0.0.1:1080 .
hide-console

你要是用的不是那个随机号码,而是1080
image

正向代理一般家庭用户不太会用到。
主要是公司局域网经常需要通过代理服务器才能上网。老版本SS启动后会忽视代理服务器而尝试直连导致连接失败。

browser----(http/socks)----privoxy----(socks)----shadowsocks----(encrypted socks)----company's proxy----internet

@celeron533 感谢,原来是因为现在的版本多了一个保护本地PAC的功能,所以局域网的机器直接写 IP: port/pac 怎么都连不上。
另外想知道这个转发 HTTP 的功能是通过 privoxy 实现的吗?那为什么这里的随机端口又是不可用的?

@bigsquirrel 目前shadowsocks原生只支持socks5,但由于部分程序和应用只支持http代理,所以用了privoxy做了协议转换。
那个随机端口用作privoxy和shadowsocks之间的通讯,以前使用的是固定端口8123,但后来发现:

  1. 有时候有的程序会占用这个端口导致启动失败
  2. 如果用户多开shadowsocks客户端,也会冲突

所以后来就是用随机端口。理论上说这个随机端口是可以作socks5通讯。

@celeron533 谢谢

正向代理一般家庭用户不太会用到。
主要是公司局域网经常需要通过代理服务器才能上网。老版本SS启动后会忽视代理服务器而尝试直连导致连接失败。

browser----(http/socks)----privoxy----(socks)----shadowsocks----(encrypted socks)----company's proxy----internet

@celeron533
前辈你好,我想问一下你贴的这个示意图,我想了很久没想明白。

在Windows下,把ss_privoxy进程结束了,但是Chrome设置成socks5依然可以使用,但是http就不行,所以我得出的结论就是browser --------- (socks) sslocal,浏览器是跟sslocal直接通信的。

然后我自己推导了下面的流程图,您能帮我看一下正确吗?(我很想理解内部通信流程!我浏览了一下源码实在是看不明白)

图画得不是很好,有些server response没画,但添加了文字说明😰,应该可以看得懂我的意思的吧。

image

  1. 浏览器如果配置成socks5的话,浏览器发数据到sslocal(socks5),sslocal发到ssserver(?),再发回sslocal(?),sslocal再发回给浏览器(socks5)。

  2. 浏览器如果配置成http的话,浏览器数据到sslocal(http),sslocal检测这是一个http request,发给privoxy(http),privoxy进行sock5封装,发回sslocal(sock5),sslocal发到ssserver(?),server再发回给local(?),local发回给privoxy(socks5),privoxy再把sock5包还原成http包,发给浏览器(http)。

另外我想问一下前辈,有没有那个可以加入的开发者交流群或者讨论群,telegram群什么的?

谢谢

@ajfg93 之前画的流程图是简化版。
真正的流程和你说的一样。
ss的TCP listener会检查请求首包的第一个字节,如果是0x5(socks5请求),则直接进入后面的流程,否则就将其转发到provixy,由proxy转换成socks5后重新回到同一端口。

Was this page helpful?
0 / 5 - 0 ratings