查看“SS:服务端”的源代码
←
SS:服务端
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:网络工具]] == 关于 == 一般安装在 Linux 中,也有各个不同的实现版本,还有不同的混淆方式,插件等。 推荐使用: Shadowsocks-libev 是用纯C编写的,依赖于libev。它被设计为shadowsocks协议的轻量级实现,以尽可能降低资源使用率。 参考: 1、[https://github.com/shadowsocks/shadowsocks-libev shadowsocks-libev GitHub页面]【有关于各个版本、各个安装方式的说明】 == 安装 == 服务端的安装也有不同方式:自动脚本、仓库、snap、docker、编译安装 等等。 推荐使用可用的仓库,或 snap 来安装。 (网上的自动脚本都很老,基本不再维护。已下载的脚本可以继续使用) (编译安装很麻烦,其实没必要) '''当前使用了:''' *【shadowsocks-libev.sh 的一键安装脚本】 *<s>【仓库安装】(2021/12/02 02:59:53)</s>(修改配置文件之后遇到启动问题) === 自动脚本 === ---- 【以下使用“[https://teddysun.com/ 秋水逸冰]”的脚本([https://github.com/teddysun/shadowsocks_install/tree/master 多个可选的脚本])】 参见: 1、 [https://huhao.ai/ke-xue-shang-wang-shadowsocks-quan-xi-lie-pei-zhi-zong-jie/ 科学上网1:shadowsocks 全系列配置总结] 2、 [https://www.xiaohuai.com/3948/ CentOS下shadowsocks-libev一键安装脚本] 3、 [https://www.xlovett.com/1288.html shadowsocks-libev个人自用版v3.3.5] # 安装: #: <syntaxhighlight lang="bash" highlight=""> # 获取脚本:(四合一脚本) wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh # 脚本可执行权限: chmod +x shadowsocks-all.sh # Shadowsocks-libev 脚本: ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log </syntaxhighlight> #* wget 默认下载到当前目录。 #* 安装位置:“'''/usr/local/bin'''”。(ss-local、ss-manager、ss-nat、ss-redir、ss-server、ss-tunnel 等都位于此处) #* 安装日志位于:“/var/log/shadowsocks-all.log” #* 本脚本安装完成后,会将 shadowsocks-libev 加入开机自启动。 # 配置: #: <syntaxhighlight lang="bash" highlight=""> vi /etc/shadowsocks-libev/config.json ... </syntaxhighlight> # 操作: #: <syntaxhighlight lang="bash" highlight=""> # 启动|停止|重启|状态 # 等效于: # /etc/init.d/shadowsocks start|stop|restart|status systemctl start|stop|restart|status shadowsocks </syntaxhighlight> # 更新: #: 先:卸载旧版本;再:重新执行如上安装步骤; # 卸载: #: <syntaxhighlight lang="bash" highlight=""> # 四合一脚本 ./shadowsocks-all.sh uninstall </syntaxhighlight> :* 如果使用其他脚本,也类似: :*: <syntaxhighlight lang="bash" highlight=""> # Shadowsocks-python 脚本: # 安装 wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh chmod +x shadowsocks.sh ./shadowsocks.sh 2>&1 | tee shadowsocks.log # 卸载 ./shadowsocks.sh uninstall # Shadowsocks-libev 脚本: # 安装 wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh chmod +x shadowsocks-libev.sh ./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log # 卸载 ./shadowsocks-libev.sh uninstall </syntaxhighlight> === '''仓库安装''' === ---- 由于在 COPR (Cool Other Package Repo) 中已经有打包好的 shadowsocks-libev,因此我们只需几条命令便能完成安装。 参考: 1、[https://zzz.buzz/zh/gfw/2017/08/14/install-shadowsocks-server-on-centos-7/ CentOS/RHEL 7 下安装 Shadowsocks 服务端] 2、[http://elmagnifico.tech/2021/04/21/Shadowsocks-libev/ 适用于小内存vps的Shadowsocks-libev] # 安装: #: <syntaxhighlight lang="bash" highlight=""> cd /etc/yum.repos.d/ curl -O https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo yum install -y shadowsocks-libev </syntaxhighlight> #* 安装完成后,会有 ss-local, ss-manager, ss-nat, ss-redir, ss-server, ss-tunnel 命令可用。 #*: 其中,作为服务器,我们需要的是 '''ss-server''',不过后文中我们将通过服务文件启动 Shadowsocks,而不会直接与 ss-server 命令打交道。 #* 如果安装报类似如下错误: #*: <syntaxhighlight lang="bash" highlight=""> Error: Package: shadowsocks-libev-3.1.3-1.el7.centos.x86_64 (librehat-shadowsocks) Requires: libsodium >= 1.0.4 Error: Package: shadowsocks-libev-3.1.3-1.el7.centos.x86_64 (librehat-shadowsocks) Requires: mbedtls </syntaxhighlight> #*: 说明系统没有启用 '''EPEL''' (Extra Packages for Entreprise Linux)。那么我们需要首先启用 EPEL,再安装 shadowsocks-libev: #*: <syntaxhighlight lang="bash" highlight=""> yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install -y shadowsocks-libev </syntaxhighlight> # 验证安装: #: 在继续后文的配置之前,我们先在命令行中执行一次 ss-server 命令,以确认 shadowsocks 及其依赖已正确安装。 #: <syntaxhighlight lang="bash" highlight=""> ss-server </syntaxhighlight> #* 如果执行 ss-server 报错:“ss-server: error while loading shared libraries: libmbedcrypto.so.0: cannot open shared object file: No such file or directory”, #*: 使用 root 身份执行以下命令即可: #*: <syntaxhighlight lang="bash" highlight=""> cd /usr/lib64 ln -s libmbedcrypto.so.1 libmbedcrypto.so.0 </syntaxhighlight> # 配置: #: <syntaxhighlight lang="bash" highlight=""> vi /etc/shadowsocks-libev/config.json ... </syntaxhighlight> # 操作: #: <syntaxhighlight lang="bash" highlight=""> # 启动|停止|重启|状态 systemctl start|stop|restart|status shadowsocks-libev # 开机启动 systemctl enable shadowsocks-libev # 查看 Shadowsocks 服务的全部日志: journalctl -u shadowsocks-libev </syntaxhighlight> # 更新: #: <syntaxhighlight lang="bash" highlight=""> yum update shadowsocks-libev </syntaxhighlight> # 卸载: #: <syntaxhighlight lang="bash" highlight=""> yum erase shadowsocks-libev </syntaxhighlight> === snap === ---- 通过 Snap 应用商店安装 Shadowsocks-libev 是'''官方推荐'''的方式。【Snap 是安装最新二进制文件的推荐方法。】 Snap 是 Canonical 推出的一种新的软件打包格式,彻底解决linux依赖性的问题,Snap 软件包拥有更加稳定和安全的特性。snap也就是安装snap软件包的命令。 Note:Snap 适用于 CentOS 7.6+、Red Hat Enterprise Linux 7.6+,可从企业 Linux 额外软件包(EPEL)存储库获得。 参考: 1、Snap 参考:[https://snapcraft.io/core Snap 官网] 2、[https://gfw.report/blog/ss_tutorial/zh/ 如何部署一台抗封锁的Shadowsocks-libev服务器] 3、[https://zh.codepre.com/how-to-24542.html 如何在CentOS上设置Shadowsocks-libev代理服务器] 安装: # 安装 snap: ## Enable snapd: ##: <syntaxhighlight lang="bash" highlight=""> # 将 EPEL 存储库添加到系统中 sudo yum install epel-release # 安装 snap sudo yum install snapd # 安装后,需要启用管理主 snap 通信套接字的 systemd 单元: sudo systemctl enable --now snapd.socket # 要启用 Classic snap 支持,需要在 /var/lib/snapd/snap 和 /snap 之间创建符号链接: sudo ln -s /var/lib/snapd/snap /snap # 请注销并重新登录,或重新启动系统,以确保 snap 的路径得到正确更新。 systemctl reboot </syntaxhighlight> ## Install core: ##: <syntaxhighlight lang="bash" highlight=""> sudo snap install core </syntaxhighlight> # 从 snap 安装 Shadowsocks: #: <syntaxhighlight lang="bash" highlight=""> # Stable channel sudo snap install shadowsocks-libev # Edge channel: sudo snap install shadowsocks-libev --edge </syntaxhighlight> #* snap 软件包一般安装在 /snap 目录下; #* 安装完成,显示有关 shadowsocks-libev: #*: <syntaxhighlight lang="bash" highlight=""> snap info shadowsocks-libev </syntaxhighlight> # 配置: #: <syntaxhighlight lang="bash" highlight=""> sudo vim /var/snap/shadowsocks-libev/common/server-config.json # sudo vim /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json ... </syntaxhighlight> #* 配置文件位置变了,不同于直接安装时的 /etc/shadowsocks/config.json; # 操作: #: <syntaxhighlight lang="bash" highlight=""> # 启动|停止|重启|状态 sudo systemctl start|stop|restart|status snap.shadowsocks-libev.ss-server-daemon.service # 开机启动 sudo systemctl enable snap.shadowsocks-libev.ss-server-daemon.service </syntaxhighlight> # 更新: #* Snap 会每天自动更新通过其安装的软件,因此通常情况下你不需要手动更新。 #* 如若需要手动更新: #*: <syntaxhighlight lang="bash" highlight=""> sudo snap refresh </syntaxhighlight> # 卸载: #: <syntaxhighlight lang="bash" highlight=""> sudo snap remove shadowsocks-libev </syntaxhighlight> #* 可能还需要手工清理相关配置文件?? :* '''将 Shadowsocks-libev 服务器作为系统服务运行''': :*: 我们可以手动运行Shadowsocks-libev服务器,但是为它创建一个 systemd 服务单元更为方便,因此可以在启动时自动启动它: :*: <syntaxhighlight lang="bash" highlight=""> sudo vim /etc/systemd/system/shadowsocks-libev.service # 在此文件中添加以下行 [Unit] Description=Shadowsocks-Libev Server After=network-online.target [Service] Type=simple ExecStart=/usr/bin/snap run shadowsocks-libev.ss-server -c /var/snap/shadowsocks-libev/common/server-config.json Restart=always RestartSec=2 [Install] WantedBy=multi-user.target </syntaxhighlight> :*: 则可更方便地进行服务单元管理: <syntaxhighlight lang="bash" highlight=""> # 启动|停止|重启|状态 sudo systemctl start|stop|restart|status shadowsocks-libev.service # 开机启动 sudo systemctl enable shadowsocks-libev.service </syntaxhighlight> === 编译安装 === ---- 如果您使用的是 CentOS 7,则需要安装预要求才能从源代码生成。 In general, you need the following build dependencies: autotools (autoconf, automake, libtool) gettext pkg-config libmbedtls libsodium libpcre3 (old pcre library) libev libc-ares asciidoc (for documentation only) xmlto (for documentation only) 参考: 1、[https://moshuanghua.com/2017/10/07/21-ss-libev/ CentOS 7 编译安装 ss-libev] 2、[https://www.jianshu.com/p/dea2d322b4a9 CentOS7下手动编译安装Shadowsocks-libev最新版] 3、[http://fhaoer.com/20190617-shadowsocks-libev/ 安装并配置shadowsocks-libev(yum源方式)] # 安装要求: #: <syntaxhighlight lang="bash" highlight=""> # 安装 epel 源 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 # 还需要使用到 git yum install git </syntaxhighlight> # 下载源码: #: <syntaxhighlight lang="bash" highlight=""> git clone https://github.com/shadowsocks/shadowsocks-libev.git cd shadowsocks-libev git submodule update --init --recursive </syntaxhighlight> #* 获取源码,可以通过:git 克隆项目、wget 下载、直接上传,都可以。 #* 比如:(wget 下载源码包) #*: <syntaxhighlight lang="bash" highlight=""> wget https://github.com/shadowsocks/shadowsocks-libev/releases/download/v3.3.5/shadowsocks-libev-3.3.5.tar.gz tar -xzf shadowsocks-libev-3.3.5.tar.gz mv shadowsocks-libev-3.3.5 shadowsocks-libev </syntaxhighlight> # 编译源码并安装: #: <syntaxhighlight lang="bash" highlight=""> # 确保是在 ss 目录中执行 cd shadowsocks-libev # 编译 ./autogen.sh && ./configure && make # 安装(root 权限下) sudo make install </syntaxhighlight> #* 程序默认安装到 /usr/local 下面(./autogen.sh 脚本指定了安装路径),如果需要覆盖安装目录,请使用“./configure --prefix=<路径>”。 # 创建配置文件: #: <syntaxhighlight lang="bash" highlight=""> mkdir -p /etc/shadowsocks-libev vim /etc/shadowsocks-libev/config.json ... </syntaxhighlight> # 操作: #: <syntaxhighlight lang="bash" highlight=""> # 启动|停止|重启|状态 systemctl start|stop|restart|status shadowsocks-libev # 开机启动 systemctl enable shadowsocks-libev </syntaxhighlight> #* 安装过程中,如果对配置有任何更改,只要重启下服务就行了。 # 更新: #* 获取新的源码重新编译。 # 卸载:(两种情况) ## 如果 Makefile 文件有 uninstall 命令:安装目录中执行“make uninstall”: ##: <syntaxhighlight lang="bash" highlight=""> # 确保是在 ss 目录中执行 cd shadowsocks-libev # 安装(root 权限下) sudo make uninstall </syntaxhighlight> ## 如果 Makefile 文件没有 uninstall 命令:需要删除软件相关的目录、文件: ### 如果在“./configure”的时候加了“--prefix=<路径>”参数:将改路径文件(安装目录)删除即可; ### 否则,只能根据 make install 中的步骤(或查看 makefile 文件),看它把什么文件拷到哪,一一删除。 #* '''所以,即使安装完成,其源码文件最好也不要轻易删除'''。 == 配置 == (以 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> * ss 使用的配置文件路径,可以在其“'''启动文件'''”(“shadowsocks”,位于“'''/etc/rc.d/init.d'''”)或“服务文件”(“Shadowsocks-libev.service”,位于“'''/usr/lib/systemd/system/'''”)中找到。 *: 如,“shadowsocks”: *: <syntaxhighlight lang="bash" highlight=""> ... # Author: Teddysun <i@teddysun.com> if [ -f /usr/local/bin/ss-server ]; then DAEMON=/usr/local/bin/ss-server elif [ -f /usr/bin/ss-server ]; then DAEMON=/usr/bin/ss-server fi NAME=Shadowsocks-libev CONF=/etc/shadowsocks-libev/config.json ... </syntaxhighlight> *: 如,“Shadowsocks-libev.service”: *: <syntaxhighlight lang="bash" highlight=""> [Unit] Description=Shadowsocks-Libev Server After=network-online.target [Service] Type=simple ExecStart=/usr/bin/snap run shadowsocks-libev.ss-server -c /var/snap/shadowsocks-libev/common/server-config.json Restart=always RestartSec=2 [Install] WantedBy=multi-user.target </syntaxhighlight> == 日志 == 日志查看: : <syntaxhighlight lang="bash" highlight=""> # 查看 ss-server 相关的日志内容 journalctl | grep ss-server # 查看 unit 为 shadowsocks-libev 的日志(如果没有相关 unit,即,没有“shadowsocks-libev.service”,则提示“-- No entries --”) journalctl -u shadowsocks-libev </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> # [[SS:服务端(加速)]] # [[SS:服务端(插件)]]
返回至“
SS:服务端
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息