-
Notifications
You must be signed in to change notification settings - Fork 1
HOWTO : how to access my office OA system from home
我在办公室电脑可以访问公司内部的OA系统,OA系统使用内部域名访问 https://oa.abc-company.internal 。怎样配置ztm使得我在家里可以访问OA?
这个方案和https://github.com/flomesh-io/ztm/wiki/HOWTO:-How-to-access-my-home-Linux-from-office-macOS-by-ztm%3F 有相似之处,但是差异主要在于这个场景使用的是https服务,而且使用域名访问。大多数使用域名访问的应用,比如OA,都会有CORS限制,并且通常都会有一些基于域名的自动跳转,比如SSO。这些因素导致不能简单的采用“端口映射”的方式。常见的方式是这样的:在应用侧部署一个socks代理,然后在客户端采用支持“Proxy DNS”的浏览器,比如firefox;然后把这个socks代理的端口使用ztm映射到客户端。拓扑是这样的:
在办公室运行socks服务有很多方式,比如运行squid,但是这里有更简单的办法,ztm构建在pipy之上,pipy就支持socks协议,因此可以在办公室电脑用以下脚本启动一个最简单的socks代理:
var $target
pipy.listen(9090, $=>$
.acceptSOCKS(
function (req) {
$target = `${req.domain}:${req.port}`
println($target)
return true
}
).to($=>$
.connect(() => $target)
)
)
把这段脚本保存到一个文件中,比如socks.js,然后使用pipy运行就可以了(既可以使用Linux/Macos的term启动,也可以用windows cmd启动):
admin@ip-172-31-15-74:~$ pipy socks.js
2024-05-12 11:53:34.736 [INF] [listener] Listening on TCP port 9090 at 0.0.0.0
2024-05-12 11:53:34.736 [INF] [worker] Thread 0 started
所以,整个的过程大概如下:
-
在公有云启动一个ztm hub。过程可以参考 https://github.com/flomesh-io/ztm/wiki/HOWTO:-How-to-access-my-home-Linux-from-office-macOS-by-ztm%3F#deploy-the-ztm-hub
-
在办公电脑部署和启动一个ztm agent,我们称为agent-office。过程可以参考 https://github.com/flomesh-io/ztm/wiki/HOWTO:-How-to-access-my-home-Linux-from-office-macOS-by-ztm%3F#join-the-mesh
-
在办公室电脑启动socks服务,监听在9090端口
-
在办公室电脑agent-office配置socks服务,过程可以参考 https://github.com/flomesh-io/ztm/wiki/HOWTO:-How-to-access-my-home-Linux-from-office-macOS-by-ztm%3F#expose-your-first-service 。验证结果:
admin@ip-172-31-15-74:~$ curl -s localhost:7777/api/meshes/home-office/endpoints/498135ce-8342-4dca-a03e-92e3aa23d03a/services | jq
[
{
"name": "9090",
"protocol": "tcp",
"endpoints": [
{
"id": "498135ce-8342-4dca-a03e-92e3aa23d03a",
"name": "agent-office",
"isLocal": true
}
],
"isDiscovered": true,
"isLocal": true,
"host": "localhost",
"port": 9090
}
]
-
在家里电脑启动一个ztm agent,我们称为agent-home。过程可以参考 https://github.com/flomesh-io/ztm/wiki/HOWTO:-How-to-access-my-home-Linux-from-office-macOS-by-ztm%3F#join-the-mesh
-
在agent-home配置ztm port 19090,指向agent-office的socks服务。配置过程可以参考 https://github.com/flomesh-io/ztm/wiki/HOWTO:-How-to-access-my-home-Linux-from-office-macOS-by-ztm%3F#create-local-port-for-accessing 。配置的结果如下:
caishu@caishu-macair4 ztm % curl -s localhost:7777/api/meshes/office-home/endpoints/7900b5a5-a744-4019-b7d7-2966e3d7a68d/ports | jq
[
{
"protocol": "tcp",
"listen": {
"ip": "0.0.0.0",
"port": 18080
},
"target": {
"endpoint": null,
"service": "9090"
},
"open": true
}
]
- 在家里电脑配置socks代理,比如我用firefox就是这样配置:
这样完成配置后,在firefox输入 https://oa.abc-company.internal 就可以访问办公室里的OA系统了~