close

Solaris下安裝socks5代理伺服器

剛開始找了一下,發現全是在linux下安裝的文件, 我按照readme步驟在rh9下作了一遍,用系統預設的gcc很容易的就搞定了。這裡強調的gcc編譯器是一個比較關鍵環節。先用gcc3.3是沒有裝過去主要問題出在<varvars.h>ftp上面。沒辦法,找個gcc3.4準備看一下,結果解壓的時候出現校驗和錯誤,後來仔細瞭解後發現gcc29系列的在 rh9下沒有問題。對於for-solaris-sparc而言,先找到一個接近版本gcc-2.95.3-pkg.zip

  下載編譯器gcc-2.95.3-pkg.zip(www.sunfreeware.com),解壓後得到安裝套件SFWgcc(這個編譯器是要SFW支持)的。安裝這個包:
  #pkgadd –d SFWgcc
  預設的安裝目錄是/opt/sfw,為正確使用這個編譯器而設置環境變數:
  #PATH=/opt/sfw/bin:/usr/local/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:.
  
#export

  1.下載socks5安裝套件,一搜一大堆,現在可能有兩個大的區別一個是在win下一個是u下的,後面我給出的這個套件名字有的網站上說只在 linux下能用,不要管他這一套,繼續就是了(其實for solaris8也就是這個了。另外據我所知socks5幾乎可以在任何系統下實現的,自己去實驗吧)。將socks5安裝套件socks5-v1.0r11.tgz bin方式上傳到RH9/solaris9伺服器上。

  2.解壓縮套裝軟體
  #gunzip
socks5-v1.0r11.tgz
  #tar xvf socks5-v1.0r11.tar

 or

 #tar –zxvf socks5-v1.0r11.tgz

  3.開始編譯
  #cd socks5-v1.0r11
  #./configure --with-threads

  說明:可以根據需要參考readme來作配置,也可在安裝後進行配置(推薦這樣就可以了,搞了幾個別的配置出錯了,怕怕啊)
  #make
  #make install

  4.建立/etc/socks5.conf(許多檔都自己建吧,裝完後我是沒有看到自動生成的)

  需要達到的目的:在局域網段(192.168.0)內提供代理服務,要求提供使用者名和密碼。
  要使用使用者驗證,首先要建立/etc/socks5.pwsswd文件
  內容為:
  # vi /etc/socks5.passwd
  userA passwdA userA代表使用者名。passwdA代表使用者userA的密碼)

  完成/etc/socks5.conf配置檔:

  #vi /etc/socks5.conf
  auth - - u
  permit u - 192.168.0. - - -

 

  注:若改變u192.168.0.-,則允許任何使用者(不需要使用者名和密碼)的任意ip使用代理服務;192.168.0.等同於192.168.0.0/255.255.255.0,這個欄位同樣可以設定某一個ip來使用代理服務。

在解壓目錄socks5-v1.0r11下的examples目錄下提供了幾個常用的配置檔內容,可以參考使用。
  #cd examples
  #ls
  sock5.conf.dualhomed sock5.conf.gssapi sock5.conf.multipleservers sock5.conf.server2server sock5.conf.singlehomed 。。。。
  每一個配置檔的尾碼說明瞭它所面向的服務內容,需要時可根據其內容作適當更改。

  5.執行代理服務:
  #socks5
  在第一次裝好socks5之後可以通過運行 #/usr/local/bin/socks5 –f –s來測試代理服務能否正常運行,如果出現02716:  Socks5 starting at Thu May 20 20:33:58 2004 in normal mode,則表示可以正常運行。

  6.停止socks5,只要執行stopsocks -KILL就行,socks5就會停止!

  7.進階配置

      7.1使用非預設埠:如果想讓socks5服務啟動的時候不啟動預設監聽埠1080,比如為8888,可以運行如下命令
      # socks5 -b 8888
     相應的關服務命令為:
      # stopsocks -p 888 -KILL

      7.2為了密碼檔的安全,使用自建的密碼檔,比如/etc/myc.passwd。這時,只要修改/etc/socks5.conf檔,在其中新加一條項數:
      set SOCKS5_PWDFILE /etc/myc.passwd

      7.3指定SOCKS v5綁定的ip位址和監聽的埠。如果不指定綁定的IP將使用0.0.0.0
      set SOCKS5_BINDINTFC 192.168.0.8:1080

      7.4忽略ident請求。當客戶機沒有運行identd時,使用SOCKS5_NOIDENT將降低超時值
      set SOCKS5_NOIDENT

      7.5指定連接停頓最長時間。超過最大值後,socks5斷開連接
      set SOCKS5_TIMEOUT 15

      7.6socks5將接受SOCKS V4 協議的請求,預設不接受
      set SOCKS5_V4SUPPORT

      7.7指定同時存在的最大子進程數,Socks5預設為64
      set SOCKS5_MAXCHILD 4

  8.添加自動啟動服務和日誌記錄
  # /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.drc.d

  附錄socks5 server配置檔(只要定制好自己的配置方式後,將條目寫到/etc/socks5.conf中即可。有人用cp example目錄下的檔方法來生成配置檔,個人不提倡這樣,反正我也出現過錯,自己按格式來保證不出錯)
socks5.conf
通常由以下幾個方面的內容構成:

  -ban host:定義拒絕服務的客戶列表
  -authentication:定義Socks5伺服器使用的使用者認證方法
  -interface:定義Socks5伺服器綁定的ip位址和服務埠
  -variables and flags:定義Socks5伺服器運行的環境
  -proxies:定義客戶可以通過Socks5伺服器訪問的位址列表以及Socks5伺服器訪問這些位址的方法
  -access control:定義Socks5伺服器接受或拒絕客戶連接的規則

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

  ban host
  語法:ban source-host source-port
  說明:Socks5伺服器將拒絕接受來自source-host:source-port的客戶連接。

  authentication
  語法:auth source-host source-port auth-methods
  說明:對於來自source-host:source-port的客戶連接,Socks5伺服器將使用

  auth-methods所定義的使用者認證方法。對於沒有定義認證方法的客戶將使用任何可以使用的認證方法。

  interface
  語法:interface hostpatern portpattern interface-address
   說明:來自source-host:source-port的客戶連接由interface-address處理;目的地址為source-host: source-port的客戶連接由Socks5 代理伺服器從 interface-address發出連接請求。

  variables
  語法:set variable value
  說明:定義Socks5運行參數,Socks5有以下一些常用的運行參數:

  SOCKS5_BINDINTFC host:port
  host:port 指定socks5運行的主機和埠號,用於代替預設的埠。忽略時,socks50.0.0.0作為主機值。

  SOCKS5_CONFFILE filename
  Filename 指定配置檔。在許多系統中,預設是/etc/socks5.conf。在運行socks5之前,設置這個變數。如果有多個socks5 daemon運行,為每個daemon使用不同的配置檔。

  SOCKS5_DEMAND_IDENT
  當客戶沒有回應ident 請求時,認證失敗。使用SOCKS5_DEMAND_IDENT確認每個連接有一個關聯的使用者名。

  SOCKS_ENCRYPT
  如果可能的話,請求下一個socks5進程加密資料。SOCKS5_ENCRYPT 僅僅在編譯socks5時包括了GSS-API認證時,才有意義。

  SOCKS5_FORCE_ENCRYPT
  當認證方式支援加密時,強迫客戶加密資料。

  SOCKS5_IDENTFILE filename
  Filename指定存儲ident資訊的檔案名。在許多系統中,預設是/tmp/socks5.ident。當有多個socks5 daemon運行時,SOCKS5_IDENTFILE非常有用。

  SOCKS5_MAXCHILD val
  val指定同時存在的最大子進程數。Socks5預設為64。可以降低預設置。不能超過64Socks5運行線上程模式時,忽略此參數。當運行在oneshotinetd模式時,此參數不發生作用。

  SOCKS_NOIDENT
  忽略ident請求。當客戶機沒有運行identd時,使用SOCKS5_NOIDENT將降低超時值。

  SOCKS_NOINTCHK
  請求下一個socks5進程執行沒有完整檢查的代理請求。只有在編譯時加入GSS-API認證時,SOCKS5_NOINTCHK才發生作用。

 

  SOCKS_NONETMASKCHECK
  指示daemon忽略檢查主機的子網路遮罩。預設時,daemon檢查遮罩,如果在同一子網時,在檢查配置檔之前,直接連接。

 

  SOCKS5_REVERSEMAP
  總是試圖影射位址到主機名。預設時,socks5只有當主機名或功能變數名稱在配置檔中使用時才影射。設置後,log檔將紀錄主機名,這將降低性能。

  SOCKS5_SERVICENAME
  總是影射埠號到服務名。預設時,socks5只有當服務名在配置檔中使用時才影射。設置後,log檔將紀錄服務名,這將降低性能。

  SOCKS5_PASSWD [password]
  當socks5 daemon連接到其他socks伺服器時,如果採用Username/Password 認證,用它來指定密碼。

  SOCKS5_PIDFILE filename
  指定存儲socks5進程ID的檔案名。Socks5預設存貯PID /tmp/socks5.pid。你可以用—bindintfc參數或設置SOCKS5_BINDINTFC環境變數運行socks5在不同於預設埠的 其他埠。當運行在不同於預設埠的其他埠時,socks5存貯PID/tmp/socks5.pid-port

  SOCKS5_PWDFILE filename
  指定密碼檔。在許多系統中,預設是/etc/socks5.passwd

  SOCKS5_TIMEOUT minutes
  指定連接停頓最長時間。超過最大值後,socks5斷開連接。忽略此值時,預設是15

  SOCKS5_UDPPORTRANGE port1-port2
  指定一個Socks5用來發送UDP包的UDP埠範圍。

  SOCKS5_USER [user id]
  當socks5 daemon連接到其他socks server時,如果採用Username/Password認證,用此變數指定使用者名。

  SOCKS5_V4SUPPORT
  預設時,socks5只接受SOCKS5協議(rfc 1928)的請求。設此變數後,socks5將接受SOCKS V4 協議的請求。

  proxies
  語法:proxy-type dest-host dest-port proxy-list
  說明:當客戶請求的目的為dest-host:dest-port時,Socks5將使用proxy-list中的
  代理伺服器請求資料。

  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]
  說明:通過這兩條語句所定義的規則來進行客戶訪問控制。

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

  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的主機

  port的表示方法
  -:表示任意埠
  service name:用/etc/service中定義的服務名來表示,如telnet
  port number:直接指定數字埠,如80
  [port_startport_end]:指定一個埠範圍,如[1024,6000]表示從埠10246000,(10246000)表示從埠10255999

  auth的值
  n:無使用者認證
  u:使用username/password使用者認證方法
  k:使用Kerberos使用者認證方法
  -:使用任何可用的使用者認證方法

  cmd的值
  -:任何命令
  cconnect
  bbind
  uUDP
  pping
  ttraceroute

  user的值
  -:任何使用者

  proxy的值
  socks5 Socks 5
  socks4 SOCKS 版本4
  noproxy:不使用代理而直接連接

  server的值
  host: 指定伺服器的hostname,使用預設服務埠
  host:port:指定伺服器的hostname和該服務的監聽埠

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Bluelove1968 的頭像
    Bluelove1968

    藍色情懷

    Bluelove1968 發表在 痞客邦 留言(0) 人氣()