PortWay的背景
我相信做过客户远程支持的同学都有这么痛苦的经历:为了去查询一个问题,你得让客户的IT开个QQ远程控制给你,然后再通过他的QQ远程连接到服务器的远程桌面,然后再在服务器的远程桌面上打开各种管理工具,然后就痛苦看着糊成一团的画面,小心谨慎的敲下键盘上的每个字母并等着这些字母在客户服务器的屏幕上逐个显示出来…………
我们也用过动态域名+路由器端口映射,但是这个风险太高,稍有常识的客户网管直接会毙掉这种支持方案。后来也让客户网管在服务器上装TeamViewer,但是要么运行得慢,要么TeamViewer直接傲娇的告诉你,“疑似商业使用”,给你来个使用5分钟就断线。最后用得最多的还是QQ远程,但是效率极低。
最重要的是,当你需要开发定位BUG时,你会发现最有效率的方式还是带上完整的开发环境去到客户现场,接入客户的网络,然后打开开发工具直接调试。而对于实施来讲,如果你需要帮客户调整一个配置,你可能需要远程搞上大半天才能搞定,如果碰上客户太忙的话,你会发现时间完全是被浪费掉的。
PortWay能做什么
说了那么多,PortWay到底能做什么?
PortWay我写的一款内网穿透工具,用GoLang开发,主要是就为了让实施或是开发像在客户现场一样去完成自己的工作,PortWay支持以下两种方式的内网穿透:
一. Http穿透
在局域网内(例如公司网络)运行一个Agent工具,就可以将你局域网内的http网站(例如oa/crm之类的)发布到公网,让大家可以在互联网上方便的访问,不需要做路由器配置,更不需要做防火墙及动态域名配置。
二. TCP穿透
在局域网内(例如公司网络)运行一个Agent工具,然后带到电脑在其他可访问Internet的地方(比如我们装逼常去的星巴克)运行一个Proxy,然后你就可以像在局域网里面一样,随意访问你的数据库/OA/ERP等等(只要是基于TCP网络端口的服务)。这个过程不需要vpn,更不需要远程桌面。
PortWay如何使用
1. Windows版的PortWay下载
链接:https://pan.baidu.com/s/17ZR7wQznTQ-2el-bfV14aA
提取码:z7kp
由于不想把文件弄得太大,所以只上传了Windows版本,如果你需要Mac/Linux的版本,可以Q我: 9319795
2. 使用说明
PortWay是绿色软件,不需要安装,也没有组件依赖,下载解压后就可以运行。
2.1 Agent使用说明
agent 是在你需要访问的局域网内部运行。对于实施或是开发人员来说,通常会把agent运行在客户内网的机器上。agent 相当于在局域网内网安装了一个转发器,这个转发器有自己的编号,我们称之为 “tunnel” 或是 “信道标识”。我们可以看看 tunnel 的配置,我们打开agent目录下的app.ini,这个就是agent的配置
在agent的app.ini中,有两个配置节点
2.1.1 setting节点设置中央服务器及tunnel
center_host=gw.isuf.cn
center_port=80
这个是我提供给大家的中央服务端,我安装在朋友的服务器的80端上,大家可以先免费使用,都不要告诉他:),也就是说这里的配置大家没有必要去修改。
tunnel=<you_tunnel_tag>
这个是用来设置 tunnel 标识,你也可以不设置,不设置的话,等于号右侧留空就行,启动时系统会自动分配标识,就像是TeamViewer的ID一样
需要注意的是,由于我是免费提供中央服务端给大家使用,所以我没有校验tunnel,只认为是最后连接的有效。也就是说,如果你先打开了agent,如果别人的tunnel跟你的tunnel一样,那么你会被系统踢下线。
2.1.2 httpmap节点设置需要发布到公网的内网网站
[httpmap]
k3=127.0.0.1:80
我们来看看这个简单的配置,这里启用了一个http发布,发布了前缀为k3的站点,指向局域网的127.0.0.1:80。
如果我们的tunnel标识为 rogertong,那么,启动agent后,你就可以通过 http://k3.rogertong.iotube.cn 来访问你的局域网网站了,iotube.cn是固定的,这是我提供出来的域名。
我们做个简单的演示,比如我的局域网内有一台IIS服务器 http://192.168.151.58,我想用rogertong做为我的信道标识,那么我这可以样发布:
[setting]
center_host=gw.isuf.cn
center_port=80
tunnel=rogertong
[httpmap]
k3=192.168.151.58:80
我们可以看到映射已经生效了,已经可以顺利的通过公网访问内网的IIS服务
2.1 Proxy使用说明
我们在前面说过,如果你在局域网内启动了Agent,那么就可以Proxy访问局域网络内部的所有TCP服务,Proxy会通过中央服务端告诉Agent需要访问哪些服务,所以Proxy的配置稍微复杂一些,我们看一个完整的proxy所对应的配置文件app.ini
[setting]
center_host=gw.isuf.cn
center_port=80
tunnel=rogertong
[tcpmap]
radmin=true
mssql=true
[radmin]
server_ip=127.0.0.1
server_port=4899
local_ip=0.0.0.0
local_port=48990
[mssql]
server_ip=127.0.0.1
server_port=1433
local_ip=0.0.0.0
local_port=1433
setting节点部份的配置跟agent一样,这里的tunnel用于指明当前的proxy使用哪个tunnel信道,服务端依据信道会将proxy与agent配对。
tcpmap节点,用于确认哪些端口映射配置生效,必须有对应的端口映射配置节点
上面示例中的 radmin / mssql 则是端口映射配置节点,表示需要在proxy所在的机器上,建立镜像端口,这个镜像端口收发的所有数据,都会经指定的信道,传输给agent所在局域对应的服务器,看图示:
例如: 我运行agent局域网内有台服务器192.168.151.88开启了windows远程桌面服务(tcp3389),agent的tunnel标识为rogertong,我想连192.168.151.88的远程桌面,那么我的proxy可以这样配置
[setting]
center_host=gw.isuf.cn
center_port=80
tunnel=rogertong
[tcpmap]
rdp=true
[rdp]
server_ip=192.168.151.88
server_port=3389
local_ip=0.0.0.0
local_port=33890
那么,我在自己的机器上运行proxy后,我就可以在自己的机器上通过连 127.0.0.1:33890,就可以访问到 192.168.151.88 的远程桌面了
有疑问加站长微信联系(非本文作者)