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 代理服务器

bash 复制代码
ssh -f -N -D 0.0.0.0:1080 localhost 

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

bash 复制代码
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)

bash 复制代码
curl --socks5 192.168.1.36:1080 http://www.baidu.com

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

bash 复制代码
curl --socks5-hostname 192.168.1.36:1080 http://www.baidu.com

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

参考

相关推荐
Rabitebla7 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
Decay__8 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
天远API12 小时前
零信任架构实战:基于天远运营商三要素详版V即时版构建自动化消费电子大促电商平台高价值权益秒杀与优惠券防羊毛高并发实名核验网关
运维·人工智能·架构·自动化
Android系统攻城狮12 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
程序员初一12 小时前
8080 打不开的四层定位:监听地址、ufw、DOCKER 链、安全组
linux·ssh
程序开发阿元12 小时前
swappiness 60 和 10 差在哪:一台 1C1G 的三轮对比
linux·ssh
无足鸟ICT13 小时前
【RHCA+】mpstat命令(监控CPU)
linux
乐维_lwops13 小时前
案例解读:大型综合性科创产业园运维监控落地实践
运维·网络·人工智能·安全·it监控·国产运维智能体
GeW14 小时前
新质生产力Linux和数据库为啥这么关键
linux
番茄啊14 小时前
linux 开启xftp连接
linux·运维·服务器