Ubuntu 18.04環境下搭建SSR(shadowsocksR)詳細流程
Ubuntu 18.04環境下搭建SSR(shadowsocksR)詳細流程
配置SSR客戶端
Shadowsocks與ShadowsocksR的區別:
SS是linux官方推出的網路代理原版,SSR是原版基礎上衍生出來的第三方版本,相容原版協議,但是比原版多了很多引數設定,即偽裝功能(協議和混淆)。
SSR的使用更方便,設定引數等操作更靈活,增加了一些人性化功能,比如服務連線統計、連線管理、協議轉換、多重代理等。
-
下載ssr客戶端
在github上clone客戶端工程到當前目錄,完成之後當前目錄下會有一個叫shadowsocksr的資料夾
git clone https://github.com/ssrbackup/shadowsocksr
-
配置ss檔案
進入剛剛clone下來的資料夾,有一個檔案叫config.json
,這是配置檔案的模板,裡面就是我們需要設定的代理引數,複製一份到/etc/shadowsocks.json
:cp config.json /etc/shadowsocks.json
然後對這個檔案進行配置:
sudo gedit /etc/shadowsocks.json
開啟檔案之後,我們看到的具體內容就包含了我們需要配置代理的詳細引數,具體情況如下圖所示:
{ "server": "0.0.0.0", "server_ipv6": "::", "server_port": 8388, "local_address": "127.0.0.1", "local_port": 1080, "password": "m", "method": "aes-128-ctr", "protocol": "auth_aes128_md5", "protocol_param": "", "obfs": "tls1.2_ticket_auth_compatible", "obfs_param": "", "speed_limit_per_con": 0, "speed_limit_per_user": 0, "additional_ports" : {}, // only works under multi-user mode "additional_ports_only" : false, // only works under multi-user mode "timeout": 120, "udp_timeout": 60, "dns_ipv6": false, "connect_verbose_info": 0, "redirect": "", "fast_open": false }
主要用到的配置是下面幾個選項,但是具體配置哪些引數還得看SS供應商給的引數情況,儘量多填但是要保證正確,如果有錯的話代理是不能通過的:
"server": "0.0.0.0", //伺服器ip地址 "server_port": 8388, //伺服器埠 "password": "m", //伺服器密碼 "method": "aes-128-ctr", //加密方式 "protocol": "auth_aes128_md5", //協議 "protocol_param": "", //協議引數 "obfs": "tls1.2_ticket_auth_compatible", //混淆 "obfs_param": "", //混淆引數
3.啟動ssr客戶端:
python ~/shadowsocksr/shadowsocks/local.py -c /etc/shadowsocks.json
注:如果出錯:
IPv6 support
Traceback (most recent call last):
File "local.py", line 81, in <module>
main()
File "local.py", line 43, in main
config = shell.get_config(True)
File "/home/miliimoulins/shadowsocksr/shadowsocks/../shadowsocks/shell.py", line 299, in get_config
check_config(config, is_local)
File "/home/miliimoulins/shadowsocksr/shadowsocks/../shadowsocks/shell.py", line 129, in check_config
encrypt.try_cipher(config['password'], config['method'])
File "/home/miliimoulins/shadowsocksr/shadowsocks/../shadowsocks/encrypt.py", line 46, in try_cipher
Encryptor(key, method)
File "/home/miliimoulins/shadowsocksr/shadowsocks/../shadowsocks/encrypt.py", line 90, in __init__
random_string(self._method_info[1]))
File "/home/miliimoulins/shadowsocksr/shadowsocks/../shadowsocks/encrypt.py", line 119, in get_cipher
return m[2](method, key, iv, op)
File "/home/miliimoulins/shadowsocksr/shadowsocks/../shadowsocks/crypto/sodium.py", line 71, in __init__
load_libsodium()
File "/home/miliimoulins/shadowsocksr/shadowsocks/../shadowsocks/crypto/sodium.py", line 42, in load_libsodium
raise Exception('libsodium not found')
Exception: libsodium not found
可能因為當前python版本為系統自帶的python2.7,卻很多東西,將python預設版本改為python3就可以,具體修改方法可以參考
修改之後再執行上面指令就可以執行成功啦:
IPv6 support
2018-12-06 11:11:05 INFO util.py:85 loading libsodium from libsodium.so.23
2018-12-06 11:11:05 INFO local.py:50 local start with protocol[auth_aes128_md5] password [NAUgcj] method [chacha20] obfs [http_post] obfs_param [tvb.com]
2018-12-06 11:11:05 INFO local.py:54 starting local at 127.0.0.1:1080
2018-12-06 11:11:05 INFO asyncdns.py:324 dns server: [('127.0.0.53', 53)]
- 轉換HTTP代理
shadowsocks預設是用socks5協議的,對於終端的get、wget等走的是http協議的地方是無能為力的,所以需要轉換成http代理,加強通用性,這裡使用的轉換方法是基於Polipo的。
sudo apt-get install polipo # 安裝Polipo
sudo gedit /etc/polipo/config # 修改配置檔案
將下面的內容整個替換到檔案中並儲存:
# This file only needs to list configuration variables that deviate
# from the default values. See /usr/share/doc/polipo/examples/config.sample
# and "polipo -v" for variables you can tweak and further information.
logSyslog = false
logFile = "/var/log/polipo/polipo.log"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
proxyAddress = "0.0.0.0"
proxyPort = 8123
重啟Polipo:
/etc/init.d/polipo restart
驗證代理是否正常工作:
export http_proxy="http://127.0.0.1:8123/"
curl www.google.com
如果正常工作的話,就會返回一大串東西,其實就是從Google網頁上抓下來的內容,這樣終端裡面也可以訪問外網了。另外,在瀏覽器中輸入http://127.0.0.1:8123/便可以進入到Polipo的使用說明和配置介面。
-
配置瀏覽器
無論對於firefox或者chrome,有的配置方法對與firefox管用,但是對於chrome卻不管用,所以這裡我們直接來修改全域性網路,對於firefox和chrome都適用。
開啟setting -->Network -->Network Proxy
:Method:Manual
下面的幾欄都設定為:127.0.0.1
埠:8123
儲存或者應用到全域性(Apply system wide
) -
至此,恭喜你,所有該設定的都已經設定完成了。
注意
每次開機後都要執行:python ~/shadowsocksr/shadowsocks/local.py -c /etc/shadowsocks.json
來啟動ss服務。而且如果直接ctrl+c關掉程序或者關閉當前終端都會直接讓網路掛掉,百度網都上不上去,重啟電腦也沒用,所以處理方法是:
Solution:
- 首先一般這種情況下,如果你不是直接關閉的當前terminal,則你的Python程序可能還沒有殺掉,所以
ps aux|grep python
,然後kill -9 process_number
(那個python程序的process number)。 - 然後重新啟動ss服務。ps:我建議用screen命令來執行,至少不用擔心誤殺程序:
screen python ~/shadowsocksr/shadowsocks/local.py -c /etc/shadowsocks.json
。pps:screen模式下,ctrl+a,然後d(detach),或者直接可以關閉當前terminal。 - 如果還是不能上網: 重啟polipo:
/etc/init.d/polipo restart
。 - 驗證:
export http_proxy="http://127.0.0.1:8123/"
,curl www.google.com
。
更方便的處理方法,寫個指令碼:
我們可以在比如/home下新建個檔案叫做shadow.sh,在裡面寫上我們啟動ssr客戶端需要的命令,然後儲存即可。因為有時候會遇到啟動ss服務後依舊內網外網都不能上,就每次都自動重啟一下polipo吧:
#!/bin/bash
#shadow.sh
screen python ~/shadowsocksr/shadowsocks/local.py -c /etc/shadowsocks.json
/etc/init.d/polipo restart
到終端執行命令 sh /home/shadow.sh
,成功的話會有資訊輸出。你也可以到瀏覽器去試試。
至此:開機後開啟終端執行:sh /home/shadow.sh
,就可以自由上網了。