Socks5:为什么要使用 SOCKs5,它是什么?
代理或代理服务器是位于您和计算机网络中的服务器之间的计算机。 它充当小型网络(局域网)和大型网络(如互联网)之间的交叉点。 通过观察发送者和接收者之间的通信,代理服务器起作用。 一个端口用于所有传入数据,而另一个端口用于将其转发到网络的其余部分。 代理服务器除了重定向流量外,还通过屏蔽服务器的真实 IP 地址来提供安全性。 为了提高性能,它们还具有缓存请求材料的缓存系统。 代理服务器可以根据 IP 地址限制对特定网站的访问,并对您的数据进行加密,使其在传输过程中不可读。
什么是 SOCKS 代理?
称为 SOCKS 或 Socket Secure 的网络协议通过代表客户端将网络流量发送到真实服务器来实现通过防火墙与服务器的连接。 任何协议或程序产生的任何形式的流量都可以使用 SOCKS 进行路由。
在 SOCKS 代理服务器代表客户端建立到防火墙后的不同服务器的传输控制协议 (TCP) 连接后,客户端和实际服务器交换网络数据包。
防火墙后面的客户端经常被迫使用 SOCKS 代理服务器以便与外部服务器建立 TCP 连接,即使 SOCKS 代理服务器不以任何方式解释客户端和服务器之间的网络流量。 因此,SOCKS 代理通过防火墙重定向用户的用户数据报协议 (UDP) 和 TCP 会话。
您不能使用 SOCKS 来隧道运行在第 5 层以下的协议,因为它是第 5 层协议并且不关心该层以下的开放系统互连 (OSI) 模型中的任何内容。 这包括地址解析协议 (ARP)、Ping 等工具。 因为它在第 5 层运行,所以它可以防止攻击者使用 Nmap 等程序执行扫描,前提是他们的扫描基于半开连接。
SOCKS 可以处理多种请求类型,包括 HTTP、HTTPS、POP3、SMTP 和 FTP,因为它位于第 5 层,位于 SSL(第 7 层)和 TCP/UDP(第 4 层)之间。 因此,SOCKS 可用于文件传输、点对点网络、电子邮件等。
应用程序代理是为第 7 层的某些协议设计的其他几种代理,例如用于解释和转发客户端和服务器之间的 HTTP 或 HTTPS 流量的 HTTP 代理。
只有两个版本存在 SOCKS4 和 SOCKs5。 以下是 SOCKs5 和 SOCKS4 之间的主要变化:
- SOCKS4 和 SOCKS5 都支持 UDP 代理,尽管 SOCKS4 不提供身份验证,而 SOCKS5 提供多种身份验证技术。
- 因为它创建了带有身份验证的完整 TCP 连接并使用安全外壳 (SSH) 加密隧道来中继流量,所以 SOCKs5 代理更安全。
为什么要使用 Socks5
使用带有 SSH 隧道的 SOCKs5 代理具有以下两个主要优点。
1.使用防火墙访问后端服务
集群通常位于防火墙后面的云中,以减少任何潜在的安全漏洞。 可以通过以下两种方式之一访问集群中处于活动状态的任何后端服务,每种方式都有不同的限制:
- 向公众公开后端服务(同时接受所涉及的安全风险);
- 允许流量流向后端服务,请将客户端或用户的 IP 地址列入白名单(但是,当用户的 IP 发生变化时,这不是最佳做法)。
上面两个不利的替代方案可以用使用 SSH 进行动态端口转发的 SOCKs5 代理代替。 在不公开后端服务端口或将特定 IP 列入白名单的情况下,管理员或开发人员可以访问托管在防火墙后面的云中的集群中的任何后端服务,以便从公共网络进行调试、监控和管理。
让我们检查一个使用场景。 当 Hadoop 集群托管在云中时,出于安全原因,管理或监控应用程序 API 或 Web 用户界面 (UI) 端口默认关闭。 您可以使用 SSH 动态端口转发来控制或边缘节点集群以访问这些 API 或 Web UI,因为主节点具有公共 IP,并且默认情况下运行公开的 SSH 服务以允许用户从外部加入。
另一个例子是,如果您正在使用虚拟私有云 (VPC)。 通过限制他们对外界的访问,您可以使用堡垒服务器在 VPC 内安装远程实例,以便可以安全访问。 堡垒主机上只有端口 22 (SSH) 是开放的,可以从外部世界访问。 您可以使用 SSH 动态端口转发(SOCKs5 代理)连接到 VPC 中运行的远程实例。
2. 无需特殊设置
只要您可以通过 SSH 访问集群中的边缘节点或网关,就可以使用 SOCKs5 而无需任何额外配置。 因此,不需要虚拟专用网络的用户可以使用 SSH 隧道访问防火墙后的后端资源,包括管理员和开发人员。
区分 HTTP 代理和 SOCKS 代理
HTTPS 代理仅使用 HTTP 协议,因此它们的功能如何取决于此。 它们最适合出于相同目的使用它们的用户,因为他们通过 Web 浏览器检索信息。
SOCKS 的工作方式与 HTTPS 略有不同。 它不适用于 HTTP 协议。 尽管如此,消费者仍然可以在线阅读材料。 由于它是较低级别的代理,因此 SOCKS 最适用于更广泛的应用程序。
不过,这并不是缺点,因为它们不依赖于特定的网络协议集,从而为用户提供了在任何地方使用该代理的自由。