开发公司让客户在家测试内网部署的系统:为什么端口映射和 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,不需要在客户侧修改任何路由表。

具体操作步骤如下:

  1. 在内网侧主机安装 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