如何在Debian 9 Stretch上設置Shadowsocks

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

使-簡單obfs

然後,您可以更改simple-obfs插件的設置。如果您正在閱讀本指南,我建議使用tls與http相比較。用於偽裝流量的域名可以是您真正喜歡的任何域名,但bing.com是一個很好的默認值。

簡單obfs的設置

Linux的

Linux上客戶端的安裝過程與在伺服器上安裝客戶端的過程相同,因為它包括伺服器和客戶端組件。要啟用simple-obfs,請將以下行添加到shadowsocks配置中。

"plugin": "obfs-local",
"plugin_opts": "obfs=tls;obfs-host=www.bing.com"