Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

老_大叔o發表於2019-01-21

在日常生活中,我們動不動就會需要百度、谷歌,由於大天朝的政策,我們是沒辦法訪問谷歌的,今天給大家介紹一種方法,來突破一下阻礙(๑乛◡乛๑)

#介紹#

什麼是ssr(以下皆稱為“酸酸乳”)。如果不瞭解建議先看看這個詳細的介紹。Vpn與ss/ssr的區別 這裡總結來說。現在你有一個代理伺服器在香港,比如你現在想要訪問google,你的電腦發出請求,流量通過socks5連線發到你在香港的伺服器上,然後再由你在香港的伺服器去訪問google,再把訪問結果傳回你的電腦,這樣就實現了翻X。 #開始搭建#

  • 官網活動地址 vultr

註冊、登入這個基本操作。就直接跳過了。官網的優惠活動依舊進行。不過比起上一個老版活動(10美元)。這次新增了一個新活動(25美元)。只限新使用者註冊使用。

#準備伺服器# 在建立伺服器之前請確保賬戶中有餘額。新使用者需要先進行充值。因為vultr的收費方式是按照小時收費。如果不想使用了可以隨時銷燬伺服器。點選Billing可以看到如下介面。

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

目前支援 支付寶 、微信 支付。微信支付是新新增的。記得上次還沒有微信支付。沒變的是充值最低額度依然是10美元 #建立伺服器# 在充值完成後,點選選單的Servers 之後可以看到一個藍色加號按鈕。點選它來建立第一個伺服器吧。

點選後進入伺服器配置頁面。預設選中第一個Vultr Cloud Compute (VC2)。其他的用不到也就不看了。來看看這個頁面都有些什麼吧。 ##Server Location## 這是第一個選項。用來選擇伺服器的位置。

位置的選擇當然是離我們越近延遲越低。不過因為其他原因。具體最優位置需要自己來測試。這裡不用擔心。不理想的話後續很容易修改。我們先選擇日本Tokyo。理論上離我們最近的是日本了。

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)
##Server Type## 第二個是伺服器型別(系統),這裡推薦使用64 bit OS |Centos 7 x64 原因是很多指令碼都支援CentOS而且對於此係統的相關教程很多。有問題可以方便查詢解決。是大多數人優先選擇的系統。其次是Debian 7+,Ubuntu 12+。這裡我選擇的系統依然是Centos 7

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)
##Server Size## 第三個是伺服器大小,本著勤儉節約的傳統美德。我們選擇當然是 $3.50/mo | $0.005/h 。因為只是自己使用所以沒有必要追求多好的伺服器。滿足自己使用就好了。不推薦選擇第一個。第一個只有IPv6的地址!因為IPv6目前不是特別普及。而且也不利於後面的提速。所以穩定使用還是選擇有IPv4的伺服器。它的流量上限是500GB。一個月重新計算一次。

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)
##Additional Features## 第四個是附加功能。

  • Enable IPv6 - 是否啟用IPv6 - 啟用,因為後面普及的話我們可以隨時更換使用。
  • Enable Auto Backups - 是否啟用自動備份 - No,因為要加錢,而且沒必要
  • Enable DDOS Protection - 是否啟動DDOS保護 - No,而且只支援地區是:芝加哥,達拉斯,洛杉磯,邁阿密,新澤西,西雅圖,矽谷,阿姆斯特丹,倫敦,巴黎和法蘭克福。
  • Enable Private Networking - 是否啟動專用網路 - No,不需要新增內部IP。
    Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)
    ##Startup Script## 第五個啟動指令碼。這裡不需要 ##SSH Keys## 第六個是ssh金鑰,我們也不需要。 ##Server Hostname & Label## 最後一個是主機名和標籤。填不填都行。 ##建立結束## 到此配置已經選擇完成。點選Deploy Now 來建立我們的伺服器吧。點選後跳回主介面。顯示伺服器正在installing 等待它完成。顯示 Starting 啟動。之後顯示Running。這時我們來測試一下伺服器的延遲。

##測試延遲##

在此介面 (Servers) 可以看到剛剛建立伺服器的大致情況。點選伺服器可以進入詳細頁面。

現在複製IP地址。

開啟CMD。輸入 ping 你的伺服器ip地址看回復時間。我的是93ms。理想狀態。100ms左右都可以。200ms以上就要考慮試試別的伺服器位置了。

如果需要重新選擇,回到主介面點選三個小冒號,紅色的選項刪除伺服器。重複上面的操作重新建立一個。再次嘗試ping

PS:在vultr中每一次建立會預設扣除伺服器的1小時費用。在達到1小時之前不會重複計費。(這樣也是為了防止惡意使用者吧)

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)
##連線伺服器## 連線軟體,我使用的是 Xshell 。伺服器預設使用者名稱root。密碼在伺服器詳細頁面。直接複製就行。 #安裝指令碼#

##關於指令碼## 1、一鍵安裝 Shadowsocks-PythonShadowsocksRShadowsocks-GoShadowsocks-libev 版(四選一)服務端; 2、各版本的啟動指令碼及配置檔名不再重合; 3、每次執行可安裝一種版本; 4、支援以多次執行來安裝多個版本,且各個版本可以共存(注意埠號需設成不同); 5、若已安裝多個版本,則解除安裝時也需多次執行(每次解除安裝一種); ##預設配置## 伺服器埠:自己設定(如不設定,預設從 9000-19999 之間隨機生成) 密碼:自己設定(如不設定,預設為 teddysun.com) 加密方式:自己設定(如不設定,Python 和 libev 版預設為 aes-256-gcm,R 和 Go 版預設為 aes-256-cfb) 協議(protocol):自己設定(如不設定,預設為 origin)(僅限 ShadowsocksR 版) 混淆(obfs):自己設定(如不設定,預設為 plain)(僅限 ShadowsocksR 版) 備註:指令碼預設建立單使用者配置檔案,如需配置多使用者,請手動修改相應的配置檔案後重啟即可。 ##使用方法## 使用root使用者登入,執行以下命令

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
複製程式碼

##選擇安裝版本##

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

選擇ShadowsocksR ##設定密碼##

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

因為是演示所以我設定的是12345678。 ##設定埠##

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

直接回車使用預設的就行。或者自己設定一個。注意不要超範圍。 ##設定加密方式##

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

預設就好。 ##設定協議##

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

同樣預設。 ##設定混淆##

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

同樣回車。到此設定完成。按任意鍵執行安裝。等待安裝結束。 #安裝結束# 安裝完成後指令碼提示如下:

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

現在來使用準備好的客戶端連線服務端,開始 "飯搶" 吧。


#指令碼其他使用# ##解除安裝方法## 若已安裝多個版本,則解除安裝時也需多次執行(每次解除安裝一種)

使用root使用者登入,執行以下命令:

./shadowsocks-all.sh uninstall
複製程式碼

##啟動指令碼方法## 啟動指令碼後面的引數含義,從左至右依次為:啟動,停止,重啟,檢視狀態。

Shadowsocks-Python 版:
/etc/init.d/shadowsocks-python start | stop | restart | status

ShadowsocksR 版:
/etc/init.d/shadowsocks-r start | stop | restart | status

Shadowsocks-Go 版:
/etc/init.d/shadowsocks-go start | stop | restart | status

Shadowsocks-libev 版:
/etc/init.d/shadowsocks-libev start | stop | restart | status
複製程式碼

##各版本預設配置檔案##

Shadowsocks-Python 版:
/etc/shadowsocks-python/config.json

ShadowsocksR 版:
/etc/shadowsocks-r/config.json

Shadowsocks-Go 版:
/etc/shadowsocks-go/config.json

Shadowsocks-libev 版:
/etc/shadowsocks-libev/config.json
複製程式碼

#進階配置1(提速)#

如上的配置已經可以滿足日常遊覽使用了。但是如果想要看youtube 4k視訊還是有些吃力。速度還是太慢了。那麼來提速一下,讓伺服器跑滿自己的頻寬,速度達到10M/s。

這裡使用的加速指令碼是BBR。最近,Google 開源了其 TCP BBR 擁塞控制演算法,並提交到了 Linux 核心,從 4.9 開始,Linux 核心已經用上了該演算法。根據以往的傳統,Google 總是先在自家的生產環境上線運用後,才會將程式碼開源,此次也不例外。 根據實地測試,在部署了最新版核心並開啟了 TCP BBR 的機器上,網速甚至可以提升好幾個數量級。 ##關於本指令碼## 1、本指令碼已在 Vultr 上的 VPS 全部測試通過。 2、當指令碼檢測到 VPS 的虛擬方式為 OpenVZ 時,會提示錯誤,並自動退出安裝。 3、指令碼執行完重啟發現開不了機的,開啟 VPS 後臺控制皮膚的 VNC, 開機卡在 grub 引導, 手動選擇核心即可。 4、由於是使用最新版系統核心,最好請勿在生產環境安裝,以免產生不可預測之後果。

##使用方法## 使用root使用者登入,執行以下命令:

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

按任意鍵開始安裝。等待安裝結束。

安裝完成後,指令碼會提示需要重啟 VPS,輸入 y 並回車後重啟。

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

重啟完成後,進入 VPS,驗證一下是否成功安裝最新核心並開啟 TCP BBR,輸入以下命令:

uname -r
複製程式碼

檢視核心版本,顯示為最新版就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般為:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
或者為:
net.ipv4.tcp_available_congestion_control = reno cubic bbr
複製程式碼

輸入

sysctl net.ipv4.tcp_congestion_control

返回值一般為:
net.ipv4.tcp_congestion_control = bbr
複製程式碼

輸入

sysctl net.core.default_qdisc

返回值一般為:
net.core.default_qdisc = fq
複製程式碼

輸入

lsmod | grep bbr

返回值有 tcp_bbr 模組即說明 bbr 已啟動。
複製程式碼

注意:並不是所有的 VPS 都會有此返回值,若沒有也屬正常。下面是我的截圖

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

後面關於更換最新核心的折騰。在原版教程中有一些描述。可以作為參考。就不繼續折騰了。

##安裝完成## 現在測試一下自己的速度。開啟 youtube 搜尋4k。來體驗流暢的觀影效果吧。


#進階配置2(定時任務)# 有時候我們需要監視一下Shadowsocks 服務端的執行狀態,當遇到某種不可控因素導致程式被殺掉的情況下,就需要自動重新啟動,以保證服務的可持續性。使用如下方法,自動監視,一旦發現程式不存在便會重新啟動。每次監視事件都會寫入日誌。 ##下載安裝## 首先需要將指令碼下載到某個固定路徑下,比如 /opt 下,再賦予執行許可權。 執行以下命令:

wget --no-check-certificate -O /opt/shadowsocks-crond.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-crond.sh
chmod 755 /opt/shadowsocks-crond.sh
複製程式碼

##檢查 cron 程式##

執行以下命令,檢查 cron 程式是否存在:

ps -ef | grep -v grep | grep cron

複製程式碼

如果存在返回值,則表示 cron 已經正確安裝並處於啟動中。

否則,則需要安裝 cron。

CentOS/Redhat/Amazon 執行如下命令:

yum install -y crontabs

複製程式碼

Debian/Ubuntu 執行如下命令:

apt-get install -y cron

複製程式碼

最後放一下我的過程截圖

Vultr搭建酸酸乳(ssr)的詳細教程(附cron監視重啟)

##配置 cron 計劃## 假設監視指令碼路徑就是 /opt/shadowsocks-crond.sh 假設設為每 5 分鐘監視一次。 那麼配置 cron 計劃如下:

(crontab -l ; echo "*/5 * * * * /opt/shadowsocks-crond.sh") | crontab -


 其中 */5 * * * * /opt/shadowsocks-crond.sh
 即每過 5 分鐘,執行一次指令碼 /opt/shadowsocks-crond.sh
複製程式碼

以上表示,在保留原有的 cron 設定的前提下,追加設定

這樣系統便會每 5 分鐘檢查一下 Shadowsocks 程式是否存在,如果不存在了會自動重新啟動。 指令碼每次執行會寫日誌的,日誌完整路徑如下: /var/log/shadowsocks-crond.log

#指令碼程式碼#

#!/usr/bin/env bash
#=================================================================#
#   System Required:  CentOS, Debian, Ubuntu                      #
#   Description: Check Shadowsocks Server is running or not       #
#   Author: Teddysun <i@teddysun.com>                             #
#   Visit: https://shadowsocks.be/6.html                          #
#=================================================================#

name=(Shadowsocks Shadowsocks-Python ShadowsocksR Shadowsocks-Go Shadowsocks-libev)
path=/var/log
[[ ! -d ${path} ]] && mkdir -p ${path}
log=${path}/shadowsocks-crond.log

shadowsocks_init[0]=/etc/init.d/shadowsocks
shadowsocks_init[1]=/etc/init.d/shadowsocks-python
shadowsocks_init[2]=/etc/init.d/shadowsocks-r
shadowsocks_init[3]=/etc/init.d/shadowsocks-go
shadowsocks_init[4]=/etc/init.d/shadowsocks-libev

i=0
for init in "${shadowsocks_init[@]}"; do
    pid=""
    if [ -f ${init} ]; then
        ss_status=$(${init} status)
        if [ $? -eq 0 ]; then
            pid=$(echo "$ss_status" | sed -e 's/[^0-9]*//g')
        fi

        if [ -z "${pid}" ]; then
            echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} is not running" >> ${log}
            echo "$(date +'%Y-%m-%d %H:%M:%S') Starting ${name[$i]}" >> ${log}
            ${init} start &>/dev/null
            if [ $? -eq 0 ]; then
                echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} start success" >> ${log}
            else
                echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} start failed" >> ${log}
            fi
        else
            echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} is running with pid $pid" >> ${log}
        fi

    fi
    ((i++))
done
複製程式碼

#宣告#

指令碼原作者:秋水逸冰 原文連結:bingyishow.top/Technical-a… 最後感謝文章作者以及文章中的指令碼提供者

相關文章