Shadowsocks 500 Internal Privoxy Error 解决方案

前两天,把自己搭建的shadowsocks给女票用的时候,被发现会出现500 Internal Privoxy Error的错误。

经过一段排查还是解决了,简单记录一下排查过程和解决方案。

症状

症状很简单,就是shadowsocks运行后,系统所有浏览器都无法打开网页,浏览器提示:

500 Internal Privoxy Error
Privoxy encountered an error while processing your request:
Could not load template file no-server-data or one of its included components.
Please contact your proxy administrator.
If you are the proxy administrator, please put the required file(s)in the (confdir)/templates directory. The location of the (confdir) directory is specified in the main Privoxy config file. (It’s typically the Privoxy install directory).

可能原因

  • shadowsocks客户端设置有问题
  • VPS服务器脑子进水了
  • 连接到VPS的线路存在问题
  • 端口转发
  • 系统问题

排查以及解决

shadowsocks客户端设置有问题

这个是很好排除的,因为女票用的客户端是直接从我电脑上拷贝过去的,显然设置无问题

VPS服务器脑子进水了

也不会,因为我自己在排查时都能使用,VPS本身是运转正常的

连接到VPS的线路存在问题&端口转发

这两排查起来也很方便,直接通过远程控制了女票的电脑(吐槽一下QQ的远程简直就是垃圾,还是要用TeamViewer)。利用ping命令检查远程服务器联通状态,完全没问题,延迟和丢包率一切正常。

系统问题

只剩下这个了,这个可以通过shadowsocks客户端的日志查明,日志显示:

[2016-06-022 21:23:16] System.Net.Sockets.SocketException (0x80004005): 系统检测到在一个调用中尝试使用指针参数时的无效指针地址。
在 System.Net.Sockets.Socket.get_RemoteEndPoint()
在 Shadowsocks.Controller.TCPHandler.ConnectCallback(IAsyncResult ar)

怀疑是Winsock出现问题,再到网上一查,博主Livc在他的博文中提到了解决方案:

以管理员身份运行命令提示符(cmd),执行:

netsh interface ipv4 reset
netsh interface ipv6 reset
netsh winsock reset

重启电脑,解决。

亲测有效。