飞牛Docker部署ZeroNews:企业级内网穿透(安全、可控、可治理)

最近在帮人同事搞项目,遇到一个很烦人的问题,没有公网环境,API 根本没法让别人远程调用,自己的域名不想给对方使用,试过传统穿透工具吧,访问端还得装客户端,用户使用起来也麻烦,每次使用都得打开软件,客户也很头疼,想想就能想到对方的表情。

然后就发现了ZeroNews内网穿透工具,免费映射两条域名而且还是https协议的,给对方调用一下api完全没问题,或者演示一下项目,也不会暴露自己的域名。

图片

免费流量和花生壳一样都是一个月1GB的流量,如果你就用来对接项目调用API基本够用,不适合NAS备份照片等场景适用,除非你订阅会员。

图片

我用下来最大的感受就是:

简单高效,不像传统穿透“全开式”,控制细到每个路由、API、IP、用户名密码都能管,速度稳定、传输通道高性能,路由和 API 精细控制,几乎覆盖我所有场景。

先来教大家怎么部署安装,具体介绍安装后再说,支持在 Windows、macOS、Linux、Docker等多种设备或系统上快速启动运行

账号注册

1️⃣ 先去零讯官网注册自己的账号

1
https://user.zeronews.cc/login

图片

2️⃣登录 ZeroNews之后,在 “Token” 页面中复制一个 Token 备用。

图片

Windows 安装

通常来说,最省事的办法就是,在Windows系统上把本地项目部署好,直接让对方来访问测试。

**1️⃣先去官网下载Windows安装包 **

1
https://zeronews.cc/download

图片

2️⃣下载安装后把文件放到合适的位置,鼠标选中 zeronews.exe 单击右键以管理员身份运行 zeronews 程序,进入 Windows Dos 命令行窗口

图片

3️⃣ 绑定Agent Token,YOUR_TOEKN替换成你前面复制的token,输入后回车

1
zeronews.exe set token YOUR_TOEKN

图片

4️⃣启动Agent,他支持前台运行和后台运行两种

前台,只能在前台运行,当 Dos 窗口关闭时,程序会退出。

1
zeronews.exe start

后台,后台运行模式:实现 zeronews开机自启动,并保持程序在后台运行,请使用上述命令

1
zeronews.exe start -d

飞牛 Docker部署

1️⃣ 我们需要先创建一个文件夹路径,这个文件夹储存我们的docker-Compose.yml的文件和配置文件

图片

2️⃣ 桌面打开Docker,点击侧栏Compose->新增项目->输入项目名称->设置路径选择前面第1️⃣步创建的文件夹->创建docker-compose.yml把下面代码复制进去,点击完成直至构建完成

图片

🐳Docker compose 部署代码

将上面的复制的token填入到下面部署的代码中

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
services:
  zeronews:
    restart: always
    image: docker.zeronews.cc/zeronews/zeronews:latest
    container_name: zeronews
    hostname: zeronews
    network_mode: host
    volumes:
      - ./opt/zeronews:/etc/zeronews
    environment:
      - TZ=Asia/Shanghai
      - TOKEN=xxxxx #替换成你的token

部署之后在后台就能看到当前Windows和NAS的信息在线了

图片

简单映射使用

1️⃣ 看到设备在线之后,就可以去配置一个自己喜欢的域名

图片

2️⃣设置一个自己喜欢的域名前缀,免费版可以添加两个域名

图片

3️⃣映射端口,映射要通过刚刚创建的域名访问的项目地址,如NAS、lucky、op、迅雷等等

图片

先选择最开始的设备,然后选择协议类型,分配一下宽带(免费版总共2MBps宽带,如果你要搞俩项目就分配1MBps),填入要映射的内网和端口确认就行了。

图片

此时我们就可以在外网通过域名进行访问了,不需要在要访问的客户端安装应用,可以直接访问你的项目和API,直接调用

图片

如果你做了一个项目只给指定人使用怎么做限制呢?

在回到我们映射的地方,有个高级设置按钮,里面可以控制IP访问、鉴权认证(使用账号密码访问)、请求标头、响应标头等高级功能(需要订阅)

图片

1️⃣ ip访问控制

**生效模式:黑白名单,这个大家肯定都懂,ip填进去,不在规则内的ip无法访问,是不是很简单高效,就和防火墙一样,添加一个IP合集就行 **

图片

我们只需要按照要求填进就行(IP一般是公网ip,在百度搜索ip俩字就能查询到ip)

图片

2️⃣ 鉴权认证

也是我最喜欢的一种模式,直接通过账号密码访问,都不需要再前端开发密码策略了,zeronews直接帮我们完成了,我们只需添加用户名和密码即可

图片

按照要求添加用户名和密码即可,这里添加后再返回选择用户保存

图片

图片

访问一下试试看(这个弹窗在美化一下就更好了,看着像是nginx的),对方输入密码就可以安全访问了

图片

当然还有请求标头和响应标头的方式,可以触发不同的匹配条件,响应标头支持跨域资源共享 (CORS) 设置、缓存控制、内容安全策略 (CSP) 等,因为我没有类似项目不好实践,不做演示,自己研究一下

图片

当然如果你有自己的域名想要跑一些服务,或者客户不想买服务器,项目在本地部署,也可以使用自有域名,域名要备案,提交后官方是要审核的。

图片

审核通过后,就可以去域名服务商那边添加CNAME记录了,按照官方教学配置证书就行了

图片

对于有项目测试需要域名调用API的参数的可以使用免费的版本1g流量用用看也基本够用,免费版有https协议还是很不错的