当前位置: 首页 > news >正文

【Squid】内网集群访问外部网络资源

简介

在日常的科研工作中,我们经常需要登录学校的高性能计算集群(例如基于 Slurm 调度的集群)来提交大型计算任务。出于安全考虑,这些内网集群通常被严格限制,无法直接连接外部网络。这给我们在集群上使用wget获取测试数据、或者使用pipconda配置环境带来了极大的不便。

如果你的个人 Windows 主机同时具备外网访问权限和校园网环境,我们可以利用 WSL(Windows Subsystem for Linux)中的 Ubuntu 系统运行 Squid 代理服务,并结合 SSH 的“反向端口转发”技术,将本机的网络安全、优雅地“借”给集群使用。

准备工作

在开始之前,请确保你的 Windows 电脑已经开启并安装了 WSL Ubuntu 子系统,并且你的电脑当前正处于能够连接到目标集群的校园网环境中。

WSL 端安装 Squid

首先,我们需要在本地的 WSL Ubuntu 中安装 Squid 代理服务器。打开你的 WSL 终端,更新软件源并进行安装:

sudo apt update sudo apt install squid -y

图 1:在 WSL 终端中安装 Squid

安装完成后,Squid 默认会监听3128端口,并且默认允许来自localhost的请求。我们可以启动 Squid 服务并检查其运行状态:

sudo service squid start sudo service squid status

图 2:检查 Squid 服务运行状态

确保看到服务正在运行(active),Squid 正在监听3128端口。

建立 SSH 反向隧道

这是整个方案的核心步骤。由于集群无法主动连接到我们隐藏在 Windows 防火墙和 Hyper-V 虚拟网络后的 WSL,我们需要通过 SSH 主动向集群发起连接,并建立一条稳定的反向隧道。

WSL 终端中,运行以下命令(你可以根据实际情况替换账户名或端口号):

ssh -R 3128:127.0.0.1:3128 -p 76509 <your_username>@12.34.56.123 -N \ -o ServerAliveInterval=60 \ -o ServerAliveCountMax=3 \ -o TCPKeepAlive=yes

图 3:建立稳定 SSH 反向隧道

这条命令的含义是:通过76509端口连接12.34.56.123集群,同时在集群端开放3128端口。集群上发往3128端口的所有网络请求,都会沿着这条加密的 SSH 隧道,原路返回到我们本地 WSL 的localhost:3128(即 Squid 服务)进行代理转发。

相比基础配置,这段命令加入了几个非常实用的进阶参数来保障隧道的稳定性:

  • -N:表示仅建立端口转发隧道,不打开远程终端执行命令。

  • -o ServerAliveInterval=60等心跳包参数:每隔 60 秒与集群通讯一次,防止因网络长时间没有数据传输,被校园网防火墙或集群节点自动切断连接。

请注意:保持这个 SSH 终端窗口处于开启状态,代理隧道才会持续生效。因为使用了-N参数,按下回车后终端会处于“挂起”状态,不返回任何新的命令行提示符,这是完全正常的现象,说明隧道正在默默为你工作。此时你需要新开一个终端窗口来登录集群。


测试代理配置

现在,你已经通过上面的命令成功登录到了计算集群的终端。我们需要在集群的环境变量中声明代理,让 Linux 系统知道如何将流量导向本地的3128端口。

在集群终端中运行:

export http_proxy="http://127.0.0.1:3128" export https_proxy="http://127.0.0.1:3128"

接下来,我们可以使用curl命令测试一下是否能够成功获取外部网站的响应头:

curl -I https://www.baidu.com

图 4:测试集群代理连通性

如果终端返回了HTTP/2 200或相关的正常响应信息,而不是卡住或提示网络不可达,说明代理已经配置成功!现在你可以自由地在集群上拉取外部资源了。


进阶技巧:一键启动隧道与环境自动配置

为了进一步提高日常科研效率,我们可以在本地和集群两端分别做一些快捷配置,省去每次手动输入命令的繁琐。

1. 本地端(WSL):编写一键启动脚本

每次需要代理时都手动输入长串的 SSH 命令会显得有些繁琐。为了提高效率,我们可以在 WSL 中编写一个简单的 Shell 脚本,实现“一键启动服务 + 建立隧道”。

在你的 WSL 主目录下(例如~/),创建一个名为proxy.sh的文件:

nano ~/proxy.sh

将以下内容粘贴到文件中(将<your_username>替换为你的集群账户名):

#!/bin/bash # 启动 Squid 服务 sudo systemctl start squid # 建立 SSH 反向隧道 ssh -R 3128:127.0.0.1:3128 -p 76509 <your_username>@12.34.56.123 -N \ -o ServerAliveInterval=60 \ -o ServerAliveCountMax=3 \ -o TCPKeepAlive=yes

保存并退出(在 nano 中按Ctrl+O,回车确认,然后按Ctrl+X退出)。接着,赋予该脚本可执行权限:

chmod +x ~/proxy.sh

如何使用:

以后每次你需要让集群联网时,只需打开 WSL 终端并运行:

./proxy.sh

脚本会先提示你输入sudo密码以启动 Squid,随后立刻建立 SSH 隧道(可能会要求输入集群密码)。看到光标挂起时,就意味着隧道已经稳稳建立。

2. 集群端:环境变量自动配置

为了方便,我们可以将export命令添加到集群用户目录下的~/.bashrc文件末尾,这样每次登录集群后就无需重复配置代理环境变量了。

集群终端中,使用编辑器打开.bashrc文件:

nano ~/.bashrc

在文件的最底部,添加以下两行(同样,注意端口号要与你隧道开放的端口一致):

export http_proxy="http://127.0.0.1:3128" export https_proxy="http://127.0.0.1:3128"

保存并退出。为了让配置立即生效,可以运行一次以下命令(或者重新登录集群):

source ~/.bashrc

至此,只要你的 WSL 运行着./proxy.sh,你在集群上的所有网络操作(如wget数据、conda install依赖等)都会自动通过这条隐形的隧道无缝连接外网!


如果需要在特定的工具链(如 Git 或 Conda)中单独配置代理,可以查阅对应软件的官方代理设置文档,将代理地址同样指向http://127.0.0.1:3128即可。

http://www.cnnetsun.cn/news/1487806.html

相关文章:

  • 抖音视频下载器:从入门到精通的完整指南
  • LiuJuan20260223Zimage镜像使用教程:从CSDN博客文档到本地成功运行
  • 2026年开年GitHub月度Trending技术风向标:TypeScript成最大赢家,AI Agent全面爆发
  • cv_resnet50_face-reconstruction保姆级教学:Windows用户从Anaconda安装到成功运行全记录
  • 雪女-斗罗大陆-造相Z-Turbo极简部署:STM32CubeMX理念下的图形化配置初探
  • Gvim新手避坑指南:.vimrc配置详解与‘设置不生效’常见问题排查
  • Unity游戏热更新实战:YooAssetV2.1.0与HybridCLR的完美搭配(附避坑指南)
  • 小白必看:Ollama部署translategemma-12b-it图文翻译模型完整流程
  • 5个步骤掌握图像数字化:WebPlotDigitizer从入门到精通
  • FFXIV插件:动画跳过工具——告别冗长等待,提升副本效率
  • 30分钟搞定OpenClaw:Qwen3.5-9B镜像云端体验与技能测试
  • 2026阿里P6 Java面试八股题全解析:高频考点+AI模拟面试实战指南
  • Django 模板变量与标签实战指南:90% 的 Django 新手都忽略了这几个细节
  • 广州做跨境电商:现在入局还能盈利吗?行业现状与实操路径
  • YOLOv13官版镜像快速上手:5分钟搭建离线目标检测环境
  • 提示系统插件生态建设:提示工程架构师的独特见解与创新实践案例
  • SDMatte在数字藏品制作中应用:非遗纹样/水墨画透明底NFT生成
  • Tuna:超越show-o2,为多模态大模型构建“完美”的级联统一视觉编码器
  • Stable Diffusion开源生态:Pixel Fashion Atelier与Civitai LoRA生态的无缝集成方案
  • AI报告审核驱动质量升级:IACheck助力动力系统检测报告稳步提升
  • gte-base-zh实战入门必看:3步完成Xinference本地部署与API调用
  • 动态生成展示:LiuJuan20260223Zimage模型根据实时天气创作“风晴雨雪”主题画
  • OpenClaw+Qwen3.5-4B-Claude:智能家居控制中心自动化
  • 别再把 Polkadot 当成“又一条公链“ | 理解共享基础设施才是正确的打开方式
  • 手把手教你用NotaGen:小白也能一键生成贝多芬风格钢琴曲
  • OpenClaw浏览器自动化:Qwen3-VL:30B爬取图文数据到Notion
  • C#内存管理
  • 2026年6月PMP考试:70天倒计时,这5件事现在不做就晚了
  • vLLM-v0.17.1GPU算力适配:华为昇腾CANN 7.0与vLLM对接可行性验证
  • AI手势识别能否长期稳定运行?压力测试结果公布