1. 程式人生 > >CentOS下配置SS5(SOCKS5)代理伺服器,絕對可行

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/就正常