socks5代理服务是什么意思 有什么做用?

2024-11-29 01:46:08
推荐回答(2个)
回答1:

Socks5是一个实现SOCKS v5协议的代理服务器。作为一个代理服务器,socks5鉴别、授权、处理客户的网络请求。它为客户建立连接到客户所请求的主机。客户机试图连接到网络时,只需连接到socks5的daemon。
接着是认证,客户请求socks5激活网络连接。包括bind,connect,sendto,ping,traceroute。
Socks5是独立于应用层协议的,能应付不同的网络服务。包括telnet,ftp,finger,whois,gopher,WWW。
Socks5 daemon 支持两种授权方式:
Username/Password -- 参考socks5.passwd
Kerberos 5 -- 要求Kerberos libraries的支持。使用Kerberos 5(GSS-API) 的其它信息,请参考Kerberos 的man page。

Socks5的运行方式:
Standalone – default
Preforking - -p
Threaded - -t 如果你的操作系统支持POSIX threads 并且你configure socks5时加了—with-threads 参数。-t参数使socks5运行在threaded 模式。所有的操作系统都对线程数和每进程的打开文件描述符加于限制。
Through inetd - -i,通过inetd启动。
你可以通过一些配置文件、环境变量和参数控制socks5 daemon。请参考socks5.conf(5)文档。这个配置文件的优先级高于环境变量和参数。环境变量设置高于参数设置。

OPTIONS
多个参数用空格分开。
-b [host:port] | --bindintfc [host:port]
host:port 指定socks5运行的主机和端口号用于代替缺省的端口。忽略主机的话,socks5使用0.0.0.0做为主机值。
-d [val] | -- debug[val]
打开debug模式,设置debug值为val。如果忽略此值,socks5仅仅发送警告信息。val 的有效值是1,2,3。如果指定其它值,socks5认为是3。有效值的含义:
1 LOG_NOTICE 不报错
2 LOG_INFO 报告信息
3 LOG_DEBUG 报告用于debug 的信息。
-f | --foreground
前台运行。当运行在standalone模式时,阻止从parent shell分裂。--foreground 一般用于调试
-i | --inetd
通过inetd运行socks5。
-n val | --nchildren val
设置同时存在的最大子进程数为val。Socks5预设最大子进程数为64。使用这个参数降低预设值。你不能设置最大子进程数超过操作系统限制的值。当运行在线程模式时,
socks5忽略此值,在oneshot 模式和 inetd 模式下,此参数也没用。
-o | --oneshot
在前台处理一个请求,打开debug模式,输出到stderr,然后退出。用于调试。
-p | --prefork
preforking进程运行socks5。同时需要 –nchildren 参数控制已forked 的进程数。
-s | --stderr
纪录所有的输出到stderr代替syslog。主要用于debug 模式。
-t | --threaded
运行在线程模式。要求你的操作系统支持POSIX threads 并且编译socks5时加了—with-threads 参数。如果线程模式无效,socks5打印一个错误信息,转到standalone 模式。
-v | --version
打印一条信息(包括当前socks5版本号)到stderr。

ENVIRONMENT
环境变量控制socks5怎样执行。可以在环境或配置文件中设置它们。当环境和配置文件有冲突时,配置文件的优先级高。在配置文件中设置变量,使用如下的语法:
set variable [value]
SOCKS5_BINDINTFC host:port
host:port 指定socks5运行的主机和端口号,用于代替缺省的端口。忽略时,socks5用0.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。可以降低预设置。不能超过64。Socks5运行在线程模式时,忽略此参数。当运行在oneshot或inetd模式时,此参数不发生作用。
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只接受SOCKS V5协议(rfc 1928)的请求。设此变量后,socks5将接受SOCKS V4 协议的请求。
REQUEST FOR COMMENTS
RFC1928 SOCKS protocol Version 5
RFC1929 Username/Password Authentication for SOCKS V5
RFC1961 GSS-API Authentication Method for SOCKS Version 5
SEE ALSO
Socks5.conf(5)

回答2:

SOCKS5介绍
  如果您的机器具有一个合法的 Internet IP 地址, 或者您利用自己机器
  上的调制解调器拨号上网, 可以自由和 Internet 上任何主机沟通, 那么您
  通常不必关心 SOCKS5 协议。
  SOCKS5 协议对于处在内部网络中的机器, 需要透过网络中某些可以联通
  外部 Internet 的机器访问外部时,有用。
  SOCKS5 是一个代理协议,它在使用 TCP/IP协议通讯的前端机器和服务器
  机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet
  网中的服务器,或者使通讯更加安全。
  SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了
  一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,
  前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务
  器将请求转发给真正的服务器。SOCKS5服务器在将通讯请求发送给真正服务器
  的过程中,对于请求数据包本身不加任何改变。SOCKS5服务器接收到真正服务
  器的响应后,也原样转发给前端。
  因此,SOCKS5 协议是一种代理协议,对于各种基于 TCP/IP的应用层协议
  都能够适应,几乎是万能的。它虽然不能理解自己转发的数据的内部结构,但
  是它能够忠实地转发通讯包,完成协议本来要完成的功能。
  与SOCKS5协议不同,HTTP代理是通过HTTP协议进行的,HTTP代理服务器软
  件了解通讯包的内部结构,在转发过程中还要对通讯进行某种程序的修改和转
  换。和HTTP代理协议不同,SOCKS5实际上是一个传输层的代理协议。
  我们可以想象,如果每个具体的应用层协议都要设计对应的代理协议表达
  办法,一个特定的代理服务器无论如何也支持不过来那么多新出现的协议。因
  此,可以说SOCKS5的出现缓解了各种具体协议需要专门设计代理协议的困难局
  面。
  不过,并不是凡是使用基于TCP/IP协议的应用协议的软件,都可以无条件
  地透过SOCKS5服务器进行通讯,还要求前端软件本身具有SOCKS5的接口,才能
  利用SOCKS5代理服务器。
  一个支持SOCKS5协议的前端,通常具有两种运行状态:
  1)直接通讯状态,不使用SOCKS5接口。这时的通讯是针对最终服务器进行
  的。
  2)SOCKS5 状态。 使用 SOCKS5 接口将本来要发送给最终服务器的请求发
  送给 SOCKS5 服务器。在前端和 SOCKS5 服务器进行初始化会话的时候,前端
  告诉了 SOCKS5 服务器关于最终服务器的 IP 地址和端口信息,所以 SOCKS5
  服务器能够忠实按照前端的要求启动和最终服务器的通讯过程。