centos7 部署shadowsocks服務端詳細教程

 

首先需要一臺服務器,使用搬瓦工VPN或者阿里雲等確認服務器端口8388(ss默認端口,其他端口請隨意)是否開啓,未開啓請先開啓

升級python版本

python2.7比較穩定,但是因爲在linux機器上用yum安裝的默認是2.6.6版本的,所以需要升級到2.7。

一、安裝過程

1. 先安裝相應的依賴

yum -y install gcc openssl-devel bzip2-devel

如果沒安裝好這些依賴的,後面還要重新走編譯流程,別問我爲什麼知道 。

 

2. 下載軟件包

cd 
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz

 

3. 解壓安裝包

tar xvzf Python-2.7.15.tgz

 

4. 安裝

cd Python-2.7.15
./configure --enable-optimizations
make && make altinstall

在檢測腳本中加上enable-optimizations優化,主要是在這個版本上能啓用PGO優化,讓Python在運行時能變得更快,詳細參考[2]。make 加altinstall參數,避免覆蓋原來安裝在/usr/bin/python 的版本。

 

5. 查看安裝是否成功

/usr/local/bin/python2.7 -V

-->

Python 2.7.15

 

6. 建立軟連接,使系統默認python指向2.7版本

mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python

 

7. 解決yum不支持python2.7的問題

sed -i 's/python/python2.6.6/' /usr/bin/yum

或者直接用vi編輯/usr/bin/yum把頭部的python換成2.6.6。ps:編輯前記得備份。

which yum

sudo vim /usr/bin/yum

安裝shadowsocks

首先是安裝。

yum install python-setuptools && easy_install pip

當然,shadowsocks有各種版本。如果系統的軟件倉庫中沒有shadowsocks,可以轉而使用其他版本的。例如,使用pip安裝python版本的shadowsocks:

pip install shadowsocks
  • shadowsocks軟件包附帶兩個命令,ssserversslocal。一個用於服務端配置,一個用於客戶端配置。詳細情況可以運行man shadowsocks來查看。

配置shadowsocks

shadowsocks有兩種配置方法,一種是命令行參數配置,一種是配置文件。先來說說命令行配置吧。

命令行參數配置

命令行參數如下:

參數名 參數意義
-s 服務器地址
-p 服務器端口號
-k 服務器密碼
-m 服務器加密方式
-t 服務器超時時間
-c 配置文件路徑
–fast-open 快速打開模式,僅Unix/Linux系統可用
–workers 工作者數量

每次運行shadowsocks都將一大堆參數傳進去是件很麻煩的事情。所以一般情況下都是採用配置文件的方式來配置的。然後通過-c參數將配置文件路徑傳入。

配置文件

shadowsocks的配置文件是一個json形式的文件,各參數的意義和命令行參數意義相同。

sudo vim /etc/shadowsocks/config.json

複製粘貼下列內容到config.json 

{
    "server":"my_server_ip",
    "server_port":8388,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

服務器地址就寫服務器的ip地址,不要寫127.0.0.1。端口號可以自己寫,但是不要佔用其他服務的端口。本地地址和本地端口是客戶端使用的,服務端可以不用理會。密碼儘量採用複雜一點的密碼,以保證安全性。加密方式使用aes-256-cfb就可以了。如果服務器是Linux系統的話,打開fast_open。

配置文件編輯完畢之後,就可以運行shadowsocks了。前臺運行:

ssserver -c /etc/shadowsocks/config.json

後臺運行和停止:

ssserver -c /etc/shadowsocks/config.json -d start
ssserver -c /etc/shadowsocks/config.json -d stop

以上都是在root用戶下運行的。以root方式運行可能會有一些安全問題。所以一般都是使用普通用戶運行:

ssserver -c /etc/shadowsocks/config.json --user nobody -d start

以上都需要自己手動運行命令來啓動shadowsocks。要讓shadowsocks在系統啓動時自動運行,需要在/etc/rc.local中添加命令。

sudo ssserver -c /etc/shadowsocks/config.json --user nobody -d start

shadowsocks優化

需要服務器是Linux 3.5及以上。

提高最大連接數

編輯/etc/security/limits.conf文件,添加以下兩行:

* soft nofile 51200
* hard nofile 51200

然後,在啓動shadowsocks服務器之前,先設置一下ulimit:

ulimit -n 51200

調整內核參數

調整內核參數的目標是:

  • 儘可能重用連接和端口號
  • 儘可能增大隊列和緩衝區
  • 爲高延遲和高流量選擇合適的TCP擁塞算法

下面是一個生產服務器的配置(/etc/sysctl.conf),在我的搬瓦工服務器上有些不能使用,可能需要自己編譯內核模塊。

fs.file-max = 51200

net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

修改之後需要運行sysctl -p來重載配置。

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章