当前位置: 肆参拓扑网 > 知识问答 > socks是什么意思proxy

socks是什么意思proxy

时间:2024-06-12 05:28:49来源:肆参拓扑网

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

服务器能够忠实按照前端的要求启动和最终服务器的通讯过程。

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)

免责声明:文章数据由网友投稿或转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请与本站管理员联系,我们将在第一时间删除内容!
Copyright ©2020-2024 肆参拓扑网 (www.43tp.com) 版权所有 琼ICP备2022010180号-11