查看“FAQ:SS客户端”的源代码
←
FAQ:SS客户端
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:Software]] == 关于 == 目前 Shadowsocks 有多个实现支持,以自由软件形式发布的主要有:原始 Shadowsocks(以Python语言编写)、Shadowsocks-libev(分支项目openwrt-Shadowsocks)、Shadowsocks-rust、Shadowsocks-go/go-Shadowsocks2、libQtShadowsocks、Shadowsocks-qt5(仅作为客户端)、Shadowsocks-android(仅作为客户端)、Shadowsocks-windows(仅作为客户端)、ShadowsocksX-NG(仅作为客户端)、Shadowsocks-R、Outline、V2Ray、Brook、Trojan 等等,还有为数甚多的免费软件及商业软件。 : [[File:Shadowsocks 原理.png|600px|Shadowsocks 原理]] === 版本 === Server 版本: * [https://github.com/shadowsocks shadowsocks-python]: python版本 * [https://github.com/shadowsocks/shadowsocks-go shadowsocks-go]:go版本 * [https://github.com/shadowsocks/go-shadowsocks2 go-shadowsocks2]:重构的 Go 版本,核心功能增强。 * [https://github.com/shadowsocks/shadowsocks-libev.git shadowsocks-libev]:C with libev,用的最广的一个版本,有Docker版本。同时包含 server 和 client。 * [https://github.com/shadowsocks/libQtShadowsocks.git libQtShadowsocks]:C++ with Qt。 * [https://github.com/zhou0/shadowsocks-perl shadowsocks-perl]:Perl版本。 Client 版本: * [https://github.com/shadowsocks/shadowsocks-windows/releases shadowsocks-windows]:windows 客户端 * [https://github.com/shadowsocks/ShadowsocksX-NG/releases shadowsocksX-NG]:macos 客户端 * [https://github.com/shadowsocks/shadowsocks-qt5/releases Shadowsocks-Qt5]:linux 客户端,基于Qt * [https://play.google.com/store/apps/details?id=com.github.shadowsocks shadowsocks-android]:android 客户端 Google Play * [https://github.com/Jigsaw-Code/outline-client/ outline-app]:outline 项目客户端,支持iOS * [https://github.com/shadowsocks/openwrt-shadowsocks Shadowsocks-libev for OpenWrt]:可以用于路由器 OpenWRT 的客户端 Outline 项目:(Outline 是一个开源的 VPN 项目) * [https://github.com/Jigsaw-Code/outline-ss-server outline-ss-server]:由 go-shadowsocks2 驱动 Shadowsocks 服务端程序。 * outline-server:VPN 服务端 GUI 管理工具,用于创建和管理 Outline servers。基于 Electron,支持 Windows, macOS and Linux。 * [https://github.com/Jigsaw-Code/outline-client/ outline-client]:兼容 Shadowsocks 的 VPN 客户端,基于 Cordova 和 Electron,支持 Windows、Android / ChromeOS、Linux、iOS、macOS。 Shadowsocks-R 相关项目:(shadowsocks-R 相关版本支持 SSR 混淆功能) * [https://github.com/qinyuhang/ShadowsocksX-NG-R/releases ShadowsocksX-NG-R]:ssr macos客户端 * [https://github.com/shadowsocksrr/shadowsocksr-android/releases/ shadowsocksr-android]:ssr android客户端 * [https://github.com/shadowsocksrr/shadowsocksr-csharp/releases/ shadowsocksr-csharp]:ssr windows客户端 其他 iOS 客户端:(均需要需要美国地区的 apple id) * Potatso Lite:Shadowsocks 及 Shadowsocksr 混淆 * [https://itunes.apple.com/app/outline-app/id1356177741 outline]:App Store == 服务端 == 一般安装在 Linux 中,也有各个不同的实现版本,还有不同的混淆方式,插件等。 推荐使用: Shadowsocks-libev 是用纯C编写的,依赖于libev。它被设计为shadowsocks协议的轻量级实现,以尽可能降低资源使用率。 === 安装 === ---- 服务端的安装也有不同方式:一件安装脚本、编译安装、snap 等等。 ==== 一键安装脚本 ==== 【以下使用[https://teddysun.com/ 秋水逸冰]的脚本(多个可选的脚本)】 参见: 1、 https://huhao.ai/ke-xue-shang-wang-shadowsocks-quan-xi-lie-pei-zhi-zong-jie/ 2、 https://www.xiaohuai.com/3948/ # 安装: ## 获取脚本: ##: <syntaxhighlight lang="bash" highlight=""> # 四合一脚本 wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh # Shadowsocks-python 脚本 wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh # Shadowsocks-libev 脚本 wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh </syntaxhighlight> ##* wget 默认下载到当前目录。 ## 脚本可执行权限: ##: <syntaxhighlight lang="bash" highlight=""> # 四合一脚本 chmod +x shadowsocks-all.sh # Shadowsocks-python 脚本 chmod +x shadowsocks.sh # Shadowsocks-libev 脚本 chmod +x shadowsocks-libev.sh </syntaxhighlight> ## 执行脚本: ##: <syntaxhighlight lang="bash" highlight=""> # 四合一脚本 ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log # Shadowsocks-python 脚本 ./shadowsocks.sh 2>&1 | tee shadowsocks.log # Shadowsocks-libev 脚本 ./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log </syntaxhighlight> #* 安装日志位于:“/var/log/shadowsocks.log” # 卸载: #: <syntaxhighlight lang="bash" highlight=""> # 四合一脚本 ./shadowsocks-all.sh uninstall # Shadowsocks-python 脚本 ./shadowsocks.sh uninstall # Shadowsocks-libev 脚本 ./shadowsocks-libev.sh uninstall </syntaxhighlight> # 升级: #: 先:卸载旧版本;再:重新执行如上安装步骤; ==== 编译安装 ==== 如果您使用的是 CentOS 7,则需要安装预要求才能从源代码生成。 # 安装要求: #: <syntaxhighlight lang="bash" highlight=""> yum install epel-release -y yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel -y </syntaxhighlight> # 编译: #: <syntaxhighlight lang="bash" highlight=""> ??????? </syntaxhighlight> # 安装: #: <syntaxhighlight lang="bash" highlight=""> ??????? </syntaxhighlight> ==== snap ==== Snap 是安装最新二进制文件的推荐方法。 安装: # Install snap core: https://snapcraft.io/core # Install from snapcraft.io: #: <syntaxhighlight lang="bash" highlight=""> # Stable channel sudo snap install shadowsocks-libev Edge channel: # sudo snap install shadowsocks-libev --edge </syntaxhighlight> === 配置 === ---- (以 Shadowsocks-libev 为例:) <syntaxhighlight lang="bash" highlight=""> vi /etc/shadowsocks-libev/config.json { "server":"0.0.0.0", "server_port":*****, "password":"***************", "timeout":300, "user":"nobody", "method":"********-****-********", "fast_open":true, "nameserver":"8.8.8.8", "mode":"tcp_and_udp" } </syntaxhighlight> === 加速 === ---- === 锐速 === 【???】 : <syntaxhighlight lang="bash" highlight=""> # 使用一键安装脚本 wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder-all.sh && bash serverspeeder-all.sh # 配置 vi /serverspeeder/etc/config ??? # 重启锐速 service serverSpeeder restart </syntaxhighlight> === BBR === Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。 安装/开启:【两种情况】 # (如果 Linux 内核在 4.9 以下)需要安装并开启 BBR:(可使用一键安装脚本) #: <syntaxhighlight lang="bash" highlight=""> # 安装并开启 BBR(同样是使用脚本) wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh </syntaxhighlight> # (如果 Linux 内核在 4.9 及以上)只需开启 BBR 即可: ## 修改配置文件: ##: <syntaxhighlight lang="bash" highlight=""> vim /etc/sysctl.conf # 添加如下内容 net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr </syntaxhighlight> ## 加载系统参数: ##: <syntaxhighlight lang="bash" highlight=""> sysctl -p </syntaxhighlight> 验证 BBR 是否已经开启: # <syntaxhighlight lang="bash" highlight=""> sysctl net.ipv4.tcp_available_congestion_control </syntaxhighlight> #: 若返回如下信息则说明已开启: #: <syntaxhighlight lang="bash" highlight=""> net.ipv4.tcp_available_congestion_control = bbr cubic reno </syntaxhighlight> # <syntaxhighlight lang="bash" highlight=""> lsmod | grep bbr </syntaxhighlight> #: 若返回如下信息则说明已开启: #: <syntaxhighlight lang="bash" highlight=""> tcp_bbr 16384 1 tcp_bbr 20480 0 </syntaxhighlight> === 使用混淆协议 === ---- ?????????????????? === 其他步骤 === ---- # 开放端口: #: <syntaxhighlight lang="bash" highlight=""> # 添加防火墙规则 firewall-cmd --permanent --zone=public --add-port=39451/tcp firewall-cmd --permanent --zone=public --add-port=39451/udp # 更新防火墙规则 firewall-cmd --reload # 启动|关闭|重新启动 防火墙 (有上一步则不需要) systemctl [start|stop|restart] firewalld.service </syntaxhighlight> # 设置开机启动:??? #: <syntaxhighlight lang="bash" highlight=""> systemctl start shadowsocks-server.service systemctl enable shadowsocks-server.service </syntaxhighlight> #: <syntaxhighlight lang="bash" highlight=""> # CentOS chkconfig --add ss-libev # Debian update-rc.d ss-libev defaults </syntaxhighlight> # 启动: #: <syntaxhighlight lang="bash" highlight=""> # 启动: /etc/init.d/shadowsocks start # 停止: /etc/init.d/shadowsocks stop # 重启: /etc/init.d/shadowsocks restart # 查看状态: /etc/init.d/shadowsocks status </syntaxhighlight> == 客户端 == === 安装 === Shadowsocks的项目链接在[https://github.com/shadowsocks/shadowsocks-windows shadowsocks-windows]。<br/> # 下载'''Shadowsocks-4.1.10.0.zip''',并解压到本地Shadowsocks文件夹内(<code>D:\Program Files (x86)\Shadowsocks</code>) # 启动'''Shadowsocks.exe'''会自动加载其他内容 # 覆盖备份的配置文件'''gui-config.json''',然后重启Shadowsocks === 备份 === 需要备份的内容:code # '''<code>gui-config.json</code>''':(<code>D:\Program Files (x86)\Shadowsocks</code>)Shadowsocks使用的服务器配置文件 # '''<code>mgwz.dll</code>''':(<code>D:\Program Files (x86)\Shadowsocks\ss_win_temp</code>)Privoxy所需的动态库(不会自动生成或下载?) 其余内容会在Shadowsocks启动时自动生成,'''<code>gfwlist.txt</code>'''和'''<code>pac.txt</code>'''会在从GFWList更新本地PAC时生成。 === 目录结构 === * <s>'''libcrypto-1_1.dll''' : 加密库</s>(没这个) * '''libsscrypto.dll''' : 加密库 * '''mgwz.dll''' : Privoxy所需的动态库 * '''privoxy_<随机数>.conf''' : Privoxy配置文件 * '''shadowsocks.log''' : SS本身的日志 * '''ss_privoxy.exe''' : Privoxy主程序 * '''ss_privoxy.log''' : Privoxy的日志 * '''sysproxy.exe''' : 用于系统代理的代理设置程序 == FAQ == === Shadowsocks错误:端口被占用 === [[File:ShadowsocksException端口已被占用.png|right|400px]] * Shadowsocks自启动时出现该问题,先排除其他服务或应用占用端口,确认由Shadowsocks导致 解决,重装Shadowsocks(?或删除并重新设置启动项?): # 删除Windows启动项中的Shadowsocks; # 备份Shadowsocks内容,并重新安装; # 右键Shadowsocks勾选“开机启动” 如未解决,参考GitHub中项目的问题页: # [https://github.com/shadowsocks/shadowsocks-windows/issues/314 Shadowsocks 错误: 端口已被占用] # [https://github.com/shadowsocks/shadowsocks-windows/issues/2171 win10 x64最近一次更新后提示端口已被占用] === Shadowsocks错误:系统保留端口 === [[File:ShadowsocksException系统保留端口.png|right|400px]] 如未解决,参考GitHub中项目的问题页: # [https://github.com/shadowsocks/shadowsocks-windows/issues/2948 Shadowsocks 错误:端口1080是系统保留端口] # [https://github.com/shadowsocks/shadowsocks-windows/issues/2630 对端口被系统保留的测试] === 修改Shadowsocks本地端口 === 出现以上两个错误:“端口被占用”、“系统保留端口”,最快捷的方式就是修改ss使用的本地端口。<br/> 修改之后还需确认软件的代理方式: # Windows系统代理:“设置”->“网络和Internet”->“代理”中,选用“手动设置代理服务器”,并设置 #: <syntaxhighlight lang="XML">地址:http://localhost,端口:10800(修改的端口)</syntaxhighlight> # Chrome的ProxySwitchyOmega插件:在“情景模式”->“Shadowsocks”中,设置 #: <syntaxhighlight lang="XML">代理协议:SOCKS5,地址:http://localhost,端口:10800(修改的端口)</syntaxhighlight> # 应用软件的代理设置: #: 使用“System Proxy Setting”,即“Windows系统代理”的设置 #: 使用“Custom Proxy”,设置:<syntaxhighlight lang="XML" inline>代理协议:SOCKS5,地址:http://localhost,端口:10800(修改的端口)</syntaxhighlight> === 客户端端口问题排查总结 === 记:又又又一次遇到端口不能使用(被占用、系统保留端口)【2020/11/18 17:28:59】<br/> 之前使用1080端口,在某次软件更新还是系统更新之后,提示改端口为系统保留端口,查找占用进程无果的情况下,改为使用10800;昨天更新IDM并重启系统之后,提示10800被占用,改为1080提示系统保留端口,所以又又又在网上找了一圈解决方案…… 排查占用(端口1080)的进程: # 使用“<syntaxhighlight lang="bash" inline>netstat -aon|findstr "1080"</syntaxhighlight>”查找被占用端口对应的 PID; #: [[File:1查询占用端口的进程号.jpg|400px]] # 查看PID对应的进程(或服务); #: [[File:2根据PID查看进程.jpg|400px]] #(查看哪一个chrome进程占用了端口,“shift + esc”) #: [[File:3查看chrome中使用端口的任务.jpg|400px]] 关闭了chrome进程数,以为能好使,但是……仍然提示“端口是系统保留端口”,并且找不到占用的进程: <pre> 系统保留端口在netstat是看不到有其他程序占用的,但你就是用不了。。。 </pre> 关于此问题,shadowsocks-windows项目的[https://github.com/shadowsocks/shadowsocks-windows/issues/1835 端口禁止访问 #1835]有描述: <pre> 这个问题并不是端口被占用,通过 netstat 里找不到占用这个端口的程序。 实际上,这个错误对应的 last-error 是 10013 (WSAEACCESS),权限不足。 根据2018年2月13日发布的 KB4074588 里的 known issue,这个补丁会调整操作系统的 reserve port ranges,可以通过运行 netsh interface ipv4 show excludedportrange protocol=tcp 查看。 在我自己的环境里,1025 ~ 1124 都被系统强制保留了,所以其他应用程序无法监听在这个端口。 workaround 要选取的端口也只能避开这些保留端口。 最后建议:ss 可以做一下 10013(WSAEACCES) 和 10048(WSAEADDRINUSE)的分类处理。毕竟看起来之后这个地方会出现坑不会少。 注1:我的系统是最新的1809,一直没有这个问题,直到上周安装了 SONY 的 Digital Paper App 附带的驱动之后触发了这个问题。另一台 surface pro 4 也装了 Digital Paper App,但是没有出现这个问题,不确定是不是因为 sp4 使用的是 Windows 10 Home 的关系。 注2:尝试使用 netsh interface ipv4 delete excludedportrange ... 会提示 access is denied,目前找不到可以认为调整的方法。 </pre> <pre> 分享一下曾经找到的解决办法 由于hyper-v保留了这些端口,所以需要先关闭hyper-v,保留想要保留的端口,再开启hyper-v功能 Disable hyper-v (which will required a couple of restarts) dism.exe /Online /Disable-Feature:Microsoft-Hyper-V When you finish all the required restarts, reserve the port you want so hyper-v doesn't reserve it back netsh int ipv4 add excludedportrange protocol=tcp startport=1080 numberofports=2 netsh int ipv4 add excludedportrange protocol=tcp startport=1099 numberofports=1 netsh int ipv4 add excludedportrange protocol=tcp startport=3306 numberofports=1 3.Re-Enable hyper-V (which will require a couple of restart) dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All </pre> 所以: # 不要选用系统保留的端口; # 对于非保留端口被占用,排查并结束对于进程即可; * 使用“<syntaxhighlight lang="bash" inline>netsh interface ipv4 show excludedportrange protocol=tcp</syntaxhighlight>”查看tcp的端口排除范围: *: [[File:tcp端口排除范围.jpg|400px]] 【重启之前,手动退出Shadowsocks】 【2021/04/04 19:24:34】我发现:重启之前,手动退出Shadowsocks,则重启之后不会出现端口被保留的问题。【自己和自己冲突?mmp……可能哪个服务进程变量什么jb玩意儿,在重启(或关机再开机)的过程中不能被重置】 === 客户端“time out”问题 === 首先排除: # 服务端所使用的端口是否在防火墙开启; # 客户端是否配置了正确的端口; # 服务器 ip、端口是否被锁; 解决: # 更换服务器端口?(记得:防火墙开启端口并重新加载,更换本地配置) # 重启 ss 服务? === '''检查 IP 是否被锁''' === 输入 IP 检查分别在国内和国外的访问情况: https://www.vps234.com/ipchecker/
返回至“
FAQ:SS客户端
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息