CentOS下配置SS5(SOCKS5)代理伺服器,絕對可行
本文內容將詳細說明如何向自己的伺服器新增代理功能(SOCKS5)。
嫌囉嗦的直接拉到最下,有乾貨。
環境:
伺服器主機 :騰訊雲 1核 1GB 1Mbps
伺服器作業系統:CentOS 7.2 64位
客戶端作業系統:各種 Windows ~
可能用到的軟體:
- putty : 用來連線伺服器,隨便什麼軟體都可以能連上就行
- Proxifier : 用來測試連線情況
- Firefox : 就是瀏覽器…任何一個都可以
關於SOCKS5
這裡只做簡單介紹。
SOCKS5 是一個代理協議,它在使用TCP/IP協議通訊的前端機器和伺服器機器之間扮演一箇中介角色,使得內部網中的前端機器變得能夠訪問Internet網中的伺服器,或者使通訊更加安全。
正常情況下客戶端和服務端的通訊:
客戶端<–>服務端
使用了SOCKS5代理後的通訊:
客戶端<–>代理伺服器<–>服務端
我接觸這個是因為,我的客戶端沒有辦法直接訪問一部分服務端(被牆了),但是我可以訪問代理伺服器,而且代理伺服器可以訪問我需要的服務端。
所以我嘗試通過代理伺服器來訪問需要的服務端(翻牆)。
安裝ss5
首先,你需要一臺伺服器,這個沒有什麼現在,不過本文適用於CentOS 7.2 64位作業系統。
連線你的伺服器:
通過yum安裝ss5 依賴包:
yum install gcc openldap-devel pam-devel openssl-devel
- 1
安裝成功之後,安裝ss5:
首先下載ss5
# 這個是一個日本大學的sourceforge映象
wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
- 1
- 2
- 3
然後解壓壓縮包:
# 解壓,"ss5-3.8.9-8.tar.gz"是剛才下載的壓縮包
# -v過程顯示檔案 -z解壓/壓縮gzip -x解壓操作 -f 後面加要操作的檔案
tar -vzx -f ss5-3.8.9-8.tar.gz
- 1
- 2
- 3
會解壓出來很多檔案,進入解壓目錄:
cd ss5-3.8.9/
- 1
執行’./configure’
# configure是一個shell指令碼
# 主要的作用是對即將安裝的程式進行配置,
# 檢查當前的環境是否滿足要安裝程式的依賴關係.
# 如果系統環境合適,就會生成makefile,否則會報錯。
./configure
- 1
- 2
- 3
- 4
- 5
可以看到check通過了生成了makefile檔案~
這時,我們ls
一下就會看到檔案(紅色方框):
接下來我們按照makefile中的規則編譯ss5。
# make是一個命令工具
# 解釋 Makefile 中的規則。
# Makefile檔案中描述了整個工程所有檔案的編譯順序、編譯規則。
# 實際上make是執行Makefile中的第一條命令
make
- 1
- 2
- 3
- 4
- 5
接下來開始安裝剛剛編譯的程式:
# 執行Makefile中的install
# 這些都可以在Makefile檔案中看到
# 可以使用vim Makefile檢視檔案
make install
- 1
- 2
- 3
- 4
這樣安裝就完成了。
ss5基本配置
這時我們啟動ss5
service ss5 start
- 1
可能會出現如下情況:
原因許可權不足,我們修改一下許可權:
# a+x 給所有人加上可執行許可權(所有者,所屬組,其他)
chmod a+x /etc/init.d/ss5
- 1
- 2
再啟動ss5,就沒有問題了~
目前為止只是安裝上了ss5,也可以正常執行服務,但實際上代理服務還是用不了,
需要配置一下檔案。
首先我們開啟ss5的配置檔案。
vim /etc/opt/ss5/ss5.conf
- 1
把這兩處的註釋開啟(就是auth,permit這兩行)
儲存並重啟ss5(service ss5 restart
)
這樣一個最基本的代理功能就可以使用了
但是有時我們想設定使用者,只允許他們使用代理。
這樣,我們就需要將上面兩處改為
auth 0.0.0.0/0 – u
- 1
和
permit u 0.0.0.0/0 – 0.0.0.0/0 – – – – -
- 1
就是將其中的一個’-‘用’u’代替。
然後開啟/etc/opt/ss5/ss5.passwd
vim /etc/opt/ss5/ss5.passwd
- 1
在第一行加入你允許的使用者名稱和密碼,例如
root rootroot
- 1
ss5.passwd檔案的格式是一個使用者一行: [使用者名稱] [密碼]。
別忘了 重啟ss5 (service ss5 restart
)
代理服務測試(客戶端配置)
回到自己的客戶端(就是自己的電腦),開啟Proxifier
選擇: 配置檔案(p)->代理伺服器(p)->新增..
然後輸入自己伺服器的地址和埠號(埠號預設是1080),
協議選擇 SOCKS 版本 5
,
驗證一欄如果服務端設定了就填設定的使用者和密碼,沒有就不啟用。
點選檢查:
按照上面步驟進行正常情況下會檢查成功。
然後退出來確認新增代理伺服器。
接下來配置代理規則:
選擇: 配置檔案(p)->代理規則(R)->新增..
將Default條目的動作選項選擇為剛剛設定的代理伺服器就可以了,
這樣就完成了全域性代理。
測試一下:百度-ip
CentOS下配置SS5(SOCKS5)代理伺服器
2017年05月04日 17:53:02
閱讀數:14679
方案:使用開源的SS5( Socks Server 5 )
CentOs版本:CentOS 7.3.1611 x64
以下操作如果沒有特別指明,均在root目錄下(/root)
1、從官網下載原始碼
# wget https://nchc.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
- 1
直接從官網下載壓縮包到當前目錄,我下載的是最新版。
你也可以在windows上下載後,使用FlashFxp上傳至伺服器。
2、配置編譯環境及安裝編譯SS5依賴元件
# yum -y install gcc automake make
- 1
# yum -y install pam-devel openldap-devel cyrus-sasl-devel openssl-devel
- 1
3、解壓、編譯、安裝
# tar xvf ss5-3.8.9-8.tar.gz
# cd ss5-3.8.9-8
# ./configure && make && make install
- 1
- 2
- 3
4、修改SS5配置檔案
①修改認證方式 /etc/opt/ss5/ss5.conf
,查詢取消下面兩行註釋
auth 0.0.0.0/0 - -
permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -
- 1
- 2
安裝後這兩行是註釋的(當時弄的時候沒注意,後面用客戶端通過代理伺服器連線測試時一直顯示錯誤的認證方式,找了好久)。
預設的是:無使用者認證。
如果想要使用 username/password
使用者認證方法,需要將上面兩行修改成下面這樣:
auth 0.0.0.0/0 - u
permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - -
- 1
- 2
②新增使用者名稱及密碼 /etc/opt/ss5/ss5.passwd
,每行一個使用者+密碼(之間用空格)
test1 12345
test2 56789
- 1
- 2
③修改ss5啟動的引數,自定義代理埠 /etc/sysconfig/ss5
(如果不設定,預設是1080)
此檔案ss5啟動時會主動載入,將
#SS5_OPTS=” -u root”
- 1
取消註釋,修改成下面這樣
SS5_OPTS=" -u root -b 0.0.0.0:10808"
- 1
④給bash檔案增加可執行許可權 /etc/rc.d/init.d/ss5
# chmod 755 /etc/rc.d/init.d/ss5
- 1
5、啟動ss5
一定要在root使用者目錄下,執行
# /etc/rc.d/init.d/ss5 restart
- 1
也可以用
# service ss5 start
- 1
啟動完成後,可以使用以下命令檢視連線情況
# netstat -an | grep 10808
- 1
檢視日誌
more /var/log/ss5/ss5.log
- 1
6、關閉ss5
# /etc/rc.d/init.d/ss5 stop
- 1
也可以用
# service ss5 stop
- 1
7、將ss5加入開機自動啟動(可選)
# chkconfig --add ss5
# chkconfig --level 345 ss5 on
- 1
- 2
8、至此,在centos下安裝socks5代理伺服器已完成,接下來開始配置客戶端(以widows7為例)
9、如何測試伺服器是否能訪問某個網站
比如測試是否能訪問百度
# wget https://www.baidu.com/
- 1
檢視是否能下載百度的首頁到本地
10、有哪些客戶端代理軟體
比較出名的有:
Shadowsocks
proxifier
sockscap
- 1
- 2
- 3
這些軟體都可以全域性代理,也可以設定區域性代理。
使用方法大同小異,都先需要設定代理伺服器的資訊:
ip,埠,使用者名稱及密碼(如果需要認證的話)。
但是經過測試發現,這些本地socks5代理軟體效果都不太好,訪問網頁基本都是超時或無法連線(也可能有些引數我沒有使用對)
如果伺服器採用的是windows系統,一種比較常用的搭配是CCProxy(ss5代理伺服器)+proxifier(客戶端)。
11、windows常用軟體自帶的sock5代理設定
測試發現採用軟體自帶的代理功能效果比較好
一般搭建ss5代理伺服器最好使用使用者認證的方式(使用者名稱密碼),但大多數客戶端軟體都沒有此功能,比如ie瀏覽器、360安全瀏覽器、火狐瀏覽器等。所以如果想要使用這些軟體設定sock5代理的話,ss5代理伺服器需保持預設的無認證模式。
QQ和遨遊瀏覽器支援使用者認證
下面是一些常用軟體的sock5代理設定方法:
windows系統自帶的ie瀏覽器(我本機裝的ie10,低版本的可能不支援)
設定-Internet選項-連線-區域網設定-代理伺服器(勾選為LAN使用代理伺服器)-高階-在套接字一欄中填寫對應的代理伺服器ip和埠確定(其它留白)。
勾選對本地地址不使用代理伺服器(即對本地地址127.0.0.1、A段私有地址10.0.0.0-10.255.255.255、B段私有地址172.16.0.0-172.31.255.255、C段私有地址192.168.0.0–192.168.255.255不進行代理)
chrome瀏覽器
谷歌瀏覽器使用的系統的預設代理方式(即ie瀏覽器的代理設定)
360安全瀏覽器
工具-代理伺服器(下面有3個選項,代理伺服器設定、使用IE代理設定、不使用代理伺服器,預設使用IE代理設定)-代理伺服器設定,在彈出的視窗中的代理伺服器列表編輯框中按如下格式填寫:
ip:埠號@socks#名稱
火狐瀏覽器
在位址列中,輸入 about:config ,按確認,修改裡面的一項數值,將 network.proxy.socks_remote_dns改成true(在頁面中雙擊即可)。然後,開啟FireFox瀏覽器,選擇選單欄的“工具/選項…”。選擇“高階/網路”,點設定,就可以在彈出的視窗中進行代理伺服器的設定了,選中“手動配置代理”,然後在SOCKS主機上,填寫相應的代理伺服器地址和埠,SOCKS型別選擇“SOCKS V5”。
遨遊瀏覽器
在設定頁面中,支援使用者認證(可以選填使用者名稱和密碼)
QQ客戶端
在登陸介面中點選設定三角按鈕就可以進入網路設定介面,支援使用者認證(可以選填使用者名稱和密碼)
備註
如果netstat看不到埠了,到makefile目錄中make uninstall解除安裝再make install重灌以下。
/etc/rc.d/init.d/ss5(shell指令碼)
#!/bin/sh
#
# chkconfig: 345 20 80
# description: This script takes care of starting \
# and stopping ss5
#
OS=`uname -s`
if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/ss5 ] || exit 0
fi
# Test custom variables
test -f /etc/sysconfig/ss5 && . /etc/sysconfig/ss5
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n "Starting ss5... "
if [ $OS = "Linux" ]; then
daemon /usr/sbin/ss5 -t -u root -b ip:10888
touch /var/lock/subsys/ss5
else
if [ $OS = "SunOS" ]; then
/usr/sbin/ss5 -t
touch /var/lock/subsys/ss5
else
/usr/local/sbin/ss5 -t
fi
fi
echo "done"
;;
stop)
# Stop daemon.
echo "Shutting down ss5... "
if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
killproc ss5
rm -f /var/lock/subsys/ss5
else
killall ss5
fi
rm -f /var/run/ss5/ss5.pid
echo "done"
;;
reload)
# Reload configuration
if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
echo -n "Reloading ss5... "
killproc ss5 -1
else
pkill -HUP ss5
fi
echo "done reload"
;;
restart)
# Restart daemon
echo -n "Restarting ss5... "
$0 stop
$0 start
;;
status)
if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
status ss5
fi
;;
*)
echo "Usage: ss5 {start|stop|status|restart|reload}"
exit 1
;;
esac
exit 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
如果出現以下錯誤
Can’t create pid file /var/run/ss5/ss5.pid
Can’t unlink pid file /var/run/ss5/ss5.pid
需要先建立 /var/run/ss5 目錄後再啟動 ss5
好像每次重啟電腦後會資料夾會被刪除。
有時候訪問谷歌時,會自動斷開連結(會持續一段時間)
檢視日誌,顯示以下錯誤
[ERRO] ReceivingDataReceivingData: (Connection reset by peer).
百度了一下說,可能
客戶端被關閉,或瀏覽器點了stop
伺服器併發數超載,會主動斷開一些連結。
沒看程式碼,具體不太清除,不過發現
每次訪問
http://www.google.com/就會出現(其它國外網站類似)
訪問https://www.google.com/就正常