vpn:ss和ssr服务器配置和启动步骤
站内链接:
介绍
Destination
本文章主要介绍shadowsocks命令行的使用以及SS, SSR的配置:
- shadowsocks server的配置
- shadowsocksR Server的配置
- 通过sslocal/ssserver来搭建属于自己的proxy.
当然, 如果有shadowsocks终端, 比如Mac的shadowsocksX-NG
, windows下的shadowsocks
,
并且就仅仅使用浏览器进行科学上网, 则不建议使用sslocal, 毕竟前者提供的功能更加全面,
更加稳定, 无需进行额外的pac
配置, 而且还默认提供http
全局代理.
SS
centos下安装pip以及shadowssocks
1 | # 安装pip |
实际上, 在任何系统上都可以使用pip
安装shadowsocks
.
Ubuntu按照最新版:
1 | # 安装libsodium: |
SSR
ShadowsocksR
在SS的基础之上增加了一些资料混淆方式, 修复了部分安全问题,
更多信息见百科介绍. 在本人使用过程中可以看到SSR
增加了很多加密盐值
,
并且新的客户端额外增加了很多功能, 比如SSR订阅, ACL控制等等.
另外, MacOS上的shadowsocksX-NG-R8
不知道为何不能兼容SS
配置的代理,
而对于iphone手机应用商店下载的代理客户端则同时支持SS
, SSR
.
下面, 让我们先安装并配置一个SSR
服务器吧, 安装脚本会根据你的选项自动生成一个配置文件,
配置文件中每一项的解释见下面的说明.
1 | # 下载安装脚本 |
在安装完成之后, 我们需要启动SSR
:
1 | # 状态查询 |
Configure
Options
不管是ssserver
, sslocal
,都可以通过配置文件来提供socks5服务, 当然, 后者则通过socks5与前者进行通信,
当然通信流量都是事先通过指定的算法加密(对称加密算法: AES等). 下面就来让我们先看一下配置文件里面中各项的
含义, 实际上非常简单:
- server 监听地址(IPv4或IPv6)
- server_port 监听端口
- password 用以加密的密匙
- port_password 多端口配置
- local_address 本地监听地址,缺省为127.0.0.1 可用-b参数设置
- local_port 本地监听端口,一般为1080
- timeout 超时时间(秒)
- method 加密方法,默认的table是一种不安全的加密.建议使用chacha20-ietf.
- fast_open 是否启用TCP-Fast-Open, 一种在TCP连接建立阶段传输数据, 降低应用层事务延时的机制
- wokers worker数量, 启动进程的数量
其中server, server_port
在客户端和服务器端是不一样的, 在服务器端, server, server_port
表示绑定的地址和端口,
就是通常意义上的socket中的<ip, port>
, 而且这里需要特别提出, 在大部分情况下ssserver
会将server_port, password
替换为port_password
, 以便支持多端口服务.
命令行
最基本的客户端和服务器, 不适用配置文件:
1 | sslocal -s sg01-22.ssv4.net -p 22222 -b 127.0.0.1 -l 1080 -k password -m aes-256-cfb |
各项参数说明:
- -s 服务器地址(通常说的域名污染问题)
- -p 服务器端口
- -b 本地监听地址,一般是127.0.0.1(默认值)
- -l 本地监听端口,可以自己选,一般是1080,或者1000-9999之间自己选一个
- -k shadowsocks 连接远程服务器地址密码
- -m 加密方式, 我们统一都是 aes-256-cfb
服务配置
客户端
客户端连接远程ss服务器, 其中server必须指明远程服务器地址.
1 | sslocal -c /etc/shadowsocks.json -d start -v |
服务器
此时server一般为0.0.0.0, 端口随便填写
1 | ssserver -c /etc/shadowsocks.json -d start -v |
非root用户配置
1 | sudo useradd ssuser |
日志查看
1 | tail -f /var/log/shadowsocks.log |
Example
Server
多端口服务, 以便将一个SSR服务提供给多个人使用, 确保每一个人都有单独的端口
, 密码
,
一般存储在/etc/shadowsocks.json
文件中, 具体配置如下:
1 | { |
仔细观察会发现, 配置中少了server_port, password, local_address, local_port, 但是增加了port_password
配置项, 实际上你如果了解shadowsocks
的原理, 以及清楚的明白sslocal
和ssserver
的通信机制, 就会
了解为何少了这几项配置也可以在服务端运行.
单端口服务配置(不建议):
1 | { |
如果不想任何人都可以使用这个SSR服务的话, 则可用设置server白名单, 将server从0.0.0.0
设置为一个IP
列表, 例如server: ['1.1.1.1', '2.2.2.2']
.
Client
客户端在整个SSR通信过程中扮演了如下的角色:
- 给本地应用提供: socks5服务
- 对本地流量进行加密, 使用约定好的对称加密算法
- 将加密后的流量通过TCP传递给远方的服务器, 建立加密通道1
- 负责加密通道1后续的所有工作
所以客户端的配置相比服务端更加的直白, 配置如下:
1 | { |
SSR
下面让我们展示一下1.3节介绍的SSR安装之后的配置文件, 并介绍一些SS
没有的参数:
1 | { |
参考: