分享
 
 
 

在Linux上配置和实现SOCKS v5

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

一、 SOCKS概述

SOCKS其实是一种网络代理协议。该协议所描述的是一种内部主机(使用私有ip地址)通过SOCKS服务器获得完全的Internet访问的方法。具体说来是这样一个环境:用一台运行SOCKS的服务器(双宿主主机)连接内部网和Internet,内部网主机使用的都是私有的ip地址,内部网主机请求访问Internet时,首先和SOCKS服务器建立一个SOCKS通道,然后再将请求通过这个通道发送给SOCKS服务器,SOCKS服务器在收到客户请求后,向客户请求的Internet主机发出请求,得到相应后,SOCKS服务器再通过原先建立的SOCKS通道将数据返回给客户。当然在建立SOCKS通道的过程中可能有一个用户认证的过程。

SOCKS和一般的应用层代理服务器是完全不同的。一般的应用层代理服务器工作在应用层,并且针对不用的网络应用提供不同的处理方法,比如HTTP、FTP、SMTP等,这样,一旦有新的网络应用出现时,应用层代理服务器就不能提供对该应用的代理,因此应用层代理服务器的可扩展性并不好;与应用层代理服务器不同的是,SOCKS代理服务器旨在提供一种广义的代理服务,它与具体的应用无关,不管再出现什么新的应用都能提供代理服务,因为SOCKS代理工作再线路层(即应用层和传输层之间),这和单纯工作在网络层或传输层的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-methods所定义的用户认证方法。对于没有定义认证方法的客户将使用任何可以使用的认证方法。

3. interface:

语法:interface hostpatern portpattern interface-address

说明:来自source-host:source-port的客户连接由interface-address处理;目的地址为source-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.168.1. - - -

说明:允许来自192.168.1.的任何经过用户认证的连接

更多的例子请参考以下资源:http://www.socks.nec.com/reference/socks5.html

四、 SOCKS v5一些常见问题的说明

1. windows客户端的配置

有些windows的应用程序,如IE、OICQ等等本身就支持SOCKS代理服务器,

但是更多的windows应用程序是不提供对SOCKS代理服务器的支持的,这时候

我们就可以利用一些相应的工具来使得这些应用程序可以使用SOCKS代理服务

器。其中最常用的工具sockscap,可以从以下的网址下载sockscap:

http://www.socks.nec.com/cgi-bin/download.pl.

2. 用户认证问题

SOCKS v5已经具有了用户认证功能,诸如IE等应用程序虽然提供了对SOCKS

代理服务器的支持,但是并不能进行用户认证,这种情况下我们也只能用sockscap

等工具来提供IE的用户认证接口。需要注意的是,SOCKS的认证过程并不会象

squid一样弹出认证窗口。

3. 运行模式问题

SOCKS v5具有以下几种运行模式:

standalont:这是SOCKS v5缺省的运行模式

preforking:该模式适合服务器资源有限的情况,因为我们可以事先指定运行的子

进程数。可以用-p选项指定SOCKS以preforking模式运行。

inetd:和telnet等服务一样通过inetd超级服务器运行SOCKS

threaded:在linux平台上,我们推荐使用该模式运行SOCKS,这样能获得最佳

性能。

4. 超时问题

在一个客户会话空闲超过15分钟后,该会话将被断开,可以使用

SOCKS5_TIMEOUT 变量改变该值。

5. 绑定失败问题

有时候会出现Bind failed for xxx.xxx.xxx.xxx: ...的?nbsp; 在Linux上配置和实现SOCKS v5

一、 SOCKS概述

SOCKS其实是一种网络代理协议。该协议所描述的是一种内部主机(使用私有ip地址)通过SOCKS服务器获得完全的Internet访问的方法。具体说来是这样一个环境:用一台运行SOCKS的服务器(双宿主主机)连接内部网和Internet,内部网主机使用的都是私有的ip地址,内部网主机请求访问Internet时,首先和SOCKS服务器建立一个SOCKS通道,然后再将请求通过这个通道发送给SOCKS服务器,SOCKS服务器在收到客户请求后,向客户请求的Internet主机发出请求,得到相应后,SOCKS服务器再通过原先建立的SOCKS通道将数据返回给客户。当然在建立SOCKS通道的过程中可能有一个用户认证的过程。

SOCKS和一般的应用层代理服务器是完全不同的。一般的应用层代理服务器工作在应用层,并且针对不用的网络应用提供不同的处理方法,比如HTTP、FTP、SMTP等,这样,一旦有新的网络应用出现时,应用层代理服务器就不能提供对该应用的代理,因此应用层代理服务器的可扩展性并不好;与应用层代理服务器不同的是,SOCKS代理服务器旨在提供一种广义的代理服务,它与具体的应用无关,不管再出现什么新的应用都能提供代理服务,因为SOCKS代理工作再线路层(即应用层和传输层之间),这和单纯工作在网络层或传输层的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-methods所定义的用户认证方法。对于没有定义认证方法的客户将使用任何可以使用的认证方法。

3. interface:

语法:interface hostpatern portpattern interface-address

说明:来自source-host:source-port的客户连接由interface-address处理;目的地址为source-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.168.1. - - -

说明:允许来自192.168.1.的任何经过用户认证的连接

更多的例子请参考以下资源:http://www.socks.nec.com/reference/socks5.html

四、 SOCKS v5一些常见问题的说明

1. windows客户端的配置

有些windows的应用程序,如IE、OICQ等等本身就支持SOCKS代理服务器,

但是更多的windows应用程序是不提供对SOCKS代理服务器的支持的,这时候

我们就可以利用一些相应的工具来使得这些应用程序可以使用SOCKS代理服务

器。其中最常用的工具sockscap,可以从以下的网址下载sockscap:

http://www.socks.nec.com/cgi-bin/download.pl.

2. 用户认证问题

SOCKS v5已经具有了用户认证功能,诸如IE等应用程序虽然提供了对SOCKS

代理服务器的支持,但是并不能进行用户认证,这种情况下我们也只能用sockscap

等工具来提供IE的用户认证接口。需要注意的是,SOCKS的认证过程并不会象

squid一样弹出认证窗口。

3. 运行模式问题

SOCKS v5具有以下几种运行模式:

standalont:这是SOCKS v5缺省的运行模式

preforking:该模式适合服务器资源有限的情况,因为我们可以事先指定运行的子

进程数。可以用-p选项指定SOCKS以preforking模式运行。

inetd:和telnet等服务一样通过inetd超级服务器运行SOCKS

threaded:在linux平台上,我们推荐使用该模式运行SOCKS,这样能获得最佳

性能。

4. 超时问题

在一个客户会话空闲超过15分钟后,该会话将被断开,可以使用

SOCKS5_TIMEOUT 变量改变该值。

5. 绑定失败问题

有时候会出现Bind failed for xxx.xxx.xxx.xxx: ...的提示,通常这是因为SOCKS所绑定的端口已被其他程序所使用的缘故,可以通过更改该端口的值来解决这类问

题。

6. SOCKS v5的日子问题

SOCKS v5的日志缺省为/var/log/messages,我们可以通过重新编译SOCKS v5

来将SOCKS v5日志单独记录到一个文件中。具体请参考README文件。

更多的配置实例请参考http://www.socks.nec.com/reference/socks5.html.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有