简介

存在即是合理,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/

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

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

网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5的更多相关文章

  1. web网络协议

    一.OSI七层模型   OSI参考模型是国际标准化组织ISO(International Standards Organization )制定的模型,把计算机与计算机之间的通信分成七个互相连接的协议层 ...

  2. 网络协议 18 - CDN:家门口的小卖铺

    [前五篇]系列文章传送门: 网络协议 13 - HTTPS 协议:加密路上无尽头 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - D ...

  3. 网络协议 10 - Socket 编程(上):实践是检验真理的唯一标准

    系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...

  4. 【转】为什么 MQTT 是最适合物联网的网络协议

    初识 MQTT 为什么 MQTT 是最适合物联网的网络协议 Michael Yuan2017 年 6 月 14 日发布 WeiboGoogle+用电子邮件发送本页面 0 物联网 (IoT) 设备必须连 ...

  5. 【OSI】网络协议模型

    一.网络相关概念 IP地址: 主机 用于 路由寻址  用的数字标识 域名: 便于IP地址记忆 DNS: 通过注册的 域名 指向 ip 的服务 DDNS: 将用户的动态IP地址映射到一个固定的域名解析服 ...

  6. TCP/IP网络协议基础

    实验楼学习网络协议传送门 一.TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电 ...

  7. PHP网络协议相关考点

    HTTP状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. HTTP状态码主要有5种,代表5种不同类型的响应: 1xx:信息性状态码,代表接 ...

  8. 网络协议 18 - CDN

    到现在为止,我们基本上已经了解了网络协议中的大部分常用协议,对于整个 HTTP 请求流程也较为熟悉了.从无到有后,我们就要考虑如何优化“有”这个过程,也就是我们常见的请求优化.而现在的技术栈中,CDN ...

  9. 网络协议之:一定要大写的SOCKS

    目录 简介 SOCKS的故事 SOCKS的历史 SOCKS协议的具体内容 SOCKS4 SOCKS4a SOCKS5 总结 简介 很久很久以前,人们还穿的是草鞋,草鞋虽然穿着舒服,但是不够美观.然后人 ...

随机推荐

  1. 站长管理服务器必读:Ftp、Ftps与Sftp三兄弟的不同与区别以及部署全指引

    文章标题: 站长管理服务器必读:Ftp.Ftps与Sftp三兄弟的不同与区别以及部署全指引 关键字 : ftp,sftp,freesshd,ftps 文章分类: 教程 创建时间: 2020年3月23日 ...

  2. 【ASP.NET Core】体验一下 Mini Web API

    在上一篇水文中,老周给大伙伴们简单演示了通过 Socket 编程的方式控制 MPD (在树莓派上).按照计划,老周还想给大伙伴们演示一下使用 Web API 来封装对 MPD 控制.思路很 Easy, ...

  3. SpringCloud升级之路2020.0.x版-36. 验证断路器正确性

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 上一节我们通过单元测试验证了线程隔离的正确性,这一节我们来验证我们断路器的正确性,主要包括 ...

  4. [luogu7831]Travelling Merchant

    考虑不断找到以下两种类型的边,并维护答案: 1.终点出度为0的边,那么此时即令$ans_{x}=\min(ans_{x},\max(r,ans_{y}-p))$​ 2.(在没有"终点出度为0 ...

  5. [loj3175]排列鞋子

    贪心与最近的鞋子匹配(大小相同且方向相反),记$a_{x}$表示第x双鞋子的左位置,$b_{x}$表示右位置 若$a_{x}>b_{x}$,那么可以交换这两双鞋子并令答案+1,所以不妨设$a_{ ...

  6. ML2021 | (腾讯)PatrickStar:通过基于块的内存管理实现预训练模型的并行训练

    ​  前言  目前比较常见的并行训练是数据并行,这是基于模型能够在一个GPU上存储的前提,而当这个前提无法满足时,则需要将模型放在多个GPU上.现有的一些模型并行方案仍存在许多问题,本文提出了一种名为 ...

  7. 测试平台系列(83) 前置条件支持Redis语句

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上节我们打了个野,解决了一 ...

  8. Python+selenium之键盘和鼠标事件

  9. vite的项目,使用 rollup 打包的方法

    官网资料 构建生产版本--库模式 https://cn.vitejs.dev/guide/build.html#library-mode 详细设置 https://cn.vitejs.dev/conf ...

  10. 「日志」Navicat统计的行数竟然和表实际行数不一致

    背景 近期为了保障线上数据库的稳定性,我决定针对一些大表的历史数据有计划地进行备份迁移,但是呢,发现一个奇特的现象,Navicat统计行数和表自身count统计数竟然不一致!?0.0 Navicat ...