來源:逗比根據地
網址:https://doubibackup.com/z2a4lk3l-2.html
ShadowsocksR MudbJSON模式 手動安裝教程:ShadowsocksR 單伺服器多用戶 mudbjson模式使用教程 支持流量限制
本腳本的 二維碼圖片鏈接,是調用我自建的 二維碼API 來生成二維碼圖片( http://doub.pw/qr/qr.php?text=xxx )。
當訪問API頁面後,PHP網頁文件會把 GET參數( ?text=xxx ) 傳遞給JS腳本,瀏覽器會載入JS腳本,然後由JS腳本根據 GET參數的文本 生成二維碼圖片!圖片是在你本地瀏覽器中生成,伺服器中不存在圖片!
請確定你信任我和我的腳本,否則請不要用我的腳本,少BB!
該一鍵腳本的視頻教程:『視頻』ShadowsocksR 服務端一鍵腳本安裝 新手小白視頻教程
系統要求
CentOS 6+ / Debian 6+ / Ubuntu 14.04 +
推薦 Debian 8 x64,這個是我一直使用的系統,我的腳本在這個系統上面出錯率最低。並且最容易安裝銳速(銳速不支持OpenVZ)
CentOS 7 自帶防火牆問題(firewalld)自行解決,其他版本沒有做測試。
腳本版本
Ver: 1.0.26
本腳本與另一個SSR腳本 『原創』CentOS/Debian/Ubuntu ShadowsocksR 單/多埠 一鍵管理腳本 的區別是什麼?
ssrmu.sh 腳本是單伺服器多用戶腳本,使用的是 SSR服務端的MudbJSON模式,可以給每個用戶(埠)設置不同的加密方式/協議/混淆/限制速度/設備數限制/可用總流量等功能。即實現單伺服器多用戶流量管理等功能。
而 ssr.sh 則是單伺服器單用戶腳本,使用的是 SSR服務端的單用戶配置方式,即使實現了多埠,但是還算不算多用戶,不支持每個用戶(埠)不同的加密方式/協議/混淆等,並且無法管理流量使用。
如何選擇這兩個腳本?
根據你的需求選擇,比如你僅僅是 一個或兩個人使用,並且不需要流量管理功能,那麼選擇 ssr.sh 好了。而如果很多人使用,並且都需要限制流量來管理,那你適合使用 ssrmu.sh ,所以自己看著選,多試試(兩個腳本不能共存)!
腳本特點:
所有步驟都可以通過 Shell 腳本中文交互 操作。
- 支持 限制 用戶速度
- 支持 限制 用戶設備數
- 支持 限制 用戶總流量
- 支持 定時 流量清零
- 支持 顯示 當前連接IP
- 支持 顯示 SS/SSR連接+二維碼
- 支持 自定義賬號IP或域名
- 支持 監控SSR服務端運行狀態
- 支持 一鍵安裝 BBR
- 支持 一鍵安裝 銳速
- 支持 一鍵安裝 LotServer
- 支持 一鍵封禁 垃圾郵件(SMAP)/BT/PT
安裝步驟
簡單的來說,如果你什麼都不懂,那麼你直接一路回車就可以了!
本腳本需要Linux root賬戶許可權才能正常安裝運行,所以如果不是 root賬號,請先切換為root,如果是 root賬號,那麼請跳過!
- sudo su
輸入上面代碼回車後會提示你輸入當前用戶的密碼,輸入並回車後,沒有報錯就繼續下面的步驟安裝ShadowsocksR。
注意:如果你安裝的有我的另一個 ssr.sh 腳本,請先卸載ShadowsocksR服務端,再安裝這個腳本(不能共存)!
- wget –N —no–check–certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh
下載運行後會提示你輸入數字來選擇要做什麼。
輸入 1 ,就會開始安裝ShadowsocksR服務端,並且會提示你輸入Shadowsocks的 埠/密碼/加密方式/ 協議/混淆(混淆和協議是通過輸入數字選擇的) 等參數來添加第一個用戶。
注意:用戶名不支持中文,如果輸入中文會一直保存下去!
如果安裝過程中報錯,請看 常見問題解決方法。
- 請輸入要設置的用戶 用戶名(請勿重複, 用於區分, 不支持中文, 會報錯 !)
- (默認: doubi):doubi
- ——————————————————————————————
- 用戶名 : doubi
- ——————————————————————————————
- 請輸入要設置的用戶 埠(請勿重複, 用於區分)
- (默認: 2333):2333
- ——————————————————————————————
- 埠 : 2333
- ——————————————————————————————
- 請輸入要設置的用戶 密碼
- (默認: doub.io):doub.io
- ——————————————————————————————
- 密碼 : doub.io
- ——————————————————————————————
- 請選擇要設置的用戶 加密方式
- 1. none
- [注意] 如果使用 auth_chain_* 系列協議,建議加密方式選擇 none (該系列協議自帶 RC4 加密),混淆隨意
- 2. rc4
- 3. rc4–md5
- 4. rc4–md5–6
- 5. aes–128–ctr
- 6. aes–192–ctr
- 7. aes–256–ctr
- 8. aes–128–cfb
- 9. aes–192–cfb
- 10. aes–256–cfb
- 11. aes–128–cfb8
- 12. aes–192–cfb8
- 13. aes–256–cfb8
- 14. salsa20
- 15. chacha20
- 16. chacha20–ietf
- [注意] salsa20/chacha20-*系列加密方式,需要額外安裝依賴 libsodium ,否則會無法啟動ShadowsocksR !
- (默認: 5. aes–128–ctr):5
- ——————————————————————————————
- 加密 : aes–128–ctr
- ——————————————————————————————
- 請選擇要設置的用戶 協議插件
- 1. origin
- 2. auth_sha1_v4
- 3. auth_aes128_md5
- 4. auth_aes128_sha1
- 5. auth_chain_a
- 6. auth_chain_b
- [注意] 如果使用 auth_chain_* 系列協議,建議加密方式選擇 none (該系列協議自帶 RC4 加密),混淆隨意
- (默認: 2. auth_sha1_v4):3
- ——————————————————————————————
- 協議 : auth_aes128_md5
- ——————————————————————————————
- 請選擇要設置的用戶 混淆插件
- 1. plain
- 2. http_simple
- 3. http_post
- 4. random_head
- 5. tls1.2_ticket_auth
- [注意] 如果使用 ShadowsocksR 代理遊戲,建議選擇 混淆兼容原版或 plain 混淆,然後客戶端選擇 plain,否則會增加延遲 !
- 另外, 如果你選擇了 tls1.2_ticket_auth,那麼客戶端可以選擇 tls1.2_ticket_fastauth,這樣即能偽裝特徵 又不會增加延遲 !
- (默認: 1. plain):1
- ——————————————————————————————
- 混淆 : plain
- ——————————————————————————————
- 請輸入要設置的用戶 欲限制的設備數 ( auth_* 系列協議 不兼容原版才有效 )
- [注意] 設備數限制:每個埠同一時間能鏈接的客戶端數量(多埠模式,每個埠都是獨立計算),建議最少 2個。
- (默認: 無限):5
- 請輸入要設置的用戶 單線程 限速上限(單位:KB/S)
- [注意] 單線程限速:每個埠 單線程的限速上限,多線程即無效。
- (默認: 無限):666
- 請輸入要設置的用戶 總速度 限速上限(單位:KB/S)
- [注意] 埠總限速:每個埠 總速度 限速上限,單個埠整體限速。
- (默認: 無限):2333
- 請輸入要設置的用戶 可使用的總流量上限(單位: GB, 1–838868 GB)
- (默認: 無限):1
- 請輸入要設置的用戶 禁止訪問的埠
- [注意] 禁止的埠:例如不允許訪問 25埠,用戶就無法通過SSR代理訪問 郵件埠25了,如果禁止了 80,443 那麼用戶將無法正常訪問 http/https 網站。
- 封禁單個埠格式: 25
- 封禁多個埠格式: 23,465
- 封禁 埠段格式: 233–266
- 封禁多種格式埠: 25,465,233–666 (不帶冒號:)
- (默認為空,無限制):
- ——————————————————————————————
- 禁止的埠 : 無限制
- ——————————————————————————————
同時最後也會提示是否設置 混淆 兼容原版(也就是使用原版SS也能鏈接),不懂 直接回車 或 輸入 y 。(協議不在兼容原版)
注意:關於限制設備數數,這個協議必須是非原版並且不兼容原版才有效,也就是必須SSR客戶端使用協議的情況下,才有效!
不輸入一路回車就是 默認參數:
- 用戶 : doubi
- 埠 : 2333
- 密碼 : doub.io
- 加密 : aes–128–ctr
- 協議 : auth_aes128_md5
- 混淆 : plain
- 設備數限制: 0(無限)
- 單線程限速: 0 KB/S (不限速)
- 埠總限速: 0 KB/S (不限速)
- 禁止的埠 : 無限制
- 用戶總流量 : 819.21 TB
如果安裝過程沒有出錯,那麼最後就會提示:
- ############################################################
- 用戶 [doubi] 的配置信息:
- I P : xxx.xxx.xxx.xxx
- 埠 : 2333
- 密碼 : doub.io
- 加密 : aes–128–ctr
- 協議 : auth_aes128_md5
- 混淆 : plain
- 設備數限制: 5
- 單線程限速: 666 KB/S
- 埠總限速: 2333 KB/S
- 禁止的埠 : 無限制
- 已使用流量 : 上傳: XXX KB + 下載: XXX MB = XXX MB
- 剩餘的流量 : 980 MB
- 用戶總流量 : 1 GB
- SS鏈接: ss://xxxxxxxxxxxxx
- SS二維碼: http://pan.baidu.com/share/qrcode?w=300&h=300&url=ss://xxxxxxxxxxxxx
- SSR鏈接: ssr://xxxxxxxxxxxxx
- SSR二維碼: http://pan.baidu.com/share/qrcode?w=300&h=300&url=ssr://xxxxxxxxxxxxx
- 提示:
- 在瀏覽器中,打開二維碼鏈接,就可以看到二維碼圖片。
- 協議和混淆後面的[ _compatible ],指的是 兼容原版協議/混淆。
- ############################################################
SS/SSR鏈接(格式: ss://XXXXXXX ,很長),可以從剪輯版導入Shadowsocks客戶端,不懂的話看下面二維碼。
SS/SSR二維碼,複製後面的鏈接在瀏覽器打開,二維碼API網站就會生成一個二維碼的圖片,可以用ShadowsocksR客戶端掃描二維碼來添加。
使用說明
運行腳本,
- bash ssrmu.sh
- # 還有一個 運行參數,是用於所有用戶流量清零的
- bash ssrmu.sh clearall
- # 不過不需要管這個,可以通過腳本自動化的設置 crontab 定時運行腳本
輸入對應的數字來執行相應的命令。
- ShadowsocksR MuJSON一鍵管理腳本 [vX.X.X]
- —- Toyo | doub.io/ss–jc60 —-
- 1. 安裝 ShadowsocksR
- 2. 更新 ShadowsocksR
- 3. 卸載 ShadowsocksR
- 4. 安裝 libsodium(chacha20)
- ————————————
- 5. 查看 賬號信息
- 6. 顯示 連接信息
- 7. 設置 用戶配置
- 8. 手動 修改配置
- 9. 配置 流量清零
- ————————————
- 10. 啟動 ShadowsocksR
- 11. 停止 ShadowsocksR
- 12. 重啟 ShadowsocksR
- 13. 查看 ShadowsocksR 日誌
- ————————————
- 14. 其他功能
- 15. 升級腳本
- 當前狀態: 已安裝 並 已啟動
- 請輸入數字 [1–15]:
注意:添加/刪除/修改 用戶配置後,無需重啟ShadowsocksR服務端,ShadowsocksR服務端會定時讀取資料庫文件內的信息,不過修改 用戶配置後,可能要等個十幾秒才能應用最新的配置(因為ShadowsocksR不是實時讀取資料庫的,所以有間隔時間)。
文件位置
安裝目錄:/usr/local/shadowsocksr
日誌位置:/usr/local/shadowsocksr/ssserver.log
配置文件:/usr/local/shadowsocksr/user-config.json
數據文件:/usr/local/shadowsocksr/mudb.json
注意:如果要轉移用戶數據,只需要轉移 mudb.json 文件或其內容即可。
注意:ShadowsocksR服務端不會實時的把流量數據寫入 資料庫文件,所以腳本讀取流量信息也不是實時的!
其他說明
ShadowsocksR 安裝後,自動設置為 系統服務,所以支持使用服務來啟動/停止等操作,同時支持開機啟動。
- 啟動 ShadowsocksR:/etc/init.d/ssrmu start
- 停止 ShadowsocksR:/etc/init.d/ssrmu stop
- 重啟 ShadowsocksR:/etc/init.d/ssrmu restart
- 查看 ShadowsocksR狀態:/etc/init.d/ssrmu status
ShadowsocksR 默認支持UDP轉發,服務端無需任何設置。
本腳本已經集成了 安裝/卸載 銳速(ServerSpeeder)/Lotserver,但是是否支持請查看 Linux支持內核列表 。(銳速、LotServer不支持OpenVZ)
注意:本腳本中的 顯示鏈接信息中的 獲取IP歸屬地功能使用的是 IPIP.NET 的免費API介面,因為限速所以每秒只能檢測一次,同時 IPIP.NET 的免費API介面並不會保證穩定性,可能什麼時候就突然暫時失效了,這是本人不可控的,有條件可以自建API介面。
ShadowsocksR目前支持的協議和混淆:
協議(Protocol):origin,auth_sha1_v4,auth_aes128_md5,auth_aes128_sha1,auth_chain_a,auth_chain_b
混淆(Obfs):plain,http_simple,http_post,random_head,tls1.2_ticket_auth,tls1.2_ticket_fastauth(這個是客戶端用的,而服務端需要選擇tls1.2_ticket_auth)
origin 和 plain 是原版,加粗的是推薦使用的。
如果你想要使用 tls1.2_ticket_fastauth 混淆插件,那麼服務端選擇 tls1.2_ticket_auth,客戶端選擇 tls1.2_ticket_fastauth 即可。
如果服務端 設置混淆參數為:tls1.2_ticket_auth_compatible (兼容原版)
那麼客戶端 可使用的混淆為:plain / tls1.2_ticket_auth / tls1.2_ticket_fastauth
tls1.2_ticket_auth 與 tls1.2_ticket_fastauth 的區別為,後者不會等待伺服器回應,所以不會增加延遲。適合於,因為混淆插件增加延遲的原因不得不選擇原版混淆 plain,但是又因為QOS等因素而處於延遲與干擾/限速等之間抉擇的時候,可以選擇 tls1.2_ticket_fastauth 客戶端混淆插件!
如何轉移用戶數據信息?
SSR服務端的所有用戶數據都存在 /usr/local/shadowsocksr/mudb.json
文件中。
所以只需要轉移該文件或者或者複製內容粘貼到另一個伺服器上即可(先安裝SSR服務端後再覆蓋mudb.json,然後重啟SSR服務端)。
使用阿里雲/騰訊雲等存著安全組或規則組一類外部防火牆的請注意
因為阿里雲/騰訊雲的伺服器還有一個外部的防火牆也就是叫 安全組或規則組。
一般來說默認是只開放 22(SSH)埠,所以一些人在搭建ShadowsocksR服務端後,會出現無法訪問的情況,ShadowsocksR客戶端的統計窗口顯示超時。
同時ShadowsocksR服務端開啟詳細日誌模式(其他功能中)後,ShadowsocksR客戶端訪問ShadowsocksR賬號無日誌輸出。
ShadowsocksR 埠限速中 單線程限速 和 埠總限速 的區別
注意:如果要使用腳本中的這個功能,需要重新下載腳本,並重裝安裝 2月15日 以後的ShadowsocksR服務端才行。
解決 可使用原版協議,但無法使用ShadowsocksR協議 的問題
如果發現Shadowsocks原版協議/混淆可以使用,而ShadowsocksR的協議/混淆無法使用,那麼多半是 VPS時區問題
這個命令,我的ShadowsocksR腳本在安裝的時候已經執行了,如果你發現沒有執行,那你可以手動執行。
我們可以通過下面這個命令,把VPS的時區調整為北京時區,這樣就避免了ShadowsocksR 協議/混淆 因為時差太大造成的無法驗證。
- cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
注意,部分VPS會提示你是否覆蓋文件,輸入 y
然後回車。
如果你遇到,crontab設定的定時任務不按更換時區後的VPS時間執行,那麼請看下面:
crontab設定的定時任務不按VPS的時間執行,那是因為你更換VPS時區後還需要重啟crontab。
CentOS 系統:
- /etc/init.d/crond restart
Debian/Ubuntu 系統:
- /etc/init.d/cron restart
提示 Media change: please insert the disc labeled『Debian GNU/Linux 7.0.0 Wheezy — Official amd64 CD 等信息是 apt源 的問題,更換 apt源
我發現有一些人的VPS的 apt源有問題,導致安裝失敗,所以我這裡寫上如何更換 apt源。
本步驟僅適合 Debian 系統,Ubuntu系統自行搜索 apt源。
下面的手動改的方法一些人可能嫌麻煩,所以你們可以這樣字更換apt源。
依次輸入就可以更換apt源了,下面的代碼是以 us美國 為例,你可以自己去這裡選一個近一些合適的,然後替換下面代碼中 us.sources.list 的 us 。
- wget –N —no–check–certificate –P /etc/apt https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/sources/us.sources.list
- rm –rf /etc/apt/sources.list
- cp /etc/apt/us.sources.list /etc/apt/sources.list
手動更換(上面的命令執行完畢就不要重複執行這個了)
打開你的apt源文件,
- vi /etc/apt/sources.list
然後按 I 鍵
進入編輯模式,如果你沒有安裝vim,也無法通過 apt-get install vim -y 安裝,那麼你就只能通過SFTP下載這個文件本地編輯了。
把下面的內容複製過去,注意下面示例是美國的apt源,想要其他地區的apt源,請看:Debian全球鏡像站(替換下面的 ftp.us.debian.org 中的 us )
- deb http://ftp.us.debian.org/debian/ jessie main
- deb–src http://ftp.us.debian.org/debian/ jessie main
- deb http://security.debian.org/ jessie/updates main contrib
- deb–src http://security.debian.org/ jessie/updates main contrib
- # jessie-updates, previously known as ‘volatile’
- deb http://ftp.us.debian.org/debian/ jessie-updates main contrib
- deb–src http://ftp.us.debian.org/debian/ jessie-updates main contrib
修改完畢之後,按 ESC 鍵
退出編輯模式,然後輸入 :wq
保存並退出,然後再試一試 apt-get update
是否正常。
ShadowsocksR啟動失敗,日誌提示:Exception: libsodium not found 的錯誤
這是你使用了 chacha20 系列加密方式,但是卻沒有安裝 libsodium支持庫,導致ShadowsocksR無法啟動,運行腳本選擇選項 4 安裝 libsodium支持庫即可,如果安裝失敗,請選擇其他的加密方式,對速度影響不大。
提示wget: unknown host “yun.doubibackup.com” 之類的錯誤
這是無法解析我的域名,多半是DNS的問題,請更換DNS為谷歌DNS。
- echo “nameserver 8.8.8.8
- nameserver 8.8.4.4″ > /etc/resolv.conf
- # 兩行一起複制一直執行
提示 wget: command not found 的錯誤
這是你的系統精簡的太乾淨了,wget都沒有安裝,所以需要安裝wget。
CentOS系統:
- yum install –y wget
Debian/Ubuntu系統:
- apt–get install –y wget
升級腳本
升級腳本只需要重新下載腳本文件就可以了,會自動覆蓋原文件。
定時重啟
一些人可能需要定時重啟ShadowsocksR服務端來保證穩定性等,所以這裡用 crontab 定時。
- crontab –l > “crontab.bak”
- sed –i “/ssrmu restart/d” “crontab.bak”
- echo –e “\n10 3 * * * /etc/init.d/ssrmu restart” >> “crontab.bak”
- crontab “crontab.bak”
- rm –r “crontab.bak”
- # 下面的只是讓你對照理解用於修改上面第三行的定時間隔,只需要執行上面的代碼即可。
- # 如果你需要修改定時時間,那麼重複執行上面代碼就行了(記得修改第三行的定時間隔)。
- # 如果你要刪除定時重啟任務,那麼還是重複上面的代碼,但是要跳過第三行代碼。
- # 下面代碼前面的 * * * * * 分別對應:分鐘 小時 日 月 星期
- 10 3 * * * /etc/init.d/ssrmu restart
- # 這個代表 每天3點10分重啟一次 ShadowsocksR
- 10 2 */2 * * /etc/init.d/ssrmu restart
- # 這個代表 每隔2天的2點10分重啟一次 ShadowsocksR
- 10 */4 * * * /etc/init.d/ssrmu restart
- # 這個代表 每隔4小時的第10分重啟一次 ShadowsocksR