Debian 上安装搭建 Shadowsocks 服务

· · 3695 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在使用了一段时间后,决定由 CentOS 转移到 Debian 上,以便在低配置的服务器上网站能更加的稳定,Shadowsocks 服务也有之前的 python 版本转移到了 shadowsocks-libev 版本,原因是 libev 的版本是用 C 语言写的,会更加的节省内存,更重要的是该 libev 一直在不断的维护着,更新也很频繁。

搭建环境

本人还是在 Vultr.com 的 VPS 上安装了 Debian 8.0 x86 minimal 系统,在 Debian 8(Jessie) 编译 libev 版本需要开启 debian-backports 来安装 dh-systemdinit-system-helpers.
首先要在 debian 的源列表中添加 backports 源

$ vi /etc/apt/sources.list

然后在末尾出添加

deb http://ftp.debian.org/debian Jessie-backports main

然后保存之后运行

$ apt-get update

然后就要去安装 dh-systemdinit-system-helpers

$ apt-get -t Jessie-backports install "dh-systemd"
$ apt-get -t Jessie-backports install "init-system-helpers"

安装上面的两个 packages 后还没有完成, 还有一些别的依赖需要确保安装上了

$ apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev gawk debhelper pkg-config asciidoc xmlto apg

然后需要从 github 上把源代码 git 下来

$ git clone https://github.com/shadowsocks/shadowsocks-libev.git

然后进入 shadowsocks-libev 目录下进行编译

$ cd shadowsocks-libev
$ dpkg-buildpackage -b -us -uc -i
$ cd ..
$ dpkg -i shadowsocks-libev*.deb

编译是通过生成 deb 包然后进行安装,其实也可以通过 make 的方式来进行安装,但使用 deb 包安装会自动生成开启启动的脚步在 /etc/init.d 目录下,采用哪种方式安装就因人而异了
接下来就需要编译配置文件

$ vi /etc/shadowsocks-libev/config.json

然后将配置文件改为

{
    "server":"0.0.0.0",
    "server_port":443,
    "password":"yourpassword",
    "method":"aes-256-cfb",
    "timeout":60
}

其中

server:主机域名或者IP地址,尽量填 0.0.0.0 来代表了本机 ip
server_port:服务器监听端口
password:自定义密码
method:加密方式 默认为table,其他有rc4,rc4-md5,aes-128-cfb, aes-192-cfb, aes-256-cfb,**bf-cfb, camellia-128-cfb, camellia-192-cfb,**camellia-256-cfb, cast5-cfb, des-cfb
timeout:连接超时时间,单位秒。要适中。

如果客户端有OpenWRT路由器等设备,推荐rc4-md5,性能更好;否则可以选用安全性更好的aes-256-cfb等,不过计算复杂度上升,会有性能的损失,不过对于PC机以及现在的只能手机来说没有任何问题。路由器性能较弱所以可以考虑rc4-md5
保存配置文件后,就重启 shadosocks-libev 服务

$ service shadowsocks-libev restart

然后就搭建完成了,查看shadowsocks是否正确启动并监听相应端口,看到有ss-server 进程 LISTEN 正确的端口就表示成功:

$ netstat -lnp

还有很多 ss-server 相关的命令可以通过下面来进行参考:

usage:

    ss-[local|redir|server|tunnel]

          -s <server_host>           host name or ip address of your remote server
          -p <server_port>           port number of your remote server
          -l <local_port>            port number of your local server
          -k <password>              password of your remote server


          [-m <encrypt_method>]      encrypt method: table, rc4, rc4-md5
                                     aes-128-cfb, aes-192-cfb, aes-256-cfb,
                                     bf-cfb, camellia-128-cfb, camellia-192-cfb,
                                     camellia-256-cfb, cast5-cfb, des-cfb,
                                     idea-cfb, rc2-cfb and seed-cfb
          [-f <pid_file>]            file to store the pid
          [-t <timeout>]             socket timeout in seconds
          [-c <config_file>]         config file in json


          [-i <interface>]           network interface to bind,
                                     not available in redir mode
          [-b <local_address>]       local address to bind,
                                     not available in server mode
          [-u]                       enable udprelay mode
                                     not available in redir mode
          [-L <addr>:<port>]         setup a local port forwarding tunnel,
                                     only available in tunnel mode
          [-v]                       verbose mode


          [--fast-open]              enable TCP fast open,
                                     only available on Linux kernel > 3.7.0
          [--acl <acl_file>]         config file of ACL (Access Control List)

notes:

    ss-redir provides a transparent proxy function and only works on the 
    Linux platform with iptables.

一个例子如:

$ setsid ss-server -c /etc/shadowsocks/config.json -u

关注本站微信公众号(和以上内容无关)InfraPub ,扫码关注:InfraPub

3695 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传