找回密碼
 註冊
搜尋
熱搜: 活動 交友 discuz
檢視: 9328|回覆: 1

Socks5 代理伺服器配置

[複製連結]

13

主題

215

回帖

64

積分

管理員

積分
64
發表於 2004-5-14 15:46:29 | 顯示全部樓層 |閱讀模式
本文轉載自張微波的linux學習筆記

版權聲明:可以任意轉載,轉載時請務必以超鏈結形式標明文章原始出處和作者資訊及本聲明
http://www.5ilinux.com/socks501.html


__________________________________________________________

最近有不少網友老是問我一些QQ如何利用代理的事。其實是很簡單的,通過代理獵手尋找一些socks5代理便可。剛好最近在學習linux系統,於是突然想到用RedHat9來做個socks5代理伺服器。ok!說幹就幹
1。先在北大天網搜索一下socks5的安裝包,發現一大堆,最新版本是socks5-v1.0r11.tar.gz,於是下載到我的RH9的伺服器上。
2。解壓縮套裝軟體
#tar xvfz socks5-v1.0r11.tar.gz
3.開始編譯
#cd socks5-v1.0r11
#./configure --with-threads
#make
#make install

4.建立/etc/socks5.conf,其實在套裝軟體裏已經有現成的examples
#cd examples
#cp socks5.conf.singlehomed /etc/socks5.conf (我們挑選一個最簡單的配置檔)
默認配置就是
# A Socks5 Config file for a normal, single homed server
permit - - - - - -
這個配置檔是允許任何人都可以使用這個socks5代理,並不需要驗證
如果想限制只是某個IP段(192.168.0.0/255.255.255.0)可以訪問,可以改成
permit - - 192.168.0. - - -
或者只允許某個IP(192.168.0.10)可以訪問使用,可以改成
permit - - 192.168.0.10 - - -
5.ok 運行一下socks5 -t 啟動socks5服務,然後用QQ測試一下代理是否生效,記住默認埠是1080
反正我是在FTP軟體和QQ上試了 都沒問題。
6.如果要停止socks5,只要運行stopsocks -KILL就行,socks5就會停止!
7.使用非默認埠:如果你想讓socks5服務啟動的時候不啟動默認監聽埠1080,比如為1234,我們可以運行如下命令
socks5 -b 1234 -t 當然你關掉這個服務,就必須用下面的命令 stopsocks -p 1234 -KILL

8.我們來深入配置一下socks5.conf,使socks5使用用戶驗證機制
要使用用戶驗證,首先要建立/etc/socks5.pwsswd文件
內容為:(userA代表用戶名。passwdA代表用戶userA的密碼)
#/etc/socks5.passwd
userA passwdA
userB passwdB
userC passwdC
然後修改/etc/socks5.conf
添加下列語句
auth - - u
或者把:
auth - - -改成auth - - u
添加:
把默認permit - - - - - - 改成permit u - 192.168.0. - - -
即允許來自192.168.0.0/255.255.255.0網段的任何經過用戶認證的連接

如果你不想把密碼檔存在默認的/etc/socks5.passwd裏。想存在自定義的檔,比如/etc/qq.passwd
那就得修改/etc/socks5.conf.添加一項參數
set SOCKS5_PWDFILE /etc/qq.passwd

ok!重啟一下服務,這時如果不輸入正確的用戶名和密碼是使用不了socks5代理伺服器的,輸入正確的用戶名和密碼便可使用。
以上說的參數,大家可以結合使用,比如限制某個IP段使用socks5服務,而且要使用用戶名驗證
另外針對/etc/socks5.conf還有一些參數,大家就自己去研究吧
set SOCKS5_BINDINFC 192.168.0.8:1080
忽略ident請求。當客戶機沒有運行identd時,使用SOCKS5_NOIDENT將降低超時值
set SOCKS5_NOIDENT
指定連接停頓最長時間。超過最大值後,socks5斷開連接
set SOCKS5_TIMEOUT 15
socks5將接受SOCKS V4 協議的請求,默認不接受
set SOCKS5_V4SUPPORT
指定同時存在的最大子進程數,Socks5預設為64
set SOCKS5_MAXCHILD 4

作者:張微波
2003年6月4日

13

主題

215

回帖

64

積分

管理員

積分
64
 樓主| 發表於 2004-9-17 17:19:57 | 顯示全部樓層
一、 SOCKS概述

SOCKS其實是一種網絡代理協議。該協議所描述的是一種內部主機(使用私有ip地址)

通過SOCKS服務器獲得完全的Internet訪問的方法。具體說來是這樣一個環境:用一台運行SOCKS的服務器(雙網卡主機)連接內部網和Internet,內部網主機使用的都是私有的ip地址,內部網主機請求訪問Internet時,首先和SOCKS服務器建立一個SOCKS通道,然後再將請求通過這個通道發送給SOCKS服務器,SOCKS服務器在收到客戶請求後,向客戶請求的Internet
主機發出請求,得到相應後,SOCKS服務器再通過原先建立的SOCKS通道將數據返回給客戶。當然在建立SOCKS通道的過程中可能有一個用戶認証的過程。

SOCKS和一般的應用層代理服務器是完全不同的。一般的應用層代理服務器工作在應用層,並且針對不用的網絡應用提供不同的處理方法,比如HTTP、FTP、SMTP等,這樣,一旦有新的網絡應用出現時,應用層代理服務器就不能提供對該應用的代理,因此應用層代理服務器的可擴展性並不好;與應用層代理服務器不同的是,SOCKS代理服務器旨在提供一種廣義的代理服務,它與具體的應用無關,不管再出現什麼新的應用都能提供代理服務,因為SOCKS代理工作再線路層(即應用層和傳輸層之間),這和單純工作在網絡層或傳輸層的ip欺騙(或者叫做網絡地址轉換NAT)又有所不同,因為SOCKS不能提供網絡層網關服務,比如ICMP包轉發等。這三種技術的比較如下表所示


類別
ip欺騙(NAT)
SOCKS v5
應用層代理

工作區域
網絡層或傳輸層
線路層
應用層

用戶認証
無
有
有

應用可擴展性
好
好
無

網絡服務
有
無
無



目前的SOCKS版本是第五版,第五版同第四版的區別主要在於第五版提供多種不同的用戶認証方法和UDP代理。


二、 SOCKS v5的安裝

1. 軟體的獲取

對於非商業使用SOCKS是免費的,你可以?www.socks.nec.com/cgi-bin/download.pl

下載SOCKS v5的最新版,當前的最新版本是socks5-v1.0r11.tar.gz,使用RedHat的朋友也可以到RedHat的官方站點下載相應的SOCKS v5的rpm包。下面我們以SOCKS v5 的最新版socks5-v1.0r11.tar.gz為例講述SOCKS v5的安裝過程。

2. 將下載來的socks5-v1.0r11.tar.gz拷貝到/tmp目錄下

#cp socks5-v1.0r11.tar.gz /tmp

3. 解開壓縮包

#tar xvzf socks5-v1.0r11.tar.gz

4. 進入socks5-v1.0r11開始編譯

#cd socks5-v1.0r11

#./configure

#make

#make install

如果要更改預設的安裝選項,請仔細閱讀README INSTALL文檔的相關說明。如果編譯過程出現了問題,也可以到以下站點下載我編譯的binary包:

http://www.yxtc.edu.cn/soft/linux/socks/socks5.tar.gz

下載後將該socks5.tar.gz binary包拷貝到根目錄/,運行tar xvzf socks5.tar.gz即可。相關的文件路徑如下:

#tar xvzf socks5.tar.gz

usr/bin/socks5

usr/bin/stopsocks

usr/bin/runsocks

usr/lib/libsocks5.a

usr/lib/libsocks5_sh.so

usr/man/man1/stopsocks.1

usr/man/man1/socks5.1

usr/man/man1/socks5.1.gz

usr/man/man1/socks5_clients.1

usr/man/man1/runsocks.1

usr/man/man5/socks5.conf.5

usr/man/man5/socks5.conf.5.gz

usr/man/man5/socks5.passwd.5

usr/man/man5/socks5.passwd.5.gz

usr/man/man5/libsocks5.conf.5

etc/socks5/libsocks5.conf

etc/socks5/passwd

etc/socks5/socks5.conf

etc/rc.d/init.d/socks5


三、 SOCKS v5的配置

我們主要通過socks5.conf文件來配置SOCKS v5服務器。該配置文件的路徑可以在編譯SOCKS v5時自行指定,預設路徑為:/etc/socks5.conf。SOCKS v5服務器在每次啟動或收到HUP信號時讀入該配置文件的內容。該配置文件通常由以下幾個方面的內容構成:

-ban host:定義拒絕服務的客戶列表

-authentication:定義SOCKS v5服務器使用的用戶認証方法

-interface:定義SOCKS v5服務器絆定的ip地址和服務端口

─variables and flags:定義SOCKS v5服務器運行的環境

-proxies:定義客戶可以通過SOCKS v5服務器訪問的地址列表以及SOCKS v5服務器訪問這些地址的方法

-access control:定義SOCKS v5服務器接受或拒絕客戶連接的規則


下面我們分別來講述這些條目對應的語法:

1. ban host:

語法:ban source-host source-port

說明:SOCKS v5服務器將拒絕接受來自source-host:source-port的客戶連接。


2. authentication:

語法:auth source-host source-port auth-methods

說明:對於來自source-host:source-port的客戶連接,SOCKS v5服務器將使用auth-methods所定義的用戶認証方法。對於沒有定義認証方法的客戶將使用任何可以使用的認証方法。


3. interface:

語法:interface hostpatern portpattern interface-address

說明:來自source-host:source-port的客戶連接由interface-address處理;目的地址為so
urce-host:source-port的客戶連接由SOCKS v5 代理服務器從 interface-address發出連接
請求。


4. variables:

語法:set variable value

說明:定義SOCKS v5運行參數,SOCKS v5有以下一些常用的運行參數:

SOCKS_BINDINTFC host : port:指定SOCKS v5綁定的ip地址和監聽的端口。如果

不指定綁定的ip地址,SOCKS v5將使用0.0.0.0。


5. proxies:

語法:proxy-type dest-host dest-port proxy-list

說明:當客戶請求的目的為dest-host:dest-port時,SOCKS v5將使用proxy-list中的代理服
務器請求數據。


6. access control:

語法:permit auth cmd src-host dest-host src-port dest-port [user-list]

deny auth cmd src-host dest-host src-port dest-port [user-list]

說明:通過這兩條語句所定義的規則來進行客戶訪問控制。


我們再對以上語法作進一步的解釋:

1. host的表示方法:

-:表示任意主機

n1.:表示n1.0.0.0/255.0.0.0

n1.n2.:表示n1.n2.0.0/255.255.0.0

n1.n2.n3.:表示n1.n2.n3.0/255.255.255.0

.domain.name:表示主機名以.domain.name結尾的主機

some.domain.name:表示主機名為some.domain.name的主機


2. port的表示方法:

-:表示任意端口

service name:用/etc/service中定義的服務名來表示,如telnet

port number:直接指定數字端口,如80

[port_start,port_end]:指定一個端口范圍,如[1024,6000]表示從端口1024到6000,

(1024,6000)表示從端口1025到5999

3. auth的值:

n:無用戶認証

u:使用username/password用戶認証方法

k:使用Kerberos用戶認証方法

-:使用任何可用的用戶認証方法


4. cmd的值:

-:任何命令

c:connect

b:bind

u:UDP

p:ping

t:traceroute


5. user的值:

-:任何用戶


6. proxy的值:

socks5: SOCKS v5

socks4: SOCKS 版本4

noproxy:不使用代理而直接連接


7. server的值:

host: 指定服務器的hostname,使用缺省服務端口

host : port:指定服務器的hostname和該服務的監聽端口


下面是一些例子:

auth ▓ - u

說明:對所有的客戶連接都使用username/password用戶認証方法

permit u - 192.168.1. - - -

說明:允許來自192.168.1.的任何經過用戶認証的連接


更多的例子請參考以下資源?http://www.socks.nec.com/reference/socks5.html


四、 SOCKS v5一些常見問題的說明

1. windows客戶端的配置

有些windows的應用程序,如IE、OICQ等等本身就支持SOCKS代理服務器,但是更多的windows應用程序是不提供對SOCKS代理服務器的支持的,這時候我們就可以利用一些相應的工具來使得這些應用程序可以使用SOCKS代理服務器。其中最常用的工具sockscap,可以從以下的網址下載sockscap?http://www.socks.nec.com/cgi-bin/download.pl.


2. 用戶認証問題

SOCKS v5已經具有了用戶認証功能,諸如IE等應用程序雖然提供了對SOCKS
代理服務器的支持,但是並不能進行用戶認証,這種情況下我們也隻能用sockscap等工具來提供IE的用戶認証接口。需要注意的是,SOCKS的認証過程並不會象squid一樣彈出認証窗口。


3. 運行模式問題

SOCKS v5具有以下幾種運行模式:

standalont:這是SOCKS v5預設的運行模式

preforking:該模式適合服務器資源有限的情況,因為我們可以事先指定運行
的子進程數。可以用-p選項指定SOCKS以preforking模式運行。

inetd:和telnet等服務一樣通過inetd超級服務器運行SOCKS

threaded:在linux平台上,我們推薦使用該模式運行SOCKS,這樣能獲得最佳性能。


4. 超時問題

在一個客戶會話空閒超過15分鐘後,該會話將被斷開,可以使用SOCKS5_TIMEOUT 變量改變該值。

5. 綁定失敗問題

有時候會出現Bind failed for xxx.xxx.xxx.xxx: ...的提示,通常這是因為SOCKS所綁定的端口已被其他程序所使用的緣故,可以通過更改該端口的值來解決這類問題。


6. SOCKS v5的日子問題

SOCKS v5的日志缺省為/var/log/messages,我們可以通過重新編譯SOCKS v5來將SOCKS v5日志單獨記錄到一個文件中。具體請參考README文件。
更多的配置實例請參?http://www.socks.nec.com/reference/socks5.html.
您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|手機版|Archiver|Kuroshio Ocean Design - 黑潮設計

GMT+8, 2026-11-3 05:01 PM , Processed in 0.021177 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表