前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5

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

作者头像
程序那些事
发布2021-12-09 20:47:22
1.1K0
发布2021-12-09 20:47:22
举报
文章被收录于专栏:程序那些事程序那些事

简介

存在即是合理,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服务的命令:

代码语言:javascript
复制
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这台机子上:

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

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

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

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

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

代码语言:javascript
复制
ncat –proxy 127.0.0.1:2000 –proxy-type socks5 www.flydean.com 80 -nv

总结

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 为什么要使用SOCKS
  • SOCKS5
  • SOCKS5的使用
  • 总结
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档