DebianJessie上安裝搭建Shadowsocks服務

行者武松發表於2018-03-13

在使用了一段時間後,決定由 CentOS 轉移到 Debian 上,原因是因為 Debian 佔用的系統記憶體更少。對於小記憶體的 VPS 來說更加的合適,而且 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
原文釋出時間:2016-10-12

本文來自雲棲社群合作伙伴“Debian社群”,瞭解相關資訊可以關注“Debian社群”。


相關文章