请问有什么工具可以把内网机器作为 API 服务器?

2021-06-01 09:37:00 +08:00
 sudoy

我们中国办公室用的是国际专线+固定 IP,客户提供 Rest API, 只接受中国办公室的 IP 发送请求。而中国办公室的服务器(其实就是一台 24 小时运行的普通电脑)并没有外网端口映射,是跟普通电脑一样没有直接的公网 IP。 现在要做一个软件,我们美国办公室可以通过客户端访问客户数据。

目前我只能用 Slack 提供的 RTM API 进行中转:也就是美国的同事加入 slack 频道 => 输入订单号码 => 中国服务器收到 Slack message, 然后调用客户 API,返回订单搜索结果 => 通过 Slack API 将 message 传回到 Slack 频道。

问题: 现在想做成 web app 部署在 Heroku 上, 请问各位老哥有什么工具或者服务可以从 Heroku 那里 直接发送 request 请求到我们内网的 API ?这样的话我们就不用 slack 客户端了,拓展起来也灵活些。先行谢过!

以下方案已排除,不考虑:

❌ 租一台有公网 IP 的服务器,让客户将这台服务器加入白名单。

❌ 把中国办公室的固定 IP 映射到服务器上。

3204 次点击
所在节点    问与答
24 条回复
sudoy
2021-06-01 09:42:37 +08:00
由于特殊的原因,以下方案已排除,暂不考虑:

❌ 租一台有公网 IP 的服务器,让客户将这台服务器加入白名单。

❌ 把中国办公室的固定 IP 映射到服务器上。
icemanpro
2021-06-01 09:56:45 +08:00
向日葵
felixcode
2021-06-01 09:58:23 +08:00
租一台公网 IP 服务器,组 VPN 吧
再在中国办公室上做一个 haproxy 或 nginx 转发
loginv2
2021-06-01 10:03:14 +08:00
实时性不高的话,可以在中国办公室这边轮询 web app 那边的接口,然后获取要查询的东西 。谁有公网谁做服务器的思路
Z1on
2021-06-01 10:11:31 +08:00
用 zerotier 组个网
Vegetable
2021-06-01 10:55:46 +08:00
组 VPN

另:我怎么觉得,让对方白名单加一个 IP 并没有那么困难?
manhere
2021-06-01 11:15:01 +08:00
frp
bg7dcw
2021-06-01 11:43:24 +08:00
同上 frp 做内网穿透。
bg7dcw
2021-06-01 11:45:08 +08:00
美国办公室应该大概率有公网 ip 的哇,看看是不是你搞混了。
国内专线也可能有公网 ip 。
如果专线有公网 IP,只是服务器是内网 ip 的话,可以考虑端口映射。
leavic
2021-06-01 13:16:08 +08:00
cloudflare argo tunnel
willamtang
2021-06-01 13:21:46 +08:00
国际专线不是指中国办公室到美国办公室有专线么?是的话,美中办公室内网能互通,都不需要 Heroku 。
不是的话两个办公室弄一条 vpn tunnel,这样就能直接访问了。不用给公网地址。
非要用 heroku 的,看看 private-space-peering 能行不。
sudoy
2021-06-01 13:36:15 +08:00
感谢大家回复!
@manhere:frp 可以的,谢谢!不知道有没有 python 版的
@leavic 请问你说的是 Cloudflare Tunnel 吗?
sudoy
2021-06-01 13:40:23 +08:00
@willamtang 并没有跟美国办公室连接,美国办公室时普通的 AT&T 宽带。我们国内办公室去中国电信开通的那个宽带业务叫“国际专线”,带有固定 IP,然后访问国外网站的速度比普通宽带要快一些,估计是中转的节点要少。
willamtang
2021-06-01 13:52:22 +08:00
有固定 ip 应该是公网 ip 吧,在路由或者防火墙上跟美国办公室建个 tunnel 感觉是最省事的。
sudoy
2021-06-01 13:58:24 +08:00
@willamtang 是的,在组网中,之前用 zerotier,但是 zerotier 用 tcp udp 还可以,http 没成功过,所以想找别的代替
yufeng0681
2021-06-01 14:43:25 +08:00
中国办公室其实有公网 IP (专线的固定 IP 就是)
1 、中国办公室买个路由器 具备 内网映射功能 (公网 8888 端口映射到内网 IP1:80 端口上)
2 、办公室内弄一台机器( IP1 )安装 Nginx,做反向代理配置
3 、配置,接收 http://xxx/yyy 的请求,反向代理到 http://客户 IP:port

---访问流程----
1 、美国办公室访问 http://固定 IP:8888/yyy
2 、路由器转发到 Nginx
3 、Nginx 代理到客户服务器
sudoy
2021-06-01 14:50:09 +08:00
@yufeng0681 谢谢回复,不过目前暂不考虑折腾内网端口映射,想用类似 frp 或者 ngrok 的工具
joesonw
2021-06-01 15:51:05 +08:00
wireguard 组 vpn 呗,美国服务器做住,中国连过去,然后两边访问是对等的。
x66
2021-06-01 17:48:18 +08:00
美国办公室能访问到中国办公室的服务器吗?如果可以的话,在中国办公室的服务器上搭建一个代理服务器?通过代理请求 API
sudoy
2021-06-01 18:19:33 +08:00
@x66 访问不到的,zerotier 组网以后能用 RDP,但是 http 没响应

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/780508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX