A_clash_B

受限服务器如何借助另一台机器使用 Clash 代理

在一些服务器环境中,业务机器只能通过 22 端口(SSH)与外界通信,无法直接访问公网。
这时可以借助另一台可联网的服务器,给受限服务器“转出”一条代理通道。

场景

有两台 Linux 服务器:

  • A 服务器(受限机)
    • 只能走 SSH(22 端口)
    • 不能直接访问外网(例如 Google)
  • B 服务器(代理机)
    • 已运行 Clash
    • HTTP 代理端口为 7890

目标:让 A 服务器通过 B 服务器访问外网。

整体思路

核心是两步:

  1. 先让 B 服务器上的 Clash 对外可用。
  2. A 服务器按网络条件选择:
    • 能直连 B:7890:直接用 HTTP 代理。
    • 不能直连 B:7890:通过 SSH 隧道把本地端口转发到 B:7890。

步骤一:配置 B 服务器 Clash

编辑 Clash 配置文件(通常为 config.yaml):

1
2
3
4
port: 7890
socks-port: 7891
allow-lan: true
bind-address: 0.0.0.0

重启 Clash 后,检查端口监听状态:

1
ss -lntp | grep 7890

如果输出中出现 *:7890(或 0.0.0.0:7890),说明该端口已对外监听。

开启防火墙:

1
sudo ufw allow 7890

步骤二:在 A 服务器测试是否可直连

1
nc -vz 218.194.48.117 7890

如果返回 Connection succeeded,说明 A 可以直接访问 B 的代理端口,此时直接设置环境变量即可:

1
2
export http_proxy="http://218.194.48.117:7890"
export https_proxy="http://218.194.48.117:7890"

步骤三:验证

1
wget -O- https://www.google.com --timeout=5