歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

在Linux上配置和實現SOCKSv5

  一、 SOCKS概述 SOCKS其實是一種網絡代理協議。該協議所描述的是一種內部主機(使用私有ip地址) 通過SOCKS服務器獲得完全的Internet訪問的方法。具體說來是這樣一個環境:用一台運行S OCKS的服務器(雙宿主主機)連接內部網和Internet,內部網主機使用的都是私有的ip地址 ,內部網主機請求訪問Internet時,首先和SOCKS服務器建立一個SOCKS通道,然後再將請求 通過這個通道發送給SOCKS服務器,SOCKS服務器在收到客戶請求後,向客戶請求的Internet 主機發出請求,得到相應後,SOCKS服務器再通過原先建立的SOCKS通道將數據返回給客戶。 當然在建立SOCKS通道的過程中可能有一個用戶認證的過程。 SOCKS和一般的應用層代理服務器是完全不同的。一般的應用層代理服務器工作在應 用層,並且針對不用的網絡應用提供不同的處理方法,比如HTTP、FTP、SMTP等,這樣,一旦 有新的網絡應用出現時,應用層代理服務器就不能提供對該應用的代理,因此應用層代理服務器的可擴展性並不好;與應用層代理服務器不同的是,SOCKS代理服務器旨在提供一種廣義 的代理服務,它與具體的應用無關,不管再出現什麼新的應用都能提供代理服務,因為SOCK S代理工作再線路層(即應用層和傳輸層之間),這和單純工作在網絡層或傳輸層的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-method s所定義的用戶認證方法。對於沒有定義認證方法的客戶將使用任何可以使用的認證方法。 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.



noproxy:不使用代理而直接連接 7. server的值: host: 指定服務器的hostname,使用缺省服務端口 host:port:指定服務器的hostname和該服務的監聽端口 下面是一些例子: auth ― - u 說明:對所有的客戶連接都使用username/password用戶認證方法 permit u - 192.



Copyright © Linux教程網 All Rights Reserved