Shadowsocks(影梭)伺服器搭建最新教程

Shadowsocks(影梭)是一種免費的基於Socks5網路協議的網路代理軟體,可以用來搭建自己的網路代理工具。它的功能類似VPN,可幫助一些互聯網受限制的國家的網路用戶突破限制,從而能夠訪問那些在那些國家被屏蔽的網站。 從2012年首次在網路上公開後,Shadowsocks逐漸從中國大陸流行起來,那裡的網路用戶在正常情況下甚至不能訪問Google、YouTube、Instagram等重要網站或app。 Shadowsocks在其他一些有互聯網限制的國家也很實用,包括像韓國、泰國、馬來西亞、中東地區,這些國家雖然沒有封鎖那些重要網站,但卻都有嚴格的互聯網審查,還屏蔽了很多被政府認定為包含有害訊息的網站,使用Shadowsocks可以有效的繞過這些審查和封鎖,它的穩定性良好,使用成本比VPN低,只是需要自己搭建一個Shadowsocks伺服器。

本篇教程將詳細展示Shadowsocks伺服器的搭建過程,按照此教程的每個步驟操作後,你就可以在手機或PC上安裝一個Shadowsocks用戶端程式連接到伺服器並開始使用Shadowsocks了。

要搭建一個Shadowsocks伺服器,你首先要對Linux系統語言有基本的了解,Linux是運行Shadowsocks的伺服器所使用的系統。你將使用你電腦上的命令列介面來完成Shadowsocks伺服器的搭建,需要輸入一系列較複雜的Linux指令,以及編輯伺服器端的文件內容。 如果你之前從未使用過命令列介面或不想使用,那麼你可能不適合使用Shadowsocks,最簡單快捷的方法是使用VPN,選一款好用的VPN用起來會比用Shadowsocks方便很多,而且VPN有很多Shadowsocks所沒有的重要功能。 目前市場上比較知名的VPN是ExpressVPNNordVPNSurfshark

在開始建立Shadowsocks伺服器前,我們必須先獲取一個遠程伺服器,然後在那個伺服器上安裝Shadowsocks伺服器端程式。 你可以從網上選一個VPS供應商租用伺服器,目前比較流行和知名的VPS供應商是美國的DigitalOcean,你可以以5美元每月的價格在DigitalOcean的官網上租到一個伺服器。
要租用DigitalOcean的伺服器,先要到DigitalOcean的官方網站,在那裡註冊一個賬號,同時選擇支付方式,可以選用VISA卡、PayPal等。 如果選用信用卡支付,伺服器的費用是按小時扣的,每小時不到0.01美元,用戶什麼時候停用伺服器,扣費也會隨之停止;如果選用PayPal支付,則需要先預付一個月的費用。

DigitalOcean賬號註冊成功後,就可以登入賬號進入用戶的主頁,在頁面右上方點擊那個綠色的“Create”按鈕,點擊它會出現一個下拉menu,然後選擇點擊第一項Droplets(droplet是DigitalOcean對伺服器的專有稱呼),就會帶你到一個新頁面裡創建啟用新的伺服器。

在這個頁面上有一系列關於伺服器的選項,很多設置都為用戶預先選擇了,你可以跳過它們,因為這些預先設置符合搭建Shadowsocks的標準。一些選項像“Add Block Storage”和“Select additional options”都不必要,跳過即可,只有一個選項是必要的,是“Choose data center region”,意思是選擇伺服器的位置,讓你為將要創建的伺服器選擇一個所在的城市。

建議選擇新加坡(Singapore)或美國西海岸的舊金山(San Francisco),通常伺服器離得越近,你的Shadowsocks代理速度就會越快。這裡可供選擇的伺服器位置比較少,很多國家或地區都不在其中,像日本、香港這些離得較近的都沒有,如果你有使用這些國家的IP的需要,建議選一個好的VPN使用,好的VPN通常有上百個國家的伺服器供選擇,而且切換都很方便,而用Shadowsocks如果想切換IP的話就需要搭建新的伺服器。

另外有一個建議自己選擇的選項是“Authentication”,你可以選擇“SSH keys”或“One-time password”,如果選擇SSH key,你可以用SSH密鑰的passphrase登入伺服器,這需要先建立一個SSH密鑰對,對於初次使用者來說,選“One-time password”即密碼登錄更方便,點擊選擇它,之後伺服器創建完成後它會通過郵箱把密碼發送給你。

在接近頁尾的位置,你可以為伺服器選擇一個hostname(主機名稱),添加tags(標籤),這些都不是必要的,但可以幫你更好地管理或整理你的伺服器,如以後你創建了很多伺服器就需要用名稱標籤這些去尋找才會方便。

然後你可以把伺服器分配到一個Project(項目)中,這同樣不必要,這也是為了方便管理和整理,默認情況下它會自動把這個新建的伺服器分配到一個以你的用戶名為名稱的項目中,你可以使用默認的或自己新建一個項目。最後一個選項是“Add backups”(備份), 你可以點擊打勾添加備份,但對Shadowsocks伺服器來說並不必要,建議跳過。
最後點擊頁面底部的“Create Droplet”按鈕創建伺服器,等待數秒時間讓系統完成伺服器創建。
創建完成後,要把顯示的伺服器的IP地址複製下來,接下來會用到。

連接到伺服器

現在伺服器創建好了,接下來在電腦上建立SSH會話連接到新創建的伺服器,SSH的使用方法根據你的電腦的操作系統有所不同。
如果你用的是Mac系統,你可以直接打開系統內置的Terminal命令介面建立SSH會話,不需要安裝額外程式。
打開Terminal後,輸入以下指令連接到伺服器。注意把“your_server_ip”替換成你創建的伺服器的IP地址。

ssh root@your_server_ip

如果你用的是Windows系統,你需要安裝額外的程式,因為Windows不同於Linux系統,沒有一個標準的用於建立SSH會話的命令列介面程式,你需要下載安裝一個名為PuTTY的軟體,可以在它的網站上下載。
無論用上面哪種方法連接伺服器,你需要以root身份登入伺服器,指令介面會首先詢問你的密碼或SSH密鑰passphrase,輸入並按確認鍵後就可以登入了。
登入成功後,遊標會出現在下面一行字符之後。注意“@”後面是你的伺服器的名稱。

“root@the-hostname-of-your-server:~#”

然後就可以開始輸入一系列指令搭建Shadowsocks伺服器了。
首先在安裝Shadowsocks伺服器端程式之前,要先更新和升級伺服器系統,使用以下指令來完成。

apt-get update && apt-get upgrade -y

將上面的指令輸入後,需要按確認鍵執行該指令。更新和升級伺服器系統需要約最多一分鐘時間。

安裝Shadowsocks伺服器端程式

然後就可以開始在伺服器上安裝部署Shadowsocks的伺服器端程式了。

現在Shadowsocks有多個版本可供選擇,最初的版本的名稱就是Shadowsocks,這種版本已經不再好用,尤其是在中國大陸容易被檢測到,所以運行這種版本的Shadowsocks的伺服器的IP容易被封,本教程將選用ShadowsocksR,是一種在原始版本上加以改進的新版本,增加了數據混淆功能,可以使通過它傳輸的數據顯得更接近普通的HTTPS網路數據,因此更難被檢測到也更穩定。

安裝ShadowsocksR有多種方法,本教程將使用GitHub用戶teddysun的腳本安裝,此腳本極大的簡化了安裝Shadowsocks的步驟,只需要輸入幾行簡單的指令,和根據介面顯示的提問做出選擇即可。 但如果依然覺得有些複雜,可以考慮改用VPN,或者,改用一個叫V2Ray的軟體,V2Ray的原理和使用方法與Shadowsocks非常相似,而搭建V2Ray僅需輸入一行指令。

下面是安裝ShadowsocksR伺服器端程式的詳細步驟。

依次輸入以下三個指令行,注意每輸入一個指令就要按確認鍵執行指令。

wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

等三個指令都執行後,命令列介面會顯示如下問題:

“Which Shadowsocks server you’d select”

問題下方還跟隨了幾個選項,每個選項有相應的數字。
這個問題問的是安裝哪種版本的Shadowsocks,由於我們要安裝的是ShadowsocksR,所以我們輸入對應ShadowsocksR的數字“2”。
然後介面會顯示下一個問題,“Please enter password for ShadowsocksR“,意思是讓設置一個密碼用於以後連接到Shadowsocks伺服器,以後你在手機或電腦上使用Shadowsocks用戶端應用程式時需要把這個密碼輸入到應用程式中。這裡需要你自己設置一個密碼,這個密碼可以以後通過編輯伺服器系統的JSON文件更改。

然後介面會顯示 “Please enter a port for ShadowshocksR [1-65535]“,意思是在伺服器上選擇一個端口,你可以輸入65535以下任何一個數字,如果你不知道如何選擇,就選擇用443這個端口,這個端口最適合以同一端口同一密碼在多個設備上同時連接到伺服器使用。

然後介面會顯示 “Please select stream cipher for ShadowsocksR“,是讓選擇加密方式,這裡我們選擇11,chacha20-ietf,你也可以選擇其他的,只要記得之後在用戶端應用程式裡輸入你在這一步自己設置的加密方式。

然後介面顯示 “Please select protocol for ShadowsocksR“,是讓為Shadowsocks伺服器選擇一個協議,你可以自己選擇,建議選擇“origin”或“auth_sha1_v4_compatible”。

接下來是最後一條指示。

Please select obfs for ShadowsocksR“,是選擇一個混淆模式,這裡我們選擇“http_simple_compatible”。

以上所有選擇或設置的參數都可以在以後更改。現在所有的Shadowsocks伺服器參數都選擇和設定完成了,命令列介面會顯示以下內容:

Press any key to start…or Press Ctrl+C to cancel

現在可以按下確認鍵或任意其他鍵開始在伺服器上安裝ShadowsocksR,安裝需要約5分鐘完成,請耐心等待安裝完成。

以上是Shadowsocks的安裝過程,你如果覺得太複雜,可以改用VPN或者前面提到的軟體V2Ray,V2Ray不但只需要一行指令就可以安裝,而且不到一分鐘就能安裝完成,相比Shadowsocks的五分鐘安裝時間要快不少。

Shadowsocks伺服器端程式安裝完成後,所有以上設置的參數都會顯示在一個屏幕中,你需要記下它們,因為這些參數資訊以後要輸入到手機或電腦上的用戶端app中才可以使用Shadowsocks

現在你的Shadowsocks伺服器就開始正常運行了,接下來你可以在你的手機或電腦上下載Shadowsocks的用戶端app開始試用。但在介紹Shadowsocks用戶端app之前,先講一下如何更改以上選擇的參數,因為你可能會在以後某個時候想要修改它們,或不小心在前面選擇了不想選擇的參數。

如果不想修改參數,可以跳過以下這步。
我們使用Nano編輯器編輯參數,首先用Nano打開ShadowsocksR的配置文件,方法是輸入以下指令:

nano /etc/shadowsocks-r/config.json

按確認鍵後介面會切換到配置文件中的內容,然後你可以開始編輯文件和修改要修改的參數。
完成修改後,按Ctrl加X退出文件,如果你對文件做了改動,系統會詢問是否保存修改,你可以按Y鍵然後按確認鍵保存修改。

和很多其他計算機程式一樣,每次修改完Shadowsocks的配置文件後都要重啟Shadowsocks程式,這樣才能使所做的修改生效。
使用以下指令重啟Shadowsocks程式。

/etc/init.d/shadowsocks-r restart

優化伺服器

雖然現在新建的Shadowsocks伺服器可以運行使用了,但你可以對它進行一系列優化使其傳輸數據的速度更快。
首先安裝Google BBR。

安裝Google BBR

Google BBR是Google開發的一個TCP擁堵控制算法,它可以顯著提升Shadowsocks伺服器的速度。
安裝Google BBR有很多方法,我們依然採用Teddysun的腳本來完成安裝。
輸入以下指令。

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

按確認鍵後Google BBR就開始安裝了,安裝只需要幾秒鐘時間,完成後如果伺服器內核不匹配,系統會要求重啟,這種情況比較少,但如果出現這種情況你可以輸入reboot並按確認鍵退出當前會話,然後重新創建SSH會話連接伺服器。如果沒有出現這種情況,你可以在Google BBR安裝完成後進行下面一步操作。

優化內核配置

接下來用nano編輯器修改內核配置。
使用以下指令打開配置文件。

nano /etc/sysctl.conf

添加以下這幾行內容到文件內容的底部,在“net.ipv4.tcp_congestion_control = bbr”一行的下方

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

退出和保存文件(按Ctrl加X退出,在退出時系統會詢問是否保存修改,按Y鍵然後按確認鍵保存修改)。
然後使用以下指令使修改生效。

sysctl -p

現在伺服器的速度被顯著提升了。

增加伺服器可處理的同時連接數目

如果你想把你的Shadowsocks伺服器分享給朋友和家人,可以做以下優化來增加伺服器可處理的同時連接數目。方法是修改limits.conf文件。
用以下指令打開文件。

nano /etc/security/limits.conf

然後添加以下內容到文件內容的底部,注意要帶上每行開頭的“*”符號。

* soft nofile 51200
* hard nofile 51200

退出和保存文件,然後用以下指令設置ulimit。

ulimit -n 51200

然後優化就完成了。現在伺服器經過優化已可以處理大量同時連接的設備的數據請求。到此Shadowsocks伺服器的搭建和優化的過程就全部完成了,接下來的部分要簡單很多。

安裝使用Shadowsocks用戶端程式

要使用Shadowsocks,你需要在你的手機或電腦上安裝Shadowsocks的用戶端程式(app)來連接到Shadowsocks伺服器。
先介紹Android系統的用戶端,原始版本的Shadowsocks app和ShadowsocksR app都可以用,可以直接在Google Play上搜索Shadowsocks或ShadowsocksR找到相應app安裝。

Shadowsocks app的使用方法非常簡單,只需要打開app,找到右上角的添加圖標點擊,在彈出的下拉選項中選擇manual settings(手動設置),就會進入一個profile設置介面,如下圖所示。

然後在裡面的相關區域裡輸入你搭建Shadowsocks伺服器時設置的那些參數(IP,端口,密碼,加密方式,混淆模式),完成設置後就可以回到原來的介麵點擊右下方的連接按鈕,你的設備就會連接到Shadowsocks伺服器,之後就可以離開app(讓它在後台運行)去用瀏覽器自由訪問那些在有互聯網限制的國家無法訪問的網站了。

iPhone用戶可以在App Store上下載安裝Potatso LiteShadowrocket,前者免費下載使用,而第二個app是付費的,要使用需要購買,但它相比Potatso Lite性能更強大,因為部分應用包括WhatsApp在Potatso Lite運行的時候不能正常使用。

用於PC不同操作系統的ShadowsocksR的用戶端程式可在Github上下載:

ShadowsocksR Windows用戶端 (選擇“Latest release”的版本,下載ShadowsocksR-win-x.x.x.zip文件,解壓後運行裡面的副檔名為exe的文件)

ShadowsocksR Mac用戶端 (選擇“Latest release”的版本,下載electron-ssr-x.x.x.dmg文件)

最後強調一下,雖然Shadowsocks可以當作是自己搭建的VPN,但和真正的VPN依然存在不同之處,它缺少VPN的一些重要功能

1. Shadowsocks不能切換IP,因為只搭建了一個Shadowsocks伺服器,就只有一個IP。如果要能在多個IP之間切換,就得架設新的伺服器,這樣就會增加費用,而且需要重複上述的搭建操作。相比較起來,一些知名VPN商家都提供上百個國家里數百個城市的IP,用戶可以隨時在這幾百個IP裡一鍵切換,而每月價格只比Shadowsocks的多一倍左右,如果是訂一年,價格幾乎和Shadowsocks一樣。

2. 用Shadowsocks不能繞過Netflix的地域限制,因為Netflix知道一些用戶會使用代理工具規避這種限制,他們會在發現你使用Shadowsocks時顯示“發現你使用了代理”並且不予提供你需要的影片內容。這是因為Netflix封鎖了DigitalOcean和其他很多的VPS供應商提供的伺服器IP。而那些知名VPN都能繞過Netflix的地域限制,因為他們會在每次他們的伺服器被Netflix封鎖IP後,立刻租一批新的伺服器使用。

3. Shadowsocks不能完全對你的網路數據加密,也就不能在你使用公共WiFi時保護你的隱私數據。雖然Shadowsocks相比普通代理工具增加了一定加密功能,但那隻是為了繞過互聯網封鎖而設計的,它採用的方法只是將用戶的上網數據偽裝成普通的HTTPS數據以此來繞過封鎖,並沒有像VPN一樣真正的將數據進行完全的隱藏。因此,這種沒有隱藏的數據依然會被盜取個人隱私資訊的人截獲。

4. Shadowsocks不能像VPN一樣隱藏你的真實身份。因為上面那個原因,用戶在上網時的任何不正當行為(如在美國、加拿大這些地區下載電影種子文件)會被網路服務商和其他相關機構偵測到,即使用戶連接到了遠程的伺服器,但依然會被他們根據用戶在DigitalOcean或其他VPS供應商裡提供的資訊追查到。

Share this: