剛開始找了一下,發(fā)現(xiàn)全是在linux下實(shí)現(xiàn)的,我按照readme步驟在rh9下作了一遍,用系統(tǒng)默認(rèn)的gcc很容易的就搞定了。這里強(qiáng)調(diào)的gcc編譯器是一個(gè)比較關(guān)鍵環(huán)節(jié)。先用gcc3.3是沒有裝過去主要問題出在
當(dāng)然在solaris8下的話,直接裝就可以了,因?yàn)閟unfreware有for這個(gè)東東,但是gcc有什么要求嗎?一句話---不知道!!s9下還有哪個(gè)gcc版本可以呢,也不知道,知道的告訴我哦!
下載編譯器gcc-2.95.3-pkg.zip(www.sunfreeware.com),解壓后得到安裝包SFWgcc(這個(gè)編譯器是要SFW支持)的。安裝這個(gè)包:
#pkgadd –d SFWgcc
默認(rèn)的安裝目錄是/opt/sfw,為正確使用這個(gè)編譯器而設(shè)置環(huán)境變量:
#PATH=/opt/sfw/bin:/usr/local/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:.
#export
1. 下載socks5安裝包,一搜一大堆,現(xiàn)在可能有兩個(gè)大的區(qū)別一個(gè)是在win下一個(gè)是unix下的,后面我給出的這個(gè)包名字有的網(wǎng)站上說只在linux下能用,不要管他這一套,繼續(xù)就是了(其實(shí)for solaris8也就是這個(gè)了。另外據(jù)我所知socks5幾乎可以在任何系統(tǒng)下實(shí)現(xiàn)的,自己去實(shí)驗(yàn)吧)。將socks5安裝包socks5-v1.0r11.tar.gz以bin方式上傳到RH9/solaris9服務(wù)器上。
2. 解壓縮軟件包
#gunzip socks5-v1.0r11.tar.gz
#tar xvf socks5-v1.0r11.tar
3. 開始編譯
#cd socks5-v1.0r11
#./configure --with-threads
說明:可以根據(jù)需要參考readme來作配置,也可在安裝后進(jìn)行配置(推薦這樣就可以了,搞了幾個(gè)別的配置出錯了,怕怕啊)。
#make
#make install
4. 建立/etc/socks5.conf(許多文件都自己建吧,裝完后我是沒有看到自動生成的)
需要達(dá)到的目的:在局域網(wǎng)段(192.168.0)內(nèi)提供代理服務(wù),要求提供用戶名和密碼。要使用用戶驗(yàn)證,首先要建立/etc/socks5.pwsswd文件,內(nèi)容為:
# vi /etc/socks5.passwd
userA passwdA (userA代表用戶名。passwdA代表用戶userA的密碼)
完成/etc/socks5.conf配置文件:
#vi /etc/socks5.conf
auth - - u
permit u - 192.168.0. - - -
注:若改變u和192.168.0.為-,則允許任何用戶(不需要用戶名和密碼)的任意ip使用代理服務(wù);192.168.0.等同于192.168.0.0/255.255.255.0,這個(gè)字段同樣可以設(shè)定某一個(gè)ip來使用代理服務(wù)。
在解壓目錄socks5-v1.0r11下的examples目錄下提供了幾個(gè)常用的配置文件內(nèi)容,可以參考使用。
#cd examples
#ls
sock5.conf.dualhomed sock5.conf.gssapi sock5.conf.multipleservers sock5.conf.server2server sock5.conf.singlehomed 。。。。 每一個(gè)配置文件的后綴說明了它所面向的服務(wù)內(nèi)容,需要時(shí)可根據(jù)其內(nèi)容作適當(dāng)更改。
5. 運(yùn)行代理服務(wù):
#socks
在第一次裝好socks5之后可以通過運(yùn)行#/usr/local/bin/socks5 –f –s來測試代理服務(wù)能否正常運(yùn)行,如果出現(xiàn)02716:Socks5 starting at Thu May 20 20:33:58 2004 in normal mode,則表示可以正常運(yùn)行。
6. 停止socks5,只要運(yùn)行stopsocks -KILL就行,socks5就會停止!
7. 高級配置
7.1 使用非默認(rèn)端口:如果想讓socks5服務(wù)啟動的時(shí)候不啟動默認(rèn)監(jiān)聽端口1080,比如為8888,可以運(yùn)行如下命令
# socks5 -b 8888
相應(yīng)的關(guān)服務(wù)命令為:
# stopsocks -p 888 -KILL
7.2 為了密碼文件的安全,使用自建的密碼文件,比如/etc/myc.passwd。這時(shí),只要修改/etc/socks5.conf文件,在其中新加一條項(xiàng)數(shù):
set SOCKS5_PWDFILE /etc/myc.passwd
7.3 指定SOCKS v5綁定的ip地址和監(jiān)聽的端口。如果不指定綁定的IP將使用0.0.0.0
set SOCKS5_BINDINFC 192.168.0.8:1080
7.4 忽略ident請求。當(dāng)客戶機(jī)沒有運(yùn)行identd時(shí),使用SOCKS5_NOIDENT將降低超時(shí)值
set SOCKS5_NOIDENT
7.5 指定連接停頓最長時(shí)間。超過最大值后,socks5斷開連接
set SOCKS5_TIMEOUT 15
7.6 socks5將接受SOCKS V4 協(xié)議的請求,默認(rèn)不接受
set SOCKS5_V4SUPPORT
7.7 指定同時(shí)存在的最大子進(jìn)程數(shù),Socks5預(yù)設(shè)為64
set SOCKS5_MAXCHILD 4
8. 添加自動啟動服務(wù)和日志記錄
# /usr/local/bin/socks5 -t -s 2> /var/log/socks5
#echo "/usr/local/bin/socks5 -t -s 2> /var/log/socks5" >> /etc/rc2.d/rc.local
如果是linux則改rc2.d為rc.d
附錄,socks5 server配置文件(只要定制好自己的配置方式后,將條目寫到/etc/socks5.conf中即可。有人用cp example目錄下的文件方法來生成配置文件,個(gè)人不提倡這樣,反正我也出現(xiàn)過錯,自己按格式來保證不出錯)。
socks5.conf通常由以下幾個(gè)方面的內(nèi)容構(gòu)成:
-ban host:定義拒絕服務(wù)的客戶列表
-authentication:定義Socks5服務(wù)器使用的用戶認(rèn)證方法
-interface:定義Socks5服務(wù)器綁定的ip地址和服務(wù)端口
-variables and flags:定義Socks5服務(wù)器運(yùn)行的環(huán)境
-proxies:定義客戶可以通過Socks5服務(wù)器訪問的地址列表以及Socks5服務(wù)器訪問這些地址的方法
-access control:定義Socks5服務(wù)器接受或拒絕客戶連接的規(guī)則
下面我們分別來講述這些條目對應(yīng)的語法:
ban host
語法:ban source-host source-port
說明:Socks5服務(wù)器將拒絕接受來自source-host:source-port的客戶連接。
authentication
語法:auth source-host source-port auth-methods
說明:對于來自source-host:source-port的客戶連接,Socks5服務(wù)器將使用
interface
語法:interface hostpatern portpattern interface-address
說明:來自source-host:source-port的客戶連接由interface-address處理;目的地址為source-host:source-port的客戶連接由Socks5 代理服務(wù)器從 interface-address發(fā)出連接請求。
variables
語法:set variable value
說明:定義Socks5運(yùn)行參數(shù),Socks5有以下一些常用的運(yùn)行參數(shù):
SOCKS5_BINDINTFC host:port
host:port 指定socks5運(yùn)行的主機(jī)和端口號,用于代替缺省的端口。忽略時(shí),socks5用0.0.0.0作為主機(jī)值。
SOCKS5_CONFFILE filename
Filename 指定配置文件。在許多系統(tǒng)中,缺省是/etc/socks5.conf。在運(yùn)行socks5之前,設(shè)置這個(gè)變量。如果有多個(gè)socks5 daemon運(yùn)行,為每個(gè)daemon使用不同的配置文件。
SOCKS5_DEMAND_IDENT
當(dāng)客戶沒有響應(yīng)ident 請求時(shí),認(rèn)證失敗。使用SOCKS5_DEMAND_IDENT確認(rèn)每個(gè)連接有一個(gè)關(guān)聯(lián)的用戶名。
SOCKS_ENCRYPT
如果可能的話,請求下一個(gè)socks5進(jìn)程加密數(shù)據(jù)。SOCKS5_ENCRYPT 僅僅在編譯socks5時(shí)包括了GSS-API認(rèn)證時(shí),才有意義。
SOCKS5_FORCE_ENCRYPT
當(dāng)認(rèn)證方式支持加密時(shí),強(qiáng)迫客戶加密數(shù)據(jù)。
SOCKS5_IDENTFILE filename
Filename指定存儲ident信息的文件名。在許多系統(tǒng)中,缺省是/tmp/socks5.ident。當(dāng)有多個(gè)socks5 daemon運(yùn)行時(shí),SOCKS5_IDENTFILE非常有用。
SOCKS5_MAXCHILD val
val指定同時(shí)存在的最大子進(jìn)程數(shù)。Socks5預(yù)設(shè)為64。可以降低預(yù)設(shè)置。不能超過64。Socks5運(yùn)行在線程模式時(shí),忽略此參數(shù)。當(dāng)運(yùn)行在oneshot或inetd模式時(shí),此參數(shù)不發(fā)生作用。
SOCKS_NOIDENT
忽略ident請求。當(dāng)客戶機(jī)沒有運(yùn)行identd時(shí),使用SOCKS5_NOIDENT將降低超時(shí)值。
SOCKS_NOINTCHK
請求下一個(gè)socks5進(jìn)程執(zhí)行沒有完整檢查的代理請求。只有在編譯時(shí)加入GSS-API認(rèn)證時(shí),SOCKS5_NOINTCHK才發(fā)生作用。
SOCKS_NONETMASKCHECK
指示daemon忽略檢查主機(jī)的子網(wǎng)掩碼。缺省時(shí),daemon檢查掩碼,如果在同一子網(wǎng)時(shí),在檢查配置文件之前,直接連接。
SOCKS5_REVERSEMAP
總是試圖影射地址到主機(jī)名。缺省時(shí),socks5只有當(dāng)主機(jī)名或域名在配置文件中使用時(shí)才影射。設(shè)置后,log文件將紀(jì)錄主機(jī)名,這將降低性能。
SOCKS5_SERVICENAME
總是影射端口號到服務(wù)名。缺省時(shí),socks5只有當(dāng)服務(wù)名在配置文件中使用時(shí)才影射。設(shè)置后,log文件將紀(jì)錄服務(wù)名,這將降低性能。
SOCKS5_PASSWD [password]
當(dāng)socks5 daemon連接到其它socks服務(wù)器時(shí),如果采用Username/Password 認(rèn)證,用它來指定密碼。
SOCKS5_PIDFILE filename
指定存儲socks5進(jìn)程ID的文件名。Socks5缺省存貯PID在/tmp/socks5.pid。你可以用—bindintfc參數(shù)或設(shè)置SOCKS5_BINDINTFC環(huán)境變量運(yùn)行socks5在不同于缺省端口的其它端口。當(dāng)運(yùn)行在不同于缺省端口的其它端口時(shí),socks5存貯PID在/tmp/socks5.pid-port。
SOCKS5_PWDFILE filename
指定密碼文件。在許多系統(tǒng)中,缺省是/etc/socks5.passwd。
SOCKS5_TIMEOUT minutes
指定連接停頓最長時(shí)間。超過最大值后,socks5斷開連接。忽略此值時(shí),缺省是15。
SOCKS5_UDPPORTRANGE port1-port2
指定一個(gè)Socks5用來發(fā)送UDP包的UDP端口范圍。
SOCKS5_USER [user id]
當(dāng)socks5 daemon連接到其它socks server時(shí),如果采用Username/Password認(rèn)證,用此變量指定用戶名。
缺省時(shí),socks5只接受SOCKS5協(xié)議(rfc 1928)的請求。設(shè)此變量后,socks5將接受SOCKS V4 協(xié)議的請求。
proxies
語法:proxy-type dest-host dest-port proxy-list
說明:當(dāng)客戶請求的目的為dest-host:dest-port時(shí),Socks5將使用proxy-list中的代理服務(wù)器請求數(shù)據(jù)。
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]
說明:通過這兩條語句所定義的規(guī)則來進(jìn)行客戶訪問控制。
我們再對以上語法作進(jìn)一步的解釋:
host的表示方法:
-:表示任意主機(jī)
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:表示主機(jī)名以.domain.name結(jié)尾的主機(jī)
some.domain.name:表示主機(jī)名為some.domain.name的主機(jī)
port的表示方法
-:表示任意端口
service name:用/etc/service中定義的服務(wù)名來表示,如telnet
port number:直接指定數(shù)字端口,如80
[port_start,port_end]:指定一個(gè)端口范圍,如[1024,6000]表示從端口1024到6000,(1024,6000)表示從端口1025到5999
auth的值
n:無用戶認(rèn)證
u:使用username/password用戶認(rèn)證方法
k:使用Kerberos用戶認(rèn)證方法
-:使用任何可用的用戶認(rèn)證方法
cmd的值
-:任何命令
c:connect
b:bind
u:UDP
p:ping
t:traceroute
user的值
-:任何用戶
proxy的值
socks5: Socks 5
socks4: SOCKS 版本4
noproxy:不使用代理而直接連接
server的值
host: 指定服務(wù)器的hostname,使用缺省服務(wù)端口
host:port:指定服務(wù)器的hostname和該服務(wù)的監(jiān)聽端口