Shadowsocks 是一種 Socks5 的代理伺服器,它最初的設計目的就是用來突破 GFW (中國的防火牆長城),用來繞過網路審查是一種非常有效的工具(雖然現在對於它突破封鎖的能力在網上一直有爭議)。
需求
一台可以遠端連線的主機或VPS
架設 Server 端
Shadowsocks 有實作非常多語言的版本,這裡選擇編譯 C 語言編寫的 shadowsocks-libev
安裝編譯工具
sudo dnf install git gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel
編譯
下載原始碼
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev/
git submodule update --init
開始編譯
./autogen.sh && ./configure && make
編譯完成後可以在 completions/zsh 資料夾下看到編譯好的執行檔
安裝(執行檔預設會安裝到 /usr/local/bin 底下)
sudo make install
設定
再來要把 shadowsocks-libev 設定為開機執行的服務
編輯設定 shadowsocks 檔
新建設定檔
sudo mkdir /etc/shadowsocks-libev
sudo vim /etc/shadowsocks-libev/config.json
在 config.json 輸入如下內容
不想太麻煩的話只要設定 server_port
和 password
就好了
{
"server":["0.0.0.0"],
"mode":"tcp_and_udp",
"server_port":8388,
"local_port":1080,
"password":"barfoo!",
"method":"chacha20-ietf-poly1305"
}
server: 監聽的 IP
mode: 啟用 tcp 或 udp 轉發
server_port: 伺服器監聽端口
local_port: 本地端口
password: 連線時需要的密碼
method: 加密方式
系統服務設定
新建服務設定檔
sudo vim /lib/systemd/system/shadowsocks-libev.service
填入以下內容
[Unit]
Description=Shadowsocks-libev Server Service
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/config.json -u
[Install]
WantedBy=multi-user.target
啟動系統服務
sudo systemctl daemon-reload
sudo systemctl enable --now shadowsocks-libev
檢測服務狀態
systemctl status shadowsocks-libev.service
Active: active (running) 代表啟動成功
設定防火牆
請將8388改為剛剛設定的 server_port
sudo firewall-cmd --permanent --add-port=8388/tcp
sudo firewall-cmd --permanent --add-port=8388/udp
sudo firewall-cmd --reload
這樣一來server 端就設定完成了
客服端
在官網已經提供各式作業系統的客服端,這裡以 windows 本版為範例
下載
點選 shadowsocks-win 的 GitHub 連結 (不選擇QT版,因為已經沒有再更新了)
往下找到 Shadowsocks-x.x.x.xxx.zip 點擊連結開始下載
下載完後解壓縮就可以看到client 端的執行檔了
開始連線
打開 Shadowsocks.exe
填寫 伺服器位址
、伺服器連接埠
(server 端填寫的server_port)、密碼
(server 端填寫的password),加密
的地方選擇和伺服器一樣的加密方法(server 端填寫的method)
設定好後按下確定,右鍵點擊螢幕右下角的 Shadowsock 圖示
選擇 系統代理 -> 全局模式
這時候去任意一個查詢 IP 的網站,如果檢測出來的 IP 變得和伺服器的 IP 一樣就代表你成功囉