1 背景信息
当我们在外地出差,或者居家办公时,最烦恼的就是如何快速、稳定地访问公司那一堆办公系统。
我们公司其实搭建有VPN系统,但是VPN系统是所有进出流量的必经之地,上班时间好卡好慢,又不想浪费我的下班时间。之前测试过VPN系统权限配置复杂了性能差,配置简单了安全性差;还有一个问题就是用户身份的问题,一般来说VPN的账号体系是无法和公司已有的账号体系和权限设置保持一致的,结果就是账户和权限的运维工作量直接乘以了2。另外VPN统一入口后,经常会出现绕路的问题,无谓地增加了VPN的压力。所以公司其实一直想找一个替代的方案。
传统的VPN部署方案:
最近我发现了一款免费软件“飞网”,简单理解就是一款“虚拟组网”的软件,软件主打的是“安全提升”以及“一键组网”功能,它可以把我在公司那一堆办公系统,还有我家里的电脑都放到一个安全的虚拟网络中,让他们可以互相访问,而无需在网络中部署额外的设备或开启额外端口。
另外所有通讯无需第三方中转,并且默认是加密的,可以充分利用带宽,当传输大文件时速度也很快,这样在传输一些比较敏感的数据时,无需担心被其他人看到,无需担心通讯数据泄露。注:你可以使用命令:“gmzta ping ip”确认是否是直连。
如果公司使用飞网的话,飞网支持标准的Oauth 2.0,OpenID Connect协议,可以使用已有的用户体系,也可以对接现有的系统访问策略,这样的话,每个人都只能看到自己授权的“虚拟网络”。就好比微信用户很多,但你登录进去只能看到你自己的朋友圈(虚拟网络)。
2 软件介绍
“飞网”全称叫“飞网零信任”,它关注的重点是安全通讯,加密协议,持续的安全组网,符合“零信任”的最佳实践,不了解零信任的可以来这里看看:https://baike.baidu.com/item/%E9%9B%B6%E4%BF%A1%E4%BB%BB
· 飞网的定义
飞网是一款自动化网络安全产品,提供全网加密、隐身、微隔离等安全特性。飞网基于零信任网络安全最佳实践,助力应用系统安全性整体提升。
· 飞网的特点(转自官网)
飞网中每一个数据包都经过身份确认、权限验证、加密处理、复杂网络穿透直达,安全治理全网生效;
满足网络层最小权限设计,符合基于身份的微隔离,无需防火墙开放端口,大幅减少攻击事件;
采用无网关设计,无需关心网关部署位置,轻松整合碎片化网络,安全实现远程办公,业务上云;
控制数据和业务数据彻底分离,减少业务数据暴露的风险,执行严格的数据访问权限;
支持网络层和应用层跨级别单点登录,一套账户,登录网络后,支持直接访问授权的业务系统;
基于密码技术实现设备的认证、发现、控制、通讯等功能,关键的加密通讯认证流程已申请专利。
3 网络拓扑
飞网部署时,支持多种模式,因为现在只是解决我个人远程连接公司网络的需要,所以我使用模式1。模式1、模式2、模式3可以混合使用,这样随着大家用的越来越多,可以逐渐覆盖全公司(整个公司使用的话需要开启企业管理账户,企业管理账户:个人管理账户:各种设备之间的关系是1:M:MN,也就是说企业账户可以管理全部的设备,个人管理账户可以免费使用)。下面三张网络拓扑示意图,可以方便大家理解这三种模式:
模式1:简易模式,部署最简单,适用于被访问设备还未能部署飞网客户端。
模式2:全网部署,如果全公司都使用飞网的话,可以使用这个模式。
模式3:在模式2的基础上增加对“访问互联网的需求”统一管理或审计的功能。
4 下载安装
以模式1为例,至少需要两个设备安装飞网的客户端,其中一台需要部署在公司(设备A),另一台则随意(设备B),至少两台设备才可以组成一个最基础的网络。飞网客户端支持Windows、Linux、Android等操作系统,大家可以按实际情况选择。
飞网客户端下载地址:https://www.gmzta.com/download/fwclient.html
本文以Windows为例,Windows系统都可以使用这个链接下载飞网客户端:https://pkgs.gmzta.com/msi/feiwang-gmzta.msi
安装过程非常简单一路下一步即可。
安装后点击下面图标启动软件。
启动后,程序图标会收缩到桌面任务栏。
进入程序安装目录,有三个程序需要特别说明一下:
“gmztad.exe”是飞网的主程序,以服务的形式启动,但飞网开启和关闭的命令是通过其他两个程序下达的。“gmzta.exe”是命令行的服务配置工具,包含全部的可执行命令;“gmztaClient.exe”是带界面的可视化配置工具。“gmztaClient.exe”可以满足日常基本使用,但是更多功能还是需要“gmzta.exe”进行命令行配置(比如本文配置子网路由功能时,就是通过“gmzta.exe”进行配置的)。尤其是Linux系统中主要通过“gmzta”命令进行配置,Linux中gmzta命令的使用方法和Windows中是一样的。所有的命令最终都是通过服务程序“gmztad.exe”最终执行。
“gmzta.exe”、“gmztad.exe”都有各自的一些命令参数,并且程序路径已经自动加入到了环境变量中,这两个命令可以直接使用(360安全卫士可能会报安全风险,允许即可),更多命令参数可以参考:https://www.gmzta.com/function/gmzta.html
比如命令帮助:
查看环境变量:
5 登录飞网
飞网默认随系统启动,右键单击任务栏图标选择“登录飞网”。
新用户可以注册后登录,但是推荐直接微信扫码“免注册”登录,这样更方便。
客户端会获取到网页登录成功的状态通知,再次右键点击飞网客户端界面会显示所有可用的“授权设备”。(飞网中只有一台设备登录时“授权设备”菜单为灰色不可点击,第二台设备登录后,两台设备的“授权设备”位置才会分别显示对方)。
登录成功的状态通知
当登录第一台设备时,“授权设备”菜单里面的设备为空不可点击。
当登录第二台设备时,两台设备的“授权设备”中均会显示对方。
此时两台设备都已经进入飞网中,并已经自动分配了IP地址(这个IP地址,使用100.X.X.X网段,并且重新登录时不会变化),“授权设备”菜单中点击设备名称会将该设备的IP地址复制到剪贴板中。另外在“控制面板”菜单中可以查看所有设备的IP地址等信息。
此时两台设备已经可以连通,试着Ping一下。如在A设备上Ping B设备
此时,如果其中一台设备部署了“应用系统”,另一台可以直接通过100网段的IP访问该应用。最关键的是你无需关心两台设备的网络位置。
6 子网路由
现在已经有两台设备加入到了飞网中,但我们的目标是访问公司的业务系统。这时,需要用到飞网内置的一个功能,将已经加入飞网的某台设备开启子网路由功能,将该设备可以访问的一个或多个子网加入到飞网中。
以我们公司现在网络实际情况为例:192.168.1.0/24这个网段是办公系统的网络,192.168.2.0/24这个网段是生产系统的网络,192.168.31.156/32这个网段(其实只包括一个IP),是我自用的下载机。
网上很多子网掩码计算器方便计算:https://www.bejson.com/convert/subnetmask/
在设备B(部署在公司的设备)的命令行中,使用下面的命令,将三个子网都加入到飞网中。
注意,如果设备B为Linux系统,还需要先开启ip转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
开启子网路由的命令
gmzta on --subnetnode=192.168.1.0/24,192.168.2.0/24,192.168.31.156/32
用户需要在控制面板中对设备B通过编辑开启相应的子网网段。
开启子网路由后在设备A(家中设备)中通过查看路由表,飞网将三个子网自动加入到路由表中。
在设备A中(任意网络位置,比如家中),Ping一下公司的下载机。
这样无需像VPN一样,既要部署专门中转设备,又要开启专门的防火墙端口,网络速度还是杠杠的。这样一个自用的网络就搭建好了,而且默认加密通讯,安全性也有保障。
7 丝滑般的效果
在家中对公司的其他设备进行连接测试,延时很低,非常满意。
在家中可以直接配置公司的多WAN口边界路由器。
在家中可以远程桌面,连接公司的某个终端,远程桌面看视频,也毫无压力。
8 其他功能
还有挺多有意思的功能,可以直接去飞网官网找找看:https://www.gmzta.com/