Pages

Sunday, 30 December 2018

在Windows Server系统,安装Shadowsocks(R)服务

1.搭建环境

本人测试使用的是虚拟机,镜像安装的Windows Server 2012 R2,除了自带Power Shell命令行工具、服务器环境和安全级别默认设置最高之外,操作起来未发现有太大的区别。所以使用Windows7/Windows10也差不多。

Chocolatey

安装环境可以自己下载安装,然后配置路径到环境变量。然而习惯了包管理工具,如Mac的HomeBrew,Debian的apt,Windows的话随便搜索到了chocolatey 就用了。包管理工具的好处就是方便安装和卸载,还能自动配置环境变量。安装区分cmd.exe和PowerShell.exe两种。分别根据这2种工具进行选择。如失效,优先参考官网步骤:https://chocolatey.org/install 
#cmd 很长,但是其实是一句
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

#powershell 很长,也是一句
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

安装Python

默认安装3.7.0版本。Windows版本的
choco install python

#检测是否安装并添加到环境
python --version
Python 3.7.0

安装OpenSSL

OpenSSL实现安全套接字层和传输层安全性协议的项目,ss和ssr需要这个工具包。
choco install openssl.light

#检测是否安装并添加到环境
openssl version
OpenSSL 1.1.1 11 Sep 2018

安装git

用于拉取仓库文件、利用mingW来运行shell,根据需要安装,建议也装了。
choco install git --params "/GitAndUnixToolsOnPath /NoAutoCrlf"

#检测是否安装并添加到环境
git --version
git version 2.19.0.windows.1

2. 安装shadowsocks

根据社区主页的加以改动,也可以参考社区的步骤。

下载

chocolatey仓库也有shadowsocks,不过是Windows版本的客户端。我们使用Python自带的包管理工具PyPI(pip)来安装,既然Python有包管理工具,为什么还要chocolatey?。可能会提示pypi的版本过低,可以按提示升级。
#以下方式会安装2.8.2,会因为新版本的OpenSSL报错:AttributeError: function 'EVP_CIPHER_CTX_cleanup' not found
pip install shadowsocks

#建议使用这种方式,可以安装3.0.0
pip install -U 
git+https://github.com/shadowsocks/shadowsocks.git@master
成功后会下载到python的lib\site-packages文件夹,如C:\Python37\lib\site-packages\shadowsocks。

添加配置文件

配置文件不是必须的,可以通过命令行来运行,配置文件比较方便。创建一个config.json文件,放在上面的shadowsocks目录,运行的话会自动加载这个配置文件。
{
"server":"0.0.0.0",     ##填写服务器外网ip地址
"server_port":8000,  ##代理端口
"local_address":"127.0.0.1",
"local_port":1080, ##本地监听端口
"password":"123456",   ##连接密码
"timeout":300,
"method":"aes-256-cfb", ##加密方式
"dast_open":false
}

运行

运行方式有几种,运行后,退出关闭命令行或者control+c。
#直接默认运行,加载目录下的config.json
ssserver 

#指定配置文件路径
ssserver -c xxx\config.json

3.安装ShadowsockR

下载

镜像地址下载,解压到无中文路径目录下。如C:\shadowsocksr-manyuesr。

配置

目录下复制config.json为user-config.json,并且修改里面的参数。
{
 "server": "0.0.0.0",
 "server_ipv6": "::",
 "server_port": 8388,
 "local_address": "127.0.0.1",
 "local_port": 1080,
 
 "password": "m",
 "method": "aes-128-ctr",
 "protocol": "auth_aes128_md5",
 "protocol_param": "",
 "obfs": "tls1.2_ticket_auth_compatible",
 "obfs_param": "",
 "speed_limit_per_con": 0,
 "speed_limit_per_user": 0,
 
 "additional_ports" : {}, // only works under multi-user mode
 "timeout": 120,
 "udp_timeout": 60,
 "dns_ipv6": false,
 "connect_verbose_info": 0,
 "redirect": "",
 "fast_open": true
}

运行

和ss很类似
#1.普通运行,
#先cd进入到shadowsocksr-manyuser目录
python server.py

#2.后台运行 (参照的是linux的方式)
#cd进入到shadowsocksr-manyuser\shadowsocks
.\logrun.sh
#运行成功任务管理器查看会发现驻留python进程。前提需要安装git(默认携带mingW来运行shell)。

#2.1尝试用.\stop.sh 并不能停止,手动到任务管理器去停止。

#2.2查看日志使用下面的命令,弹窗输出和普通运行一样的命令。
.\tail.sh 

#2.3 其实到文件夹中直接双击这些脚本文件也可以执行脚本

4.其他

由于是在虚拟机部署,所以server填的127.0.0.1,还要区分server的本地监听端口和客户端的本地监听端口(如果是在VPS上,这些不用理会)。测试时在虚拟机内安装ssr客户端,关闭了防火墙(VPS也可以关闭或者到防火墙中添加开放端口),使用全局模式,成功连接,并且看到了日志。
包管理器安装在虚拟机内,install时并不顺畅,VPS上未尝试,实在不行,可以手动下载包来安装,但是要配置环境变量。PowerShell需要管理员模式运行。
SSR参考的是doubi和破娃的最后版本fork,如需新版本就得参考后续的维护者的了。

No comments:

Post a Comment