当前位置: 首页 > news >正文

Linux设置socks代理

公司里绝大多数主机已经禁止外网访问,仅保留一台主机设置socks作为代理服务器。如下为对socks这一概念的学习整理

什么是socks

是一种OSI模型下会话层的协议,位于表示层与传输层之间,作用是:

exchanges network packets between a client and server through a proxy server

出现原因

RFC 1928 这里解释的已经很清楚

The use of network firewalls, systems that effectively isolate an organizations internal network structure from an exterior network, such as the INTERNET is becoming increasingly popular. These firewall systems typically act as application-layer gateways between networks, usually offering controlled TELNET, FTP, and SMTP access. With the emergence of more sophisticated application layer protocols designed to facilitate global information discovery, there exists a need to provide a general framework for these protocols to transparently and securely traverse a firewall

由于工作在会话层,传输层在它下面,所以它的适应场景就要比HTTP 代理灵活,可以代理更多类型的应用数据,日常开发最常用的那些工作在应用层的协议就不在话下了

配置

socks的配置比较简单,可以简单(这是最简单的情况)分为不能访问外网的客户端服务器和可以访问外网代理服务器(这两者之间内网可联通)

代理服务器设置

通过SSH 在本地启动一个 SOCKS 代理服务器

ssh -f -N -D 0.0.0.0:1080 localhost 

在这种设置下,客户端通过这个代理发送的请求,都会通过本地机器的网络接口转发出去。启动后可以验证

netstat -tuln | grep 1080
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN
客户端设置

对于大多数的企业软件来说,其本身自带proxy设置,此时填入我们代理服务器的IP和开启的端口(一般是1080)即可(当然,如果做的更加精细些,可以加用户密码认证,这里自行查找命令参数),如idea
在这里插入图片描述
亦或是Dbvisualizer
在这里插入图片描述

一个curl的例子

之前使用如下命令一直无法运行curl(192.168.1.36是代理服务器IP)

curl --socks5 192.168.1.36:1080 http://www.baidu.com

查找原因是curl默认走的当前机器DNS解析,当前机器无法访问外网,自然行不通。需要额外增加--socks5-hostname,通过 SOCKS 代理服务器处理 DNS 解析,确保即使本地网络无法访问,依然能够成功解析目标网站的域名

curl --socks5-hostname 192.168.1.36:1080 http://www.baidu.com

当时在验证代理服务器的可用性时,这个问题让我卡了很久。若遇到类似的情况,比如其他命令需要通过代理访问外部网络,可以参考这个方法(其他命令可能有专属的参数表示)来解决 DNS 解析的问题

参考

  • https://zh.wikipedia.org/zh-sg/SOCKS
  • https://datatracker.ietf.org/doc/html/rfc1928
  • https://www.freecodecamp.org/chinese/news/osi-model-networking-layers/

http://www.mrgr.cn/news/71960.html

相关文章:

  • 设计模式(四)装饰器模式与命令模式
  • SpringBoot单体服务无感更新启动,动态检测端口号并动态更新
  • 【嵌入式】ESP32开发(一)ESP-IDF概述
  • 【 ElementUI 组件Steps 步骤条使用新手详细教程】
  • C语言 | Leetcode C语言题解之第554题砖墙
  • LeetCode100之相交链表(160)--Java
  • Mapwindow5代码BUG记录1
  • AI与育儿领域的融合——探索未来的可能性
  • 计算机毕业设计Python+大模型斗鱼直播可视化 直播预测 直播爬虫 直播数据分析 直播大数据 大数据毕业设计 机器学习 深度学习
  • mpeg ps媒体流文件解析工具
  • 羲和数据集收集器1.4
  • PyQt入门指南五十五 持续集成与部署
  • Java-sec-code-SSRF攻击
  • Day 63 || 拓扑排序、dijkstra
  • 最新版【H5商城直接部署】
  • npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)
  • Javascript高级—DOM树的深度遍历和广度遍历
  • PyQt入门指南五十四 依赖管理与打包发布
  • Android Framework AMS(14)ContentProvider分析-1(CP组件应用及开机启动注册流程解读)
  • 深入FastAPI:路径参数、查询参数及其检校
  • 计算机毕业设计Hadoop+Spark高考推荐系统 高考分数线预测 知识图谱 高考数据分析可视化 高考大数据 大数据毕业设计 Hadoop 深度学习
  • 元宇宙及其技术
  • Flink CDC(SQL Client)连接 MySQL 数据库教程
  • 数据结构中的抽象数据类型、逻辑结构、存储结构等到底是什么?
  • Linux学习笔记之shell快速入门及相关变量
  • PYNQ 框架 - 中断(INTR)驱动