首先需要一臺服務器,使用搬瓦工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軟件包附帶兩個命令,
ssserver
和sslocal
。一個用於服務端配置,一個用於客戶端配置。詳細情況可以運行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
來重載配置。
參考資料
- https://www.cnblogs.com/harrymore/p/9024287.html
- https://github.com/shadowsocks/shadowsocks/wiki/Configuration-via-Config-File
- https://shadowsocks.org/en/config/advanced.html
- https://github.com/shadowsocks/shadowsocks/wiki/Shadowsocks-使用說明
- https://www.linuxbabe.com/linux-server/setup-your-own-shadowsocks-server-on-debian-ubuntu-centos
- https://blog.csdn.net/u011054333/article/details/52496303