通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI企业内网部署:内网穿透方案与安全配置
通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI企业内网部署:内网穿透方案与安全配置
最近在帮一家公司做内部AI工具部署,他们有个挺典型的需求:把通义千问的WebUI部署在公司的内网服务器上,但销售和运营团队经常要出差,希望能在外地或者用手机安全地访问这个工具。这其实就是典型的企业内网服务外网访问问题,既要方便,更要安全。
直接暴露内网服务到公网风险太大,而让员工每次都连回公司VPN又不够灵活。所以,我们最后选择了一套“内网穿透+安全加固”的组合方案。简单来说,就是在内网服务器和公网之间搭一个安全的“桥梁”,让外部访问能像内部访问一样方便,同时加上层层防护。今天我就把这个方案的思路和具体操作,用大白话分享出来。
1. 为什么企业需要内网穿透方案?
很多公司把AI模型部署在内网,主要是出于数据安全和资源管理的考虑。内网环境隔离性好,数据不出域,管理也方便。但问题也随之而来:移动办公、远程协作、分支机构访问都成了难题。
传统的做法是让员工通过VPN接入内网。这个方法安全,但体验上有些不足。VPN通常需要专门的客户端,配置起来对非技术同事有点门槛;而且一旦连上VPN,就等于进入了整个内网,权限控制比较粗放。我们只是想让员工安全地用一下AI工具,没必要开放整个内网通道。
这时候,内网穿透方案的优势就体现出来了。它不像VPN那样建立完整的网络层隧道,而是针对特定的内网服务(比如我们部署好的通义千问WebUI),在公网上创建一个唯一的、加密的访问入口。外部用户通过这个入口,请求会被安全地转发到内网对应的服务上。这样做,访问权限被精确地限定在了这一个服务,实现了“最小权限”原则,安全性更高,配置和管理也相对更清晰。
2. 部署准备:内网服务与穿透工具选型
在搭建“桥梁”之前,我们得先把“房子”(内网服务)盖好,并选好“建筑材料”(穿透工具)。
2.1 内网通义千问WebUI服务部署
首先,确保你的通义千问WebUI已经在内网服务器上成功运行。这里假设你已经完成了模型的部署,并且可以通过内网IP和端口(例如http://192.168.1.100:7860)在浏览器中正常访问到交互界面。
这个服务是内网穿透的目标。你需要记录下它的监听IP(通常是0.0.0.0或127.0.0.1)和端口号(比如7860),后续配置穿透时会用到。
2.2 内网穿透工具选择
市面上内网穿透工具很多,有开源的有商业的。考虑到企业环境的稳定性和可控性,我们通常会优先选择可以自建服务端的开源方案,这样所有流量和数据都掌握在自己手里。
- frp (Fast Reverse Proxy):这是一个非常流行的开源工具,轻量且功能强大。它采用C/S架构,你需要一台有公网IP的服务器作为服务端(frps),内网服务器作为客户端(frpc)。配置灵活,支持TCP、HTTP、HTTPS等多种协议,非常适合我们这种场景。
- ngrok:它提供开源版本和商业服务。开源版可以自建,但配置稍复杂;商业版则提供了开箱即用的服务,但需要将流量经过第三方服务器。
- 其他商业服务:一些云服务商也提供了内网穿透产品,使用简便,但同样涉及流量经过第三方。
为了完全自主可控,我们这次的方案以frp为例进行讲解。你需要准备两台机器:
- 服务端 (VPS):一台拥有公网IP地址的云服务器,用于部署frp服务端(frps)。这将是你内网服务的公网入口。
- 客户端 (内网服务器):就是你部署了通义千问WebUI的那台内网服务器,用于部署frp客户端(frpc)。
3. 实战:基于frp的内网穿透配置
接下来,我们一步步搭建这个“桥梁”。整个过程分为服务端配置和客户端配置。
3.1 服务端 (frps) 配置与启动
首先,登录你的公网云服务器(VPS)。
下载frp:访问frp的GitHub发布页,根据你服务器的操作系统(通常是Linux amd64)下载最新的压缩包。
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.toml(服务端配置文件)。编辑服务端配置:使用
vim或nano编辑frps.toml。nano frps.toml一个基础的安全配置如下:
bindPort = 7000 auth.method = "token" auth.token = "your_strong_password_here" webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "another_strong_password"bindPort:frp服务端监听的端口,客户端通过这个端口连接。这里用7000。auth.token:客户端连接时必须提供的认证令牌,请务必设置一个强密码。webServer:这部分开启了frp的Web管理界面,方便你查看连接状态。7500是管理界面端口,也设置了账号密码。
启动frp服务端:
./frps -c ./frps.toml为了让它一直在后台运行,可以使用
systemd创建服务,或者用nohup:nohup ./frps -c ./frps.toml > frps.log 2>&1 &现在,你的公网服务器已经在
7000端口等待客户端连接,并且你可以在http://你的VPS_IP:7500用设置的账号密码登录管理界面。
3.2 客户端 (frpc) 配置与启动
接下来,登录你的内网服务器(运行通义千问WebUI的那台)。
下载并解压frp(步骤同服务端,如果架构不同请选择对应版本)。
编辑客户端配置:编辑
frpc.toml文件。nano frpc.toml配置内容如下:
serverAddr = "你的VPS公网IP" serverPort = 7000 auth.method = "token" auth.token = "your_strong_password_here" [[proxies]] name = "qwen-webui" type = "tcp" localIP = "127.0.0.1" localPort = 7860 remotePort = 7080serverAddr和serverPort:指向你刚才配置的frp服务端地址和端口。auth.token:必须和服务端配置的令牌一致。[[proxies]]:定义一条代理规则。name:规则名称,自定义。type:协议类型,WebUI一般是HTTP服务,但用tcp转发更通用。localIP和localPort:本地服务的地址和端口,即通义千问WebUI的地址。remotePort:在服务端(VPS)上开放的端口。外部用户将通过访问你的VPS_IP:7080来访问内网服务。
启动frp客户端:
./frpc -c ./frpc.toml同样,建议配置为后台服务。
nohup ./frpc -c ./frpc.toml > frpc.log 2>&1 &
3.3 测试穿透效果
完成以上步骤后,整个通道就打通了。
- 在你的公网VPS上,可以通过
ss -tunlp | grep 7080查看7080端口是否处于监听状态。 - 打开浏览器,访问
http://你的VPS公网IP:7080。 - 如果配置正确,你应该能看到和在内网访问
http://192.168.1.100:7860一样的通义千问WebUI界面。
至此,基础的内网穿透已经实现。但这样直接通过HTTP访问还不够安全,我们需要给它加上“锁”。
4. 核心加固:安全配置指南
让服务暴露在公网,安全是头等大事。我们需要从传输、访问、应用多个层面进行加固。
4.1 启用HTTPS加密传输
明文HTTP传输就像用明信片寄送密码,风险极高。我们必须启用HTTPS。
推荐方案:使用Nginx反向代理并配置SSL证书
在公网VPS上安装Nginx,并为其配置SSL证书。你可以从云服务商申请免费证书(如Let‘s Encrypt),或者使用自签名证书(仅限测试或内部使用)。
一个简单的Nginx配置示例 (/etc/nginx/conf.d/qwen.conf):
server { listen 443 ssl http2; server_name your-domain.com; # 替换为你的域名或IP ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; location / { proxy_pass http://127.0.0.1:7080; # 转发到frp暴露的端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 300s; # 模型推理可能较久,调大超时时间 proxy_send_timeout 300s; } } server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; # HTTP强制跳转HTTPS }配置好后,重启Nginx。现在,所有人只能通过https://your-domain.com来访问你的服务,所有通信内容都是加密的。
4.2 设置IP白名单限制访问
不是所有人都应该能访问这个服务。我们可以通过Nginx或frp服务端设置IP白名单。
在Nginx中设置:
location / { allow 192.168.1.0/24; # 允许公司内网IP段 allow 110.220.33.44; # 允许某个特定的公网IP(如公司固定出口IP) deny all; # 拒绝其他所有IP proxy_pass http://127.0.0.1:7080; ... # 其他proxy配置 }这样,只有指定的IP地址能够访问,其他IP的请求会被直接拒绝。
4.3 配置强身份认证
IP白名单可能不够灵活,特别是对于移动办公人员。我们可以在WebUI前面再加一道“门”。
方案:为Nginx配置基础认证 (Basic Auth)
- 在VPS上使用
htpasswd命令创建密码文件:
按提示输入密码。可以添加多个用户。sudo apt-get install apache2-utils # 如果未安装 sudo htpasswd -c /etc/nginx/.htpasswd username1 - 在Nginx配置的
location /块中添加认证:location / { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://127.0.0.1:7080; ... # 其他proxy配置 }
现在,访问网站时,浏览器会先弹出一个登录框,要求输入用户名和密码,验证通过后才能看到通义千问的界面。
4.4 服务端与客户端安全增强
- 防火墙设置:在公网VPS上,使用
ufw或firewalld严格限制开放端口。通常只开放443(HTTPS)、22(SSH,建议改端口)以及frp服务端端口7000。关闭所有其他不必要的端口。 - frp令牌强化:使用高强度、随机的字符串作为
auth.token,并定期更换。 - 日志与监控:开启frp和Nginx的访问日志,定期检查是否有异常访问尝试。可以使用
fail2ban等工具自动封禁多次尝试失败的可疑IP。 - 客户端隐藏:在内网的frpc配置中,可以设置
proxyProtocolVersion = v2并在Nginx中对应配置,以传递真实客户端IP,但更安全的做法是让所有流量看起来都来自frp服务端,在内网防火墙上只允许来自frp服务端IP的访问。
5. 总结
走完这一整套流程,我们相当于为内网的通义千问WebUI构建了一个安全的“前台接待处”。外部访问请求首先通过HTTPS加密通道抵达我们的公网服务器(VPS),经过IP过滤和身份认证两道安检后,由Nginx这个“接待员”引导,通过frp构建的加密专用通道(隧道),最终安全地送达内网服务器上的AI服务。
这个方案的优势在于,它实现了精确的访问控制(只暴露一个服务)、端到端的加密传输、以及灵活的身份管理。对于企业来说,在享受AI工具便利的同时,能最大程度地保障内部网络和数据的安全边界。
实际部署时,你可能会遇到网络环境差异、证书配置等具体问题,但核心思路就是“隧道+加密+认证”。希望这个分享能给你提供一个清晰的落地路径。安全无小事,尤其是在企业环境,多花点时间在配置和测试上是完全值得的。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
