V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about
mcfever
V2EX  ›  推广

我是怎么用 SOCKS5 Proxy 解决服务器访问问题的

  •  
  •   mcfever · 3 月 16 日 · 510 次点击

    我是怎么用 SOCKS5 Proxy 解决服务器访问问题的

    image.png

    很多程序员第一次接触 SOCKS5 Proxy,其实并不是专门去研究这个协议,而是在解决一个实际问题的时候“顺带用上了”。

    我第一次真正理解 SOCKS5 ,是在一次服务器运维的时候。


    一个很真实的场景

    那天我需要访问一台公司内网服务器。

    结构大概是这样的:

    我的电脑 → 跳板机 → 内网服务器

    内网服务器只允许 跳板机访问,外部是完全无法连接的。

    如果直接 SSH:

    ssh user@inner-server

    是一定会失败的,因为内网服务器根本不在公网。


    传统做法:先登录跳板机

    通常的做法是:

    ssh user@jump-server

    然后在跳板机里再执行:

    ssh user@inner-server

    这种方式当然可以用,但有几个问题:

    • 只能在终端里操作
    • 不能方便访问其它服务
    • 浏览器 / 数据库 / Git 都用不了

    于是我开始找一种更灵活的方式。


    用 SSH 创建一个 SOCKS5 Proxy

    后来发现 SSH 其实自带一个非常强大的功能:

    动态端口转发

    只需要一条命令:

    ssh -D 1080 user@jump-server

    这条命令会在本地创建一个代理:

    127.0.0.1:1080

    这个端口就是一个 SOCKS5 Proxy

    也就是说:

    我的电脑 → SOCKS5 代理 → 跳板机 → 内网服务器

    所有流量都会通过跳板机转发。


    SOCKS5 在真实开发中的用途

    一旦建立了 SOCKS5 代理,你会发现很多事情都变简单了。

    例如:

    浏览器访问内网系统
    Git 拉取内网仓库
    数据库客户端连接内网数据库
    调试服务器上的 Web 服务

    只要软件支持 SOCKS5 ,都可以通过这个代理访问内网资源。

    换句话说:

    你的电脑就像直接进入了内网环境。


    现实问题:服务器越来越多

    一开始只有一两台服务器的时候,其实问题不大。

    很多事情直接用命令就可以解决,例如:

    ssh -D 1080 user@jump-server

    或者:

    ssh -L 3306:127.0.0.1:3306 user@server

    这些命令都很常见。

    但随着服务器越来越多,事情就会变得复杂起来。

    例如你可能会遇到这样的情况:

    • 服务器 A 需要 SOCKS5 代理
    • 服务器 B 需要端口转发
    • 服务器 C 需要跳板机登录
    • 服务器 D 需要 VNC

    每一种连接方式都对应不同的命令。

    慢慢你就会发现:

    很多时间其实花在 记命令和管理连接信息 上。

    例如:

    • 哪台服务器用哪个端口
    • 哪个服务走哪个跳板
    • 哪个代理是 1080 ,哪个是 1081

    如果服务器数量增加,这些信息就很容易混乱。

    很多开发者最后会变成这样:

    • 用笔记软件记录命令
    • 用 Excel 管服务器信息
    • 用不同工具连接不同协议

    久而久之,运维工作就变得比较零散。


    为什么很多人开始使用图形化工具

    所以后来越来越多开发者开始使用 图形化的远程管理工具

    这些工具会把连接信息统一管理,例如:

    • 服务器 IP
    • 用户名
    • 端口
    • 协议类型

    需要连接的时候,只需要点击一下即可,而不需要每次重新输入一长串命令。

    例如:

    • SSH
    • RDP
    • VNC
    • SFTP

    都可以在一个工具里统一管理。

    当服务器数量变多时,这种方式会明显提高效率。


    一体化工具的思路

    现在也有不少这样的工具。

    不同的人会有不同的习惯:

    有的人习惯纯命令行
    有的人习惯图形化工具

    其实没有绝对的好坏,只是工作方式不同。

    如果选择图形化方案,很多人会使用一体化远程工具。

    例如像 DartShell 这样的工具,就是把常见远程协议整合在一起:

    • SSH
    • RDP
    • VNC
    • SFTP

    产品地址: https://dartshell.com

    服务器信息只需要保存一次,需要的时候直接连接即可。

    对于经常管理服务器的人来说,这种方式通常会更加高效。

    当然,这类工具也有很多选择,大家根据自己的习惯使用即可。


    写在最后

    很多开发者每天都在使用 SOCKS5 Proxy ,例如:

    • SSH 动态代理
    • 跳板机访问内网
    • 调试远程服务
    • 内网 Git 仓库访问

    但很多人只是照着教程在用,并没有真正理解它。

    如果你经常需要管理服务器、远程调试或者访问内网资源,理解 SOCKS5 的使用方式,会非常有帮助。

    churchmice
        1
    churchmice  
       3 月 16 日
    你这么干已经违规了
    既然已经违规了,不妨搞大一点,直接把跳板机加上路由功能,sock 啥的都不用
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   4917 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:55 · PVG 11:55 · LAX 20:55 · JFK 23:55
    ♥ Do have faith in what you're doing.