一直以来我使用的ss客户端都是ShadowsocksX,设置比较简单,功能也很稳定。没有想过要换。
但是GFW砌墙技术日新月异,ss的开发者们想必也没有闲着,ShadowsocksX却很久很久都没有更新过了,这让我很没有安全感。
后来在GitHub上一找,才发现原作者@clowwindy停止更新ShadowsocksX之后,其他开发者用Swift重写了一版ShadowsocksX-NG,之后都在NG版本进行更新。
但是我下载X-NG之后,经过简单的配置,却无法像X那样开始使用。于是开始(瞎jb)排查问题。
以下这些操作我在单独执行每一步的时候都没有作用。直到我把它们全都做过一遍之后,我的X-NG才开始正常工作。
所以把它们记录下来,希望有人能用得上。
首先需要知道,这版X-NG会把自己的log文件:ss-local.log
保存在路径:~/Library/Logs
所以这个log文件的地址为:~/Library/Logs/ss-local.log
通过log文件的error记录,可以看到一些错误提示
例如上图中,我的error是:address已被占用。
查看了一下端口监听状况,问题在于,我在偏好设置中,把本地的「Socks5监听端口」和「HTTP代理监听端口」设置成了同一端口。导致http代理先启动而占用了端口,Socks代理就启动失败了。
⬆️随便把它们改成不同的值即可解决问题。
另外一种常见问题是,ss-local服务启动失败
(log里的记录为:ShadowsocksX-NG Start ss-local failed.
)
这可能是ss-local没有执行权限导致的。
GitHub上有一种说法是删除软件重新安装可以解决。但是……???重装这种操作真的是程序员解决问题的思路吗…………………………
我参考了另外的做法,
cd /Applications/ShadowsocksX-NG.app/Contents/Resources
给ss-local赋予执行权限:
chmod +x ss-local
然后,重启电脑。
(我还发现另外有个地方也有ss-local
文件:/Users/godlike/Library/Application Support/ShadowsocksX-NG/ss-local-3.0.5
不知道影不影响)
我还看到有人的做法是把这个文件的读写权限赋给所有用户⬇️,我也照做了。虽然我感觉这项并不影响它的运行。
如果你曾经安装过另外的ss客户端,前往文件夹:
~/Library/Application Support/
删除其他的SS文件夹 ,只留一个
因为可能是ss-local冲突(虽然我觉得这种说法很没有道理)
最后,可以用这个命令来检查一下端口监听状况:
lsof -iTCP -sTCP:LISTEN -n -P
我这里,正常运行的ShadowsocksX-NG会有图示的4个进程:
其中,privoxy
监听了我设置的HTTP代理端口,ss-local
监听了我设置的Socks5代理端口。而两个Shadowsoc
如果没跑起来,你就翻不了墙。
下面的命令可以用来验证Socks代理是否成功转发你的流量
curl --socks5 127.0.0.1:1086 http://cip.cc
我的服务器在日本,所以可以看到这个网站返回的我的IP是东京的地址。
当然,其实你用浏览器开个google就知道代理是否运行成功了。
PS. 如果你像我一样,之前对别的软件做过代理设置(例如Dropbox的「网络」-「代理服务器」,我之前设置了本机的Socks5代理)
你需要根据新的Socks5监听端口对它们进行修改。
因为老版本的ShadowsocksX默认监听在1080端口,而ShadowsocksX-NG则默认监听1086端口。
附赠:《科学上网漫游指南》
我觉得上面的信息挺有用的
[2020.5.11 Update] 目前 Shadowsocks 已经不稳定,不建议继续使用 ss 做科学上网工具了。我个人已经切换到 V2Ray 。继续向我询问 ss 相关问题我也不见得能解决。
Vglee
请问,我检查了监听端口,没有你截图所示的Shadowsc进程怎么办?
twisted
不好意思,我前段时间比较忙就没看这边。不知道你的问题解决了没有。
也许你需要先确认SS的执行权限是否设置正确?有按上面说的去查看错误日志吗。
bowen
我和你的情况一样没有 Shadowsc进程,请问解决了么?
iNiL0119
curl –socks5 127.0.0.1:1086 http://cip.cc之后结果Empty reply from server,请问会是什么问题导致的
twisted
字面上只能看出服务器无响应。也许你需要确认一下远端代理服务器是否在正常工作中。
IIIPY
ERROR: remote_recv_cb_recv: Connection reset by peer
mac切换了几个服务器都显示这个错误,无法连接,请问这个错误该如何解决?查了很久,感觉也没看到有实际解决的办法
twisted
我没有遇到过这个问题。简单搜了一下,遇到过的人很多,看起来很像是「服务器自身设置有问题」或「服务器IP已被GFW加入黑名单」
参考:
http://blog.chenghu.me/fixed-linode-error.html
https://github.com/shadowsocks/shadowsocks-libev/issues/621
https://github.com/shadowsocks/ShadowsocksX-NG/issues/472
https://github.com/shadowsocksrr/shadowsocksr-libev/issues/6
YANI WANG
楼主帮了大忙 多谢!
Dalton
其他一切正常,就是在使用telegram的时候设置proxy为socks5的时候,始终无法连接
young
帅哥你好,我想要一个shadowsocksx-ng-r8的dmg,哪里都下不到,自己电脑上都也忽然都没了。方便share一份吗?无意中走到这里都,留个言试试,万分感谢。🙏
twisted
我不知道你所说的-r8版本是什么意思,ShadowsocksX-NG的所有历史发布版本都可以在这里找到:https://github.com/shadowsocks/ShadowsocksX-NG/releases
Han
楼主您好,
请教一下,换了一台Mac,并且把所有设置和软件迁移过后,就不能科学上网了。。。
PAC自动模式运行下的ShadowsocksX-NG只有两个进程
Shadowsoc 1150 Han 12u IPv4 0x7c69ebbb01df657f 0t0 TCP 127.0.0.1:8090 (LISTEN)
Shadowsoc 1150 Han 15u IPv6 0x7c69ebbafb01907f 0t0 TCP [::1]:8090 (LISTEN)
Google也打不开,不知道哪里设置出了问题,旧电脑和手机端的SS同样的服务器设置和地址都是好好的。。。多谢楼主!
twisted
是否有按上文介绍的内容检查日志log和软件运行权限?
Shadowsoc两个进程存在的话,
看起来代理本身是有运行起来的,
但另外两个进程负责接收本机的输入——例如系统流量经过socks5端口传给shadowsocksX-NG,它再发给远端服务器。
那两个进程没有运行。
可以往软件启动的方向追追看。看下在启动阶段的日志里有没有记录异常。
LILIAN
您好,我检查了监听端口,同样没有shadowsoc的两个进程,取而代之的是两个rapportd进程(privoxy、ss-local和odfs-loca进程都有)。
请问这个是什么情况呢?
LILIAN
「您好,我检查了监听端口,同样没有shadowsoc的两个进程,取而代之的是两个rapportd进程(privoxy、ss-local和odfs-loca进程都有)。
请问这个是什么情况呢?」
而且检查log一直报错ERROR: Invalid config path.也给ss-local赋予执行权限了。只是没找到有Application Support的文件夹及里面的ss-local文件。
请问这个配置是哪里出问题了呢?
twisted
先解决ERORR,最后再去检查各个进程是否正常运行。
这里这个ERROR,是配置文件读取错误,找不到config file/没有权限读取config文件。
你能找到自己的config文件在哪吗?如果能找到,确保权限是所有用户可读。
我个人理解:是ss-local在读config文件,失败了。这个操作的失败与ShadowsocksX-NG没什么关系,如果ss-local都配置出错,那你换其他ss客户端也会表现出问题。
moreyu
想问一下 ,macOS端用的各种ss, ssr的软件代理,在日志里面ss-local.log和privoxy.log都没有数据应该如何解决呢?谢谢
Flower
你好, 请问一下, 我发现只有用pac 模式才会有4个进程, 而假如用global模式的话就只有Shadowsoc, 这正常吗? 而且用了pac也翻不了, log里也没有error, vps肯定是没问题的, 那有可能是服务器和客户端obfs配置不匹配的问题吗? 我vps的配置是tls1.2_ticket_auth, 但是在服务器配置只能输入http或者tls.
frank Liu
显示ssl出错,无法建立安全连接