服务器监听clash端口加速外网访问

1294 字
6 分钟
服务器监听clash端口加速外网访问

Windows 本机 Clash + 服务器代理完整流程#

一、整体原理#

现在的结构是:

服务器 → Windows 本机 Clash 代理 → GitHub / Hugging Face / 外网

目的:让服务器走 Windows 本机 Clash,从而加速 GitHub、HuggingFace、大模型下载等操作。

  • 学校服务器:可以直接访问 Windows 的内网 IP(如 10.21.200.105)
  • 云服务器 / AutoDL / 公网 VPS:通常访问不到 Windows 内网 IP,需要 SSH 反向端口转发。

二、Windows 本机配置#

1. Clash 设置#

  • 打开 Clash / Clash Verge / Mihomo Party

  • 开启设置里的Clash设置的 Allow LAN / 允许局域网访问

  • HTTP 端口:7897

    此时你的服务器可以访问:

http://<Windows_IP>:7897

2. 查 Windows IP#

Terminal window
ipconfig

选择WLAN:

IPv4 地址: 10.21.200.105

3. 放行防火墙端口#

在本机powershell的管理员模式运行,但是一般应该不需要

Terminal window
New-NetFirewallRule -DisplayName "Clash LAN 7897" -Direction Inbound -Protocol TCP -LocalPort 7897 -Action Allow

取消防火墙规则:

Terminal window
Remove-NetFirewallRule -DisplayName "Clash LAN 7897"

4. 测试服务器#

Terminal window
curl -x http://10.21.200.105:7897 https://www.google.com -I
如果好了的话会显示200,不好的话会显示超时

三、服务器端配置#

1. 创建 proxy_on.sh#

Terminal window
nano ~/proxy_on.sh

内容:

#!/usr/bin/env bash
PROXY_HOST="10.21.200.105" # 学校服务器可直接访问,ip可能会一直变,但是在本次开机的时候不会,以后每次开机都重新检查一遍,如果变了就直接替换即可
PROXY_PORT="7897"
PROXY_URL="http://${PROXY_HOST}:${PROXY_PORT}"
# 环境变量
export http_proxy="$PROXY_URL"
export https_proxy="$PROXY_URL"
export HTTP_PROXY="$PROXY_URL"
export HTTPS_PROXY="$PROXY_URL"
export no_proxy="localhost,127.0.0.1,::1"
export NO_PROXY="localhost,127.0.0.1,::1"
# Git 全局代理
git config --global http.proxy "$PROXY_URL"
git config --global https.proxy "$PROXY_URL"
echo "Proxy enabled: $PROXY_URL"
echo "Testing GitHub..."
curl -I https://github.com --connect-timeout 10

授权:

Terminal window
chmod +x ~/proxy_on.sh

开启代理:

Terminal window
source ~/proxy_on.sh

2. 创建 proxy_off.sh#

Terminal window
nano ~/proxy_off.sh

内容:

#!/usr/bin/env bash
# 取消环境变量
unset http_proxy
unset https_proxy
unset HTTP_PROXY
unset HTTPS_PROXY
unset no_proxy
unset NO_PROXY
# 取消 Git 代理
git config --global --unset http.proxy 2>/dev/null
git config --global --unset https.proxy 2>/dev/null
echo "Proxy disabled."

授权:

Terminal window
chmod +x ~/proxy_off.sh

关闭代理:

Terminal window
source ~/proxy_off.sh

四、如何测试#

  1. 环境变量生效
Terminal window
env | grep -i proxy
  1. 测试 GitHub / Hugging Face
Terminal window
curl https://github.com -I
curl https://huggingface.co -I
  1. 测试 Git
Terminal window
git config --global --get http.proxy
git config --global --get https.proxy
git clone https://github.com/xxx/xxx.git
  1. 测试 Hugging Face 下载
Terminal window
hf download Qwen/Qwen2.5-7B-Instruct --local-dir ./Qwen2.5-7B-Instruct

五、proxy_on 的作用范围#

  • 当前 shell 以及子进程生效

    只要你在当前终端 source ~/proxy_on.sh,大部分命令(curl、wget、git、pip、huggingface_hub 等)都会自动走代理。

  • Git 配置是全局的

    执行一次 git config --global http.proxy ...,其他终端也能生效,直到你执行 proxy_off.sh

  • 新开终端需要重新 source ~/proxy_on.sh

    因为环境变量只对当前终端生效。

  • 不需要单独为 GitHub / HuggingFace 再额外设置 ,只要代理环境变量和 Git 配置都设置好即可。


六、学校服务器 vs 云服务器区别#

场景可访问 Windows IPPROXY_HOST说明
学校服务器✅ 可以10.21.200.105直接用 LAN IP 访问 Windows Clash
云服务器 / AutoDL / 公网 VPS❌ 不可127.0.0.1需要建立 SSH 反向端口转发,云服务器本地 127.0.0.1:7897 → Windows Clash

云服务器示例#

在 Windows PowerShell:

Terminal window
ssh -R 7897:127.0.0.1:7897 username@云服务器IP

然后云服务器上 继续proxy_on和proxy_off的操作:

#!/usr/bin/env bash
PROXY_HOST="127.0.0.1" #
PROXY_PORT="7897"
PROXY_URL="http://${PROXY_HOST}:${PROXY_PORT}"
# 环境变量
export http_proxy="$PROXY_URL"
export https_proxy="$PROXY_URL"
export HTTP_PROXY="$PROXY_URL"
export HTTPS_PROXY="$PROXY_URL"
export no_proxy="localhost,127.0.0.1,::1"
export NO_PROXY="localhost,127.0.0.1,::1"
# Git 全局代理
git config --global http.proxy "$PROXY_URL"
git config --global https.proxy "$PROXY_URL"
echo "Proxy enabled: $PROXY_URL"
echo "Testing GitHub..."
curl -I https://github.com --connect-timeout 10

1. 为什么云服务器必须要 SSH -R?#

云服务器上的:

127.0.0.1

指的是 云服务器自己 ,不是你的 Windows 电脑。

你的 Clash 跑在 Windows 上:

Windows 127.0.0.1:7897

云服务器默认访问不到这个地址。

所以要用:

ssh -R 7897:127.0.0.1:7897 username@云服务器IP

这条命令的作用是:在云服务器上开一个本地端口:

云服务器 127.0.0.1:7897

然后把它转发到:

Windows 127.0.0.1:7897

所以云服务器才能用:

PROXY_URL="http://127.0.0.1:7897"

2. 如果已经连好了,难道要重连吗?#

如果你之前连接云服务器时 没有加 -R ,那就需要重新建立隧道,或者额外开一个 SSH 隧道连接。

有两种做法。

做法 A:重新登录,带上 -R#

在 Windows PowerShell 重新连:

ssh -R 7897:127.0.0.1:7897 username@云服务器IP

然后在云服务器里:

source ~/proxy_on.sh
curl https://github.com -I

这是最简单的。


做法 B:不打断当前服务器终端,额外开一个 PowerShell 窗口建隧道#

你可以保留原来的 SSH 连接不动。

另开一个 Windows PowerShell,执行:

ssh -N -R 7897:127.0.0.1:7897 username@云服务器IP

解释一下:

-N 表示只建立隧道,不进入交互 shell-R 表示反向转发

这个 PowerShell 窗口不要关。它开着,云服务器上的 127.0.0.1:7897 就有效。

然后回到你原来的服务器终端,执行:

source ~/proxy_on.shcurl https://github.com -I

七、使用流程总结#

学校服务器#

  1. 确认 Windows Clash 开启 LAN,端口 7897,Windows IP 10.21.200.105
  2. Windows 防火墙允许 7897 入站
  3. 服务器终端:
Terminal window
source ~/proxy_on.sh # 开启代理
curl https://github.com -I # 测试
hf download ... # HuggingFace 下载
source ~/proxy_off.sh # 不用时关闭

云服务器#

  1. Windows Clash 开启 LAN,端口 7897
  2. SSH 建立反向端口转发:
Terminal window
ssh -R 7897:127.0.0.1:7897 username@云服务器IP
  1. 云服务器终端:
Terminal window
PROXY_HOST="127.0.0.1"
PROXY_PORT="7897"
source ~/proxy_on.sh
curl https://github.com -I
hf download ...
source ~/proxy_off.sh

✅ 这样,无论是学校服务器还是云服务器,服务器端都可以通过 Windows 本机的 Clash 代理加速下载,proxy_on.sh / proxy_off.sh 统一管理,并且 Git、HuggingFace 等工具自动走代理,无需单独配置。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助

目录