在日常生活中,我們動不動就會需要百度、谷歌,由於大天朝的政策,我們是沒辦法訪問谷歌的,今天給大家介紹一種方法,來突破一下阻礙(๑乛◡乛๑)
#介紹#
什麼是ssr(以下皆稱為“酸酸乳”)。如果不瞭解建議先看看這個詳細的介紹。Vpn與ss/ssr的區別 這裡總結來說。現在你有一個代理伺服器在香港,比如你現在想要訪問google,你的電腦發出請求,流量通過socks5連線發到你在香港的伺服器上,然後再由你在香港的伺服器去訪問google,再把訪問結果傳回你的電腦,這樣就實現了翻X。 #開始搭建#
- 官網活動地址 vultr
註冊、登入這個基本操作。就直接跳過了。官網的優惠活動依舊進行。不過比起上一個老版活動(10美元)。這次新增了一個新活動(25美元)。只限新使用者註冊使用。
#準備伺服器# 在建立伺服器之前請確保賬戶中有餘額。新使用者需要先進行充值。因為vultr的收費方式是按照小時收費。如果不想使用了可以隨時銷燬伺服器。點選Billing可以看到如下介面。
目前支援 支付寶 、微信 支付。微信支付是新新增的。記得上次還沒有微信支付。沒變的是充值最低額度依然是10美元
#建立伺服器#
在充值完成後,點選選單的Servers
之後可以看到一個藍色加號按鈕。點選它來建立第一個伺服器吧。
點選後進入伺服器配置頁面。預設選中第一個Vultr Cloud Compute (VC2)
。其他的用不到也就不看了。來看看這個頁面都有些什麼吧。
##Server Location##
這是第一個選項。用來選擇伺服器的位置。
位置的選擇當然是離我們越近延遲越低。不過因為其他原因。具體最優位置需要自己來測試。這裡不用擔心。不理想的話後續很容易修改。我們先選擇日本Tokyo。理論上離我們最近的是日本了。
##Server Type## 第二個是伺服器型別(系統),這裡推薦使用64 bit OS |Centos 7 x64
原因是很多指令碼都支援CentOS
而且對於此係統的相關教程很多。有問題可以方便查詢解決。是大多數人優先選擇的系統。其次是Debian 7+,Ubuntu 12+
。這裡我選擇的系統依然是Centos 7
##Server Size##
第三個是伺服器大小,本著勤儉節約的傳統美德。我們選擇當然是 $3.50/mo | $0.005/h
。因為只是自己使用所以沒有必要追求多好的伺服器。滿足自己使用就好了。不推薦選擇第一個。第一個只有IPv6
的地址!因為IPv6
目前不是特別普及。而且也不利於後面的提速。所以穩定使用還是選擇有IPv4
的伺服器。它的流量上限是500GB
。一個月重新計算一次。
##Additional Features##
第四個是附加功能。
Enable IPv6
- 是否啟用IPv6
- 啟用,因為後面普及的話我們可以隨時更換使用。Enable Auto Backups
- 是否啟用自動備份 - No,因為要加錢,而且沒必要Enable DDOS Protection
- 是否啟動DDOS保護 - No,而且只支援地區是:芝加哥,達拉斯,洛杉磯,邁阿密,新澤西,西雅圖,矽谷,阿姆斯特丹,倫敦,巴黎和法蘭克福。Enable Private Networking
- 是否啟動專用網路 - No,不需要新增內部IP。 ##Startup Script## 第五個啟動指令碼。這裡不需要 ##SSH Keys## 第六個是ssh金鑰,我們也不需要。 ##Server Hostname & Label## 最後一個是主機名和標籤。填不填都行。 ##建立結束## 到此配置已經選擇完成。點選Deploy Now
來建立我們的伺服器吧。點選後跳回主介面。顯示伺服器正在installing
等待它完成。顯示Starting
啟動。之後顯示Running
。這時我們來測試一下伺服器的延遲。
##測試延遲##
在此介面
(Servers)
可以看到剛剛建立伺服器的大致情況。點選伺服器可以進入詳細頁面。
現在複製IP地址。
開啟
CMD
。輸入ping
你的伺服器ip地址看回復時間。我的是93ms
。理想狀態。100ms
左右都可以。200ms
以上就要考慮試試別的伺服器位置了。
如果需要重新選擇,回到主介面點選三個小冒號,紅色的選項刪除伺服器。重複上面的操作重新建立一個。再次嘗試
ping
。
##連線伺服器## 連線軟體,我使用的是 Xshell 。伺服器預設使用者名稱root。密碼在伺服器詳細頁面。直接複製就行。 #安裝指令碼#PS:在vultr中每一次建立會預設扣除伺服器的1小時費用。在達到1小時之前不會重複計費。(這樣也是為了防止惡意使用者吧)
##關於指令碼##
1、一鍵安裝 Shadowsocks-Python
, ShadowsocksR
, Shadowsocks-Go
, Shadowsocks-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
複製程式碼
##選擇安裝版本##
選擇ShadowsocksR
##設定密碼##
因為是演示所以我設定的是12345678。 ##設定埠##
直接回車使用預設的就行。或者自己設定一個。注意不要超範圍。 ##設定加密方式##
預設就好。 ##設定協議##
同樣預設。 ##設定混淆##
同樣回車。到此設定完成。按任意鍵執行安裝。等待安裝結束。 #安裝結束# 安裝完成後指令碼提示如下:
現在來使用準備好的客戶端連線服務端,開始 "飯搶" 吧。
#指令碼其他使用# ##解除安裝方法## 若已安裝多個版本,則解除安裝時也需多次執行(每次解除安裝一種)
使用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 並回車後重啟。
重啟完成後,進入 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 都會有此返回值,若沒有也屬正常。下面是我的截圖
後面關於更換最新核心的折騰。在原版教程中有一些描述。可以作為參考。就不繼續折騰了。
##安裝完成## 現在測試一下自己的速度。開啟 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
複製程式碼
最後放一下我的過程截圖
##配置 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… 最後感謝文章作者以及文章中的指令碼提供者