
内网穿透技术实现本地CasRel模型服务的远程安全访问最近在做一个关系抽取的项目本地用CasRel模型跑得挺好但问题来了——团队其他成员想调用这个服务做测试总不能每个人都来连我的内网吧直接暴露端口到公网那安全风险可就太大了。这时候内网穿透技术就成了我们的救星。它就像给你的本地服务装了一个“安全通道”让外网能够安全地访问内网里的应用而不用把整个内网暴露出去。今天我就手把手带你走一遍如何用内网穿透技术把你本地的CasRel模型服务安全地分享给远程的同事或系统调用。学完这篇教程你就能掌握从零开始搭建一个安全的内网穿透环境让你部署在个人电脑或公司内网的AI服务也能被外网安全、稳定地访问。1. 理解内网穿透为什么需要它在开始动手之前我们先花几分钟搞清楚内网穿透到底解决了什么问题以及它背后的基本原理。这样后面配置起来你心里更有底。想象一下你的CasRel模型服务运行在你办公室的电脑上或者公司的某台服务器上它们通常处在一个内部网络里。这个内部网络对外部互联网是不可见的就像你家卧室里的Wi-Fi信号外面街上的人是连不上的。传统做法的问题无法直接访问外部用户无法通过公网IP直接连接到你的内网服务。端口映射的风险如果你在路由器上设置端口映射DMZ相当于把你内网的这台机器直接暴露在公网上会面临扫描、攻击等巨大安全风险。动态IP麻烦家庭宽带或某些网络环境的公网IP是动态变化的每次重启可能就变了不方便维护。内网穿透的原理 内网穿透工具比如我们后面要用的通常采用“反向代理”的思路。你需要一台拥有公网IP的服务器作为“中转站”也叫服务端或Server。你的本地服务客户端或Client主动去连接这个公网服务器建立一个持续的、加密的通道。当外部用户想访问你的本地服务时他实际上是先访问公网服务器的某个端口。公网服务器收到请求后通过之前建立好的那个加密通道把请求“转发”给你的本地服务。本地服务处理完再把结果通过通道传回公网服务器最终返回给外部用户。整个过程你的内网环境始终没有对外暴露任何端口所有的通信都经过加密通道安全性大大提升。2. 准备工作选择工具与准备环境工欲善其事必先利其器。我们先来选一个合适的内网穿透工具并准备好所需的环境。2.1 工具选择为什么是它市面上内网穿透工具有不少比如 frp、ngrok、natapp 等。这里我选择frp来演示主要基于以下几点考虑开源免费对于个人和小团队使用完全免费功能强大。配置灵活支持TCP、UDP、HTTP、HTTPS等多种协议能满足大部分场景。安全可控支持Token认证、TLS加密你可以完全掌控整个通信链路。活跃社区遇到问题容易找到解决方案。ngrok 也很流行尤其它的免费版提供随机域名很方便但通常有连接数和带宽限制。frp 需要你自己有一台公网服务器但换来的是完全的控制权和更高的稳定性。考虑到我们要暴露的是一个AI模型服务可能涉及数据传输稳定和可控更重要所以选择frp。2.2 环境准备清单你需要准备以下东西一台公网服务器VPS作为 frp 的服务端。国内外云服务商如阿里云、腾讯云、AWS、Vultr等都能购买选择离你用户群体近的区域。系统推荐 Ubuntu 20.04/22.04 或 CentOS 7/8。你的本地开发机运行着CasRel模型服务。可以是Windows、Mac或Linux。一个域名可选但推荐如果你不想让用户记IP地址和端口可以准备一个域名并解析到你的公网服务器IP。CasRel模型服务已本地运行确保你的模型服务在本地比如127.0.0.1:5000可以正常访问。这是我们最终要暴露的服务。3. 服务端配置在公网服务器上搭建中转站登录你的公网服务器我们开始配置 frp 服务端。3.1 下载与安装 frpsfrps是服务端程序。我们通过命令行操作。# 创建一个目录存放frp mkdir -p /opt/frp cd /opt/frp # 去GitHub发布页找到最新版本链接替换下面的链接。这里以 v0.52.3 为例。 wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz # 解压 tar -zxvf frp_0.52.3_linux_amd64.tar.gz cd frp_0.52.3_linux_amd64 # 查看文件frps 和 frps.ini 是服务端需要的 ls3.2 配置服务端文件 frps.ini我们需要编辑frps.ini配置文件。使用vim或nano编辑器。vim frps.ini将配置文件内容修改为如下示例。请务必修改token为你自己设定的复杂密码这是客户端连接服务端的凭证。[common] # 服务端监听的端口用于接收客户端连接 bind_port 7000 # 认证令牌客户端必须使用相同的token才能连接 token your_strong_password_here # 仪表板端口用于查看frp状态可选但建议 dashboard_port 7500 # 仪表板用户名和密码可选但建议 dashboard_user admin dashboard_password admin_dashboard_password # 如果你打算通过HTTP/HTTPS方式访问服务可以设置这个端口 # vhost_http_port 8080 # vhost_https_port 8443 # 日志设置 log_file ./frps.log log_level info log_max_days 3关键配置说明bind_port这是 frp 通信的基础端口客户端通过这个端口连接服务端。防火墙要放行此端口。token非常重要的安全设置确保只有知道token的客户端才能连接。dashboard_port可以通过浏览器访问http://你的服务器IP:7500输入用户名密码查看所有连接的状态非常实用。3.3 启动 frps 服务配置好后可以前台启动测试一下./frps -c ./frps.ini如果看到类似“frps started successfully”的日志说明服务端启动成功。先按CtrlC停止。为了让它一直在后台运行我们配置为系统服务。# 将frps复制到系统应用目录 sudo cp frps /usr/bin/ sudo mkdir -p /etc/frp sudo cp frps.ini /etc/frp/ # 创建systemd服务文件 sudo vim /etc/systemd/system/frps.service将以下内容写入frps.service文件[Unit] DescriptionFrp Server Service Afternetwork.target [Service] Typesimple Usernobody Restarton-failure RestartSec5s ExecStart/usr/bin/frps -c /etc/frp/frps.ini [Install] WantedBymulti-user.target保存后启动并设置开机自启sudo systemctl daemon-reload sudo systemctl start frps sudo systemctl enable frps # 检查运行状态 sudo systemctl status frps看到active (running)就说明服务端已经在后台稳定运行了。别忘了去你的云服务器控制台在防火墙/安全组规则里放行7000端口bind_port和7500端口dashboard_port如果你开了的话。4. 客户端配置让本地服务连接中转站现在回到你的本地机器运行CasRel服务的那台配置 frp 客户端。4.1 下载与安装 frpc根据你的本地系统去 frp 的 GitHub 发布页下载对应的客户端版本。这里以 Linux/Mac 为例Windows 类似只是可执行文件是frpc.exe。# 假设在本地用户目录下操作 cd ~ wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz tar -zxvf frp_0.52.3_linux_amd64.tar.gz cd frp_0.52.3_linux_amd644.2 配置客户端文件 frpc.ini编辑frpc.ini文件。vim frpc.ini假设你的 CasRel 模型服务在本地运行在127.0.0.1:5000。我们配置一个 TCP 类型的穿透。[common] # 填写你的公网服务器IP地址和bind_port server_addr 你的公网服务器IP server_port 7000 # 必须和服务端配置的token一致 token your_strong_password_here # 客户端管理端口用于热重载配置可选 admin_addr 127.0.0.1 admin_port 7400 [casrel-api] # 这个名称可以自定义代表一个穿透规则 type tcp local_ip 127.0.0.1 local_port 5000 # 你的CasRel服务本地端口 remote_port 6000 # 在公网服务器上监听的端口外部用户通过这个端口访问关键配置说明server_addr和server_port指向你刚才搭建好的 frp 服务端。token和服务端的token必须一模一样。[casrel-api]这是一个“代理”配置段。意思是将本地5000端口的服务映射到公网服务器的6000端口。remote_port你需要去公网服务器的防火墙也放行这个端口比如6000。4.3 启动 frpc 客户端在本地终端运行./frpc -c ./frpc.ini如果连接成功你会看到类似“[casrel-api] start proxy success”的日志。同时在服务端的仪表板 (http://服务器IP:7500) 上你应该能看到一个在线客户端和活跃的代理。现在外部用户就可以通过http://你的公网服务器IP:6000来访问你本地的 CasRel 服务了你可以自己用另一台不在同一内网的电脑测试一下。5. 进阶配置提升安全性与易用性基础功能通了我们再来做点优化让它更安全、更好用。5.1 使用域名访问替代IP端口让用户记yourdomain.com总比记123.456.789.123:6000要友好。这需要两个步骤域名解析在你的域名管理后台添加一条 A 记录将你的子域名例如casrel.yourdomain.com指向公网服务器的 IP 地址。修改 frpc.ini如果你希望通过80或443端口访问需要配置 HTTP/HTTPS 类型的代理并利用服务端的vhost_http_port或vhost_https_port。首先取消服务端配置frps.ini中vhost_http_port的注释并确保防火墙开放8080端口。# 在 frps.ini 中 [common] vhost_http_port 8080然后修改客户端的frpc.ini增加一个 HTTP 类型的代理[casrel-web] # 新增一个HTTP代理配置 type http local_ip 127.0.0.1 local_port 5000 custom_domains casrel.yourdomain.com # 原有的TCP配置可以保留用于API调用 [casrel-api] type tcp local_ip 127.0.0.1 local_port 5000 remote_port 6000这样用户访问http://casrel.yourdomain.com:8080就能连接到你的服务。如果想用标准的80端口你需要让 frps 运行在root权限下或者用 Nginx/Apache 做一层反向代理到 frps 的8080端口这是更常见的生产环境做法。5.2 基础安全加固安全无小事尤其是把内部服务暴露出去。使用强Token不要用简单的密码使用长且复杂的随机字符串作为 token。限制访问IP在服务端frps.ini的[common]部分可以添加allow_ports来限制客户端能使用哪些远程端口避免占用重要端口。更严格的话可以在云服务器安全组或系统防火墙iptables/firewalld上设置只允许特定的IP地址访问6000你的远程端口和7500仪表板端口。启用TLS加密对于非常敏感的数据可以在[common]中配置tls_enable true来加密 frp 客户端与服务端之间的控制通道。注意这加密的是 frp 自身的通信链路你的 CasRel 服务如果是 HTTP内容本身仍未加密。对于 API 服务强烈建议在 CasRel 服务本身启用 HTTPS。仪表板密码一定要修改默认的仪表板密码。5.3 客户端自启动与守护同样我们也把客户端配置成系统服务确保开机或崩溃后能自动重启。Linux/Mac参考服务端的方法创建frpc.service文件。Windows可以使用nssm工具将 frpc 注册为系统服务。6. 测试与验证配置完成后必须进行全面测试。连通性测试从一台外网机器使用curl或浏览器访问你的公网地址IP:6000 或 域名:8080看是否能收到 CasRel 服务的正常响应。功能测试调用一个实际的 CasRel 模型预测接口确保数据能正常往返结果正确。仪表板监控访问http://服务器IP:7500查看连接状态、流量统计确保一切正常。日志检查查看服务端和客户端的日志文件frps.log,frpc.log排查任何错误或警告信息。7. 总结走完这一趟你会发现内网穿透并没有想象中那么复杂。核心就是“客户端主动连接服务端建立通道服务端负责转发请求”。通过 frp 这样的工具我们成功地在不牺牲安全性的前提下打破了内网的限制让本地的 CasRel 模型服务能力得以释放。实际使用中你可能还会遇到诸如网络波动、服务重启、域名SSL证书配置等问题。记住多查日志善用仪表板大部分问题都能定位。对于生产环境建议将 frp 客户端和服务端都配置为强健的系统服务并做好日志轮转和监控。现在你的团队成员可以在任何地方调用你的模型服务了。无论是集成到其他系统还是进行远程调试协作都变得非常方便。技术的目的就是解决实际问题让工作更高效希望这个教程能帮到你。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。