写点什么

网络协议之: 还在用 HTTP 代理? 弱爆了! 快试试 SOCKS5

作者:程序那些事
  • 2021 年 12 月 06 日
  • 本文字数:1769 字

    阅读完需:约 6 分钟

网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5

简介

存在即是合理,SOCKS5 的出现是为了解决 SOCKS4 中不支持身份认证的大问题而出现的,毕竟大家对网络中的安全越来越重视了。没有认证的网络就好像是生活在摄像头下的人生,毫无隐私可言,实在是太可怕了。

今天给大家深入讲解一下 SOCKS5 和它的应用。

为什么要使用 SOCKS

SOCKS 是一种代理服务协议,为什么会要有代理服务协议呢?

因为在现代网络中,很多情况下,由于网络或者防火墙的原因,我们很难直接去访问对方的网络,所以需要一种代理机制来充当本地网络和大型网络之间的网关。

代理服务器通过拦截发送方和接收方之间的连接来工作。 所有传入的数据都通过一个端口进入,并通过另一个端口转发到目标网络中。

当然流量转发是代理服务器的最基本的功能,代理服务器还可以通过隐藏客户端或者服务器端的 IP 地址,从而实现网络访问的安全性。另外因为代理服务器充当了目标服务器的代理,所以可以将代理服务器作为目标服务器的缓存服务器,从而提高网络访问效率。

另外代理服务器还可以通过对数据进行拦截,从而进行一些特殊的操作,比如对数据进行加密,从而保证数据传输的安全性。另外代理服务器还可以对客户端的访问进行控制,比如可以阻止客户端访问某个 IP 地址或者网站。

而 SOCKS 就是一种代理协议的标准,通过这种协议,可以实现标准的代理服务。

在企业级网络中,为了保证企业网络的安全性,通常会有安装上防火墙,这样虽然保证了企业网络的安全,但是也阻止了客户端对外界网络的访问。所以需要一个 SOCKS 代理服务器来代替客户端和目标网站之间建立连接和进行数据通信。

SOCKS 代理可以绕过防火墙来中继用户的 TCP 和 UDP 会话。

SOCKS5

因为 SOCKS 是运行在 OSI 七层协议中的第五层会话层,所以它可以处理包括 HTTP、HTTPS、POP3、SMTP 和 FTP 等多种请求类型,所以可以使用 SOCKS 协议来进行邮件发送、网页浏览、文件传输等。

相对于 SOCK4 来说,SOCKS5 加入了认证机制,所以可以通过身份验证建立完整的 TCP 连接,SOCKS5 通常和 SSH 一起使用,通过使用 SSH 加密隧道方法来中继流量。

那么为什么我们需要使用 SOCKS5 呢?

首先我们可以通过 SOCKS5 来访问防火墙后面的服务。

一般来说,为了安全起见,服务器都放在防火墙后面,但是外部的人想要访问该服务器的话,有两种办法。第一种就是去掉防火墙,向公众开放该服务,但是这样会带来安全的风险。第二种就是通过设置客户端的 IP 白名单,来过滤非法的访问请求。但是客户端的 IP 地址通常是会发送变化的,所以这种做法也是不可行的。

如果使用 SOCKS5 的 SSH 代理,就可以通过代理服务器来访问防火墙后面的服务,从而保证服务的安全性。

另外,通过建立 SSH 隧道,在其中使用 SOCKS5 协议将各种 TCP 和 UDP 流量路由到各自的服务,那么只需要使用 SSH,而不需要使用其他 VPN 网络。所以使用起来比较简单。

最后,因为 SOCKS5 只是对数据进行转发,所以出错的可能性更小,性能会更高。

SOCKS5 的使用

上面我们介绍了 SOCKS5 的各种优点,那么 SOCKS5 到底该如何使用呢?接下来向大家介绍一个使用 ssh 命令搭建一个简单的 SOCKS5 代理服务器。

先看下 SSH 建立 SOCKS 服务的命令:

ssh -f -C -N -D bindaddress:port name@server
复制代码

-f 表示 SSH 作为守护进程进入后台执行。

-N 表示不执行远程命令,只用于端口转发。

-D 表示是端口上的动态转发。这个命令支持 SOCKS4 和 SOCKS5。

-C 表示发送前压缩数据。

bindaddress 本地服务器的绑定地址。

port 表示本地服务器的指定侦听端口。

name 表示 ssh 服务器登录名。

server 表示 ssh 服务器地址。

上面命令的意思是,在本机建立端口绑定,然后将其转发到远程的代理服务器上。

比如我们可以在本机开一个 2000 的端口,将其转发到远程 168.121.100.23 这台机子上:

ssh -f -N -D 0.0.0.0:2000 root@168.121.100.23
复制代码

有了代理服务器之后,就可以使用了,首先介绍一个怎么在 curl 命令中使用 SOCKS 代理。

我们想通过代理服务器,访问 www.flydean.com,该怎么做呢?

curl -x socks5h://localhost:2000 -v -k -X GET http://www.flydean.com:80
复制代码

要想检测 SOCKS 的连接,还可以使用 netcat 命令如下:

ncat –proxy 127.0.0.1:2000 –proxy-type socks5 www.flydean.com 80 -nv

复制代码

总结

SOCKS5 是一个非常有用的代理协议,你可以在需要的时候用上它。你懂的!

本文已收录于 http://www.flydean.com/10-socks5-more/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

发布于: 13 小时前阅读数: 11
用户头像

关注公众号:程序那些事,更多精彩等着你! 2020.06.07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5