正向代理、反向代理与SSH端口转发

代理类型

  1. 正向代理 (Forward Proxy)

    • 工作方式: 客户端 主动配置 代理服务器地址。客户端的请求先发送给代理,代理再转发给目标服务器。
    • 目的: 主要为了 访问 客户端原本无法直接访问的资源(如突破网络限制),或隐藏客户端身份。客户端清楚代理的存在。
  2. 反向代理 (Reverse Proxy)

    • 工作方式: 客户端 直接访问 代理服务器(以为它就是目标服务器),无需配置。代理服务器将请求转发给后端的真实服务器。
    • 目的: 主要为了 保护和管理 后端服务器,如实现负载均衡、安全防护(隐藏真实IP)、SSL卸载等。客户端不感知真实服务器的存在。
  3. 透明代理 (Transparent Proxy)

    • 工作方式: 在网络层(如网关)自动拦截并处理流量,客户端无需任何配置 且通常不感知其存在。
    • 目的: 常用于网络内容过滤、访问控制或强制执行网络策略。

SSH 端口转发 (SSH Tunneling)

利用 SSH 安全连接创建端口转发通道,实现类似代理的功能。命令通常在 SSH 客户端机器上执行。

  1. 本地转发 (-L)

    • 命令: ssh -L <本地端口>:<目标主机>:<目标端口> <SSH服务器>
    • 作用: 将发往 本机指定端口 的请求,通过 <SSH服务器> 转发到 <目标主机><目标端口>
    • 场景: 从本地访问远程网络(SSH服务器可访问的网络)中的服务。
  2. 远程转发 (-R)

    • 命令: ssh -R <远程端口>:<目标主机>:<目标端口> <SSH服务器>
    • 作用: 将发往 <SSH服务器> 上指定 <远程端口> 的请求,通过 SSH 隧道转发回 执行 ssh -R 命令的机器 可访问的 <目标主机><目标端口><目标主机> 常为 127.0.0.1,指执行命令的机器自身)。
    • 场景: 将本地网络的服务暴露给远程网络访问。
  3. 动态转发 (-D)

    • 命令: ssh -D <本地端口> <SSH服务器>
    • 作用: 在 本机指定端口 创建一个 SOCKS 代理。所有通过此 SOCKS 代理的流量都将通过 <SSH服务器> 转发。
    • 场景: 提供通用的代理服务,如在不安全网络下加密浏览流量(注意:仅加密 客户端 <-> SSH服务器 段)。可配合 Polipo 等工具将 SOCKS 代理转为 HTTP/HTTPS 代理。