了解SOCKS5协议RFC

时间:2016-04-23 10:08:29

标签: tcp network-protocols socks

我正在阅读SOCKS5 RFC,它有:

  

CONNECT

     

在对CONNECT的回复中,BND.PORT包含该端口号      服务器分配连接到目标主机,而BND.ADDR      包含关联的IP地址。提供的BND.ADDR经常是      与客户端用于到达SOCKS的IP地址不同      服务器,,因为这些服务器通常是多宿主的。这是预料之中的      SOCKS服务器将使用DST.ADDR和DST.PORT,以及      评估CONNECT时的客户端源地址和端口      请求

对于本段的最后一部分,我有两个问题:

  1. 该文档声明SOCKS服务器通常是多宿主的,并且将向客户端回复与客户端最初连接的地址和端口不同的绑定地址和端口。这是否意味着客户端连接的SOCKS服务器将连接重定向到另一个SOCKS服务器?如果是这样,让客户感知重定向的SOCKS服务器的存在是什么意思?客户端通常会对SOCKS服务器回复的绑定地址和端口做什么?
  2. doc说明预计SOCKS服务器将使用DST.ADDR和DST.PORT,以及评估CONNECT请求的客户端源地址和端口,它究竟是什么意思通过评估 CONNECT请求?如果我正在实施SOCKS服务器,我应该在评估过程中做些什么?

2 个答案:

答案 0 :(得分:2)

  1. 否。这意味着服务器有2个(或更多)网卡/连接 - 您在cardA上与服务器通信,但当该服务器连接到下游设备时,它使用cardB。
  2. 这真的取决于你...也许你想要将某些客户/服务器/端口列入黑名单/白名单(例如,只允许来自您所在国家/地区的客户,或仅允许连接到特定国家/地区)。好的例子是不让客户端连接回自身(?)。只是一个猜测。通常RFC很好地说“必须,可能,不得等”......如果它说“预期”,对我来说听起来像'可能',这基本上意味着“可以,但不必”。

答案 1 :(得分:2)

  1. SOCKS代理是多宿主的,因为它们通常安装在网络边界,如防火墙。客户端连接到防火墙的内部接口,但传出地址是外部接口。由于某些协议(如FTP)需要包含外部可见IP地址和带内端口(请参阅FTP数据传输,即PORT和PASV),因此需要知道此外部可见的IP和端口。
  2. 普通的socks代理将连接客户想要的地方,即DST。但是,当配置上游代理或防火墙ACL说不同时,代理可能表现不同。