Shadowsocks是一個socks5代理,主要目的是繞過互聯網審查。Shadowsocks最初是用python編寫的,但是自從最初版本發布以來,已經有很多不同的Shadowsocks實現。我將向您展示如何安裝和設置Shadowsocks-libev,這是一個用C編寫的實現。它非常輕鬆,可以在非常低端的硬體上運行。
您可以在幾乎任何您喜歡的地方安裝shadowsocks,但是,如果您正在尋找使用的VPS,我可以推薦Vultr,我自己使用它。
Vultr的上述鏈接是推薦鏈接。如果你想註冊Vultr我會很感激,如果你使用它,但是,我希望你喜歡這個教程。
安裝
要獲得最新版本的Shadowsocks-libev,我們首先需要為Debian Stretch啟用backports存儲庫
echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
其次是
sudo apt update
現在我們需要從backports存儲庫而不是默認存儲庫安裝shadowsocks-libev包。
sudo apt -t stretch-backports install shadowsocks-libev
shadowsocks-libev中包含一個systemd服務文件,因此可以由systemd完全管理。
現在你應該啟動並運行一個相當新版本的shadowsocks-libev,讓我們來看看一些配置。
組態
讓我們首先打開shadowsocks配置文件。你會發現它位於/etc/shadowsocks-libev/config.json中
sudo nano /etc/shadowsocks-libev/config.json
它應該看看像這樣的東西
插入圖片
現在讓我們來看看你擁有的一些配置選項。
選項 | 描述 |
---|---|
「伺服器」:「」 | shadowsocks伺服器的IP地址或URL |
「伺服器埠」: 」」 | 要使用的伺服器埠 |
「local_address」:「」 | 本地收聽地址 |
「local_port」:「」 | 要使用的本地埠 |
「密碼」:「」 | shadowsocks伺服器的密碼 |
「方法」: 」」 | 要使用的加密方法 |
「超時」: 」」 | 超時秒數 |
「fast_open」:true / false | |
「nameserver」:「」 | 選擇與伺服器默認名稱不同的名稱伺服器 |
「模式」:「」 | 選擇是否要使用TDP(「tcp_only」),UDP(「udp_only」)或兩者(tcp_and_udp)。默認值僅為TCP。 |
本地地址和埠僅與客戶端計算機上的shadowsocks配置相關。
對於加密方法,我建議使用默認值,因為它非常安全且速度非常快。
為了獲得最佳性能,將TCP快速打開設置為true通常是一個好主意,但要使用它,您還需要在系統上啟用它,我將在本指南的下一部分中介紹。
以下是Shadowsocks伺服器配置示例:
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "thisisapassword",
"timeout": 60,
"method": "chacha20-ietf-poly1305"
}
根據自己的喜好設置shadowsocks之後,請記住重新啟動它
sudo systemctl restart shadowsocks-libev
性能調整
您可以對系統進行一些更改以優化shadowsocks。如果您對這些優化有更多信息感興趣,請查看shadowsocks.org
增加打開文件描述符的最大數量
首先打開以下文件
sudo nano /etc/security/limits.conf
並添加以下2行
* soft nofile 51200
* hard nofile 51200
然後在啟動shadowsocks運行之前
ulimit -n 51200
調整內核參數
打開以下內容
sudo nano /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
如果可以,請執行以下操作以應用更改
sudo sysctl -p
其中的變化是TCP快速開放,我之前談到過。因此,您現在可以通過在配置文件中添加以下內容來繼續在shadowsocks配置中啟用TCP快速打開
"fast_open": true
TCP BBR
如果你有4.9或更新的內核,你可以使用TCP BBR進行擁塞控制。它應該對性能有顯著的改善。Debian 9默認提供內核4.9。如果您不確定自己擁有哪個內核版本,可以uname -r
在終端中運行以進行檢查。
要啟用TCP BBR,請打開sysctl.conf
sudo nano /etc/sysctl.conf
並添加以下2行
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
然後運行以下命令以應用更改
sudo sysctl -p
客戶端
Android的
要在Android上使用shadowsocks,您可以從Play商店或直接從github下載官方應用程序
設置應該非常簡單,只需將您在伺服器配置文件中設置的信息輸入到應用程序中即可。shadowsocks應用程序的工作方式類似於Android上的VPN,所以一切都通過它進行路由,因此不需要特殊配置。
Linux的
要在linux上使用shadowsocks,您可以遵循與伺服器相同的安裝說明,因為shadowsocks-libev包中包含伺服器和客戶端組件。現在要運行shadowsocks,您可以創建配置文件或只使用命令行選項。我建議在主目錄的某個位置創建配置文件。下面你可以看到一個示例配置文件,它與我之前顯示的伺服器配置一起使用。此配置假設您已啟用TCP快速打開,如果不是,請刪除最後一行。
{
"server": "0.0.0.0,
"server_port": 8388,
"method": "chacha20-ietf-poly1305",
"password": "thisisapassword",
"local_address": "127.0.0.1",
"local_port": "1080",
"timeout": 60,
"fast_open": true
}
我們假設您將文件命名為config.json。要啟動shadowsocks,只需在終端窗口中鍵入以下內容即可。
ss-local -c /path/to/file/config.json
現在要實際使用shadowsocks,您需要告訴您用於通過代理連接的程序。例如,使用Firefox,您需要進入網路設置並告訴它使用代理。
根據您使用shadowsocks的原因,也可以讓DNS查詢通過它。如果您不太確定,我會建議啟用它,如上所示。
插件 – 簡單的obfs
根據您的使用場景,使用模糊處理可能是個好主意。幸運的是,為shadowocks製作了一個很好的插件,名為simple-obfs。
對於Debian 9,有兩種方法可以安裝simple-obfs。第一種是從stretch-backports存儲庫安裝它,就像我們安裝shadowsocks-libev一樣。
sudo apt -t stretch-backports install simple-obfs
第二種方法是從源代碼編譯它。此方法適用於任何發行版,但是您需要事先在系統上安裝哪些軟體包及其名稱略有不同。下面我將向您展示如何在debian 9上執行此操作,如果您正在使用任何其他發行版,我建議您查看simple-obfs github
首先,我們需要安裝以下軟體包
sudo apt install --no-install-recommends build-essential autoconf libtool libssl-dev libpcre3-dev libev-dev asciidoc xmlto automake git
接下來,我們需要克隆github存儲庫並使用以下命令編譯simple-obfs。
git clone https://github.com/shadowsocks/simple-obfs.git
cd simple-obfs
git submodule update --init --recursive
./autogen.sh
./configure && make
sudo make install
接下來我們需要配置shadowsocks來實際使用simple-obfs。為此,請將以下內容添加到shadowsocks配置文件的底部。
"plugin": "obfs-server",
"plugin_opts": "obfs=tls;fast-open"
下一步是在您的客戶端啟用它。
Android的
在Android上,你需要下載simple-obfs應用程序。您可以從Play商店或直接從github獲取應用程序
安裝應用程序後,然後繼續使用shadowsocks應用程序。在查找插件選項的單個伺服器的設置的底部,您可以在其中啟用simple-obfs
然後,您可以更改simple-obfs插件的設置。如果您正在閱讀本指南,我建議使用tls與http相比較。用於偽裝流量的域名可以是您真正喜歡的任何域名,但bing.com是一個很好的默認值。
Linux的
Linux上客戶端的安裝過程與在伺服器上安裝客戶端的過程相同,因為它包括伺服器和客戶端組件。要啟用simple-obfs,請將以下行添加到shadowsocks配置中。
"plugin": "obfs-local",
"plugin_opts": "obfs=tls;obfs-host=www.bing.com"