开发公司让客户在家测试内网部署的系统:为什么端口映射和 VPN 都不可行
开发公司交付给客户的内网部署系统要在家测试,最容易翻车的不是“连不上”,而是“连上之后不安全”。客户 QA 在家访问内网测试区,直接给测试服务器做公网端口映射,当晚 3306 端口就会出现在公网扫描日志里,随后是一串 MySQL 爆破尝试。这种访问方式不需要客户有公网 IP,但不意味着安全。
更稳妥的 IPsec VPN 通常要求客户侧有固定公网 IP、企业级防火墙或 VPN 网关,而且要为每个测试人员签发证书、维护客户端配置。对只有一两个测试账号的交付项目来说,这套运维成本完全不匹配。核心矛盾在于:测试系统只监听内网 IP:端口,要让外网用户访问,同时又能精确控制“谁能访问哪个端口、何时访问、访问了什么”,传统方式很难兼顾。
方案 | 是否需要公网 IP | 授权粒度 | 访问审计 | 部署成本 |
|---|---|---|---|---|
端口映射 | 需要 | 仅 IP 层,无法区分用户 | 无或仅防火墙日志 | 低,但暴露面大 |
IPsec VPN | 需要(固定) | 网络层,控制较弱 | 需额外日志系统 | 高 |
NexTunnel | 不需要 | 端口白名单 + 设备授权 | 全量访问审计 | 中,Server 部署一次即可 |
如果非用端口映射不可,至少要在防火墙侧把来源 IP 限制到客户当前的家庭公网出口,例如:
iptables -I INPUT -p tcp --dport 3306 -s 203.0.113.10 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP但家庭宽带出口 IP 经常变化,这种规则很难维护,而且客户一旦切换网络(比如从家庭宽带切到手机热点)就连不上。这也是端口映射不适合交付场景的原因。
NexTunnel 在这里的定位不是简单替代 VPN,而是把访问收敛到 L4 端口级别:内网侧部署 Server,外网侧运行 Client,两端之间的隧道只承载授权过的 TCP 端口。下面直接拆解部署步骤。
用 NexTunnel Server 内网侧 + Client 外网侧打通测试链路的部署步骤
拓扑很简单:内网测试服务器(如 192.168.10.50)运行着客户要测试的 Web 应用和 MySQL,旁边一台 Linux 主机或虚拟机部署 NexTunnel Server。客户 QA 的笔记本在外网,安装 Client 后即可通过隧道访问 192.168.10.50:8080,不需要在客户侧修改任何路由表。
具体操作步骤如下:
在内网侧主机安装 Server,并生成客户访问令牌:
curl -fsSL https://download.nextunnel.io/install.sh | bash -s -- --server
nextunnel token create --name customer-qa-01 --desc "客户QA-张三"2. 编辑 Server 配置 /etc/nextunnel/server.yml,指定监听端口和中继端口:
server:
bind: "0.0.0.0:7443"
relay_port: 7444
auth_token_file: "/etc/nextunnel/tokens.yml"3. 启动 Server 并确认状态:
systemctl enable nextunnel-server --now
nextunnel status --server