[技术贴]微服务中的网关部署在云服务器,自己在公司内网启动服务,怎么让网关能调通自己本地的服务?

2023-02-15 09:35:15 +08:00
 Aliberter

如题,目前遇到这么个问题,一开始想的是内网穿透,但是被 pass 了说是对内网不安全,经过一番调研,阿里云有自己的端云互联工具,但是又不想用阿里云,太贵了。我们的某个竞品,他们部署在云端的后台就能直接发现自己内网的服务并成功调用,这个是怎么做到的呢?希望老哥们给指点一下迷津,感谢

3931 次点击
所在节点    程序员
51 条回复
killva4624
2023-02-15 10:08:39 +08:00
合理合法、又不动网络和运维参与,说实话不太可能...
koloonps
2023-02-15 10:08:49 +08:00
SSH -L 将服务器的端口映射到本地,SSH -R 将本地端口映射到服务器上.修改本机路由,将服务器地址转发到 localhost.这样应该就可以了
lucifer69
2023-02-15 10:09:36 +08:00
部署一个服务注册中心?比如 nacos
xuanbg
2023-02-15 10:10:23 +08:00
VPN 。我在家里,要使用公司的测试环境的话,就拨公司的 VPN 。
koloonps
2023-02-15 10:11:26 +08:00
最简单的方式是开一个 openvpn,不用对外开放端口.用 SSH 将 openvpn 端口映射到本地,然后你在 openvpn 客户端中将服务器设置为本地就可以了
Aliberter
2023-02-15 10:11:27 +08:00
@lower 消息队列怎么实现啊 说实话好像了解到竞品的代码里有 jmx 的东西 跟这个有关系吗大佬
xuanbg
2023-02-15 10:15:02 +08:00
如果服务器上有 doker 的话,稍微改一下下面的 docker 命令里的一些参数,就能通过 vpn 来打通云端的环境了。

docker run -d \
--name=wireguard \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-e SERVERURL=wireguard.domain.com \
-e SERVERPORT=51820 \
-e PEERS=1 \
-e PEERDNS=auto \
-e INTERNAL_SUBNET=10.13.13.0 \
-e ALLOWEDIPS=0.0.0.0/0 \
-e LOG_CONFS=true \
-p 51820:51820/udp \
-v /opt/wireguard/config:/config \
-v /lib/modules:/lib/modules \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--restart unless-stopped \
lscr.io/linuxserver/wireguard:latest
Aliberter
2023-02-15 10:16:41 +08:00
@Eytoyes 确实...但是...
@ragnaroks 这样啊 我感觉我可以去了解一下 谢谢大佬
@luomao 说的比较详细了 但我确实没这个搞过 我学习下试试
@killva4624 确实,比较奇葩
@koloonps 不让动路由..
@lucifer69 跟注册中心没关系 注册中心也在云上
@xuanbg @koloonps 不想额外搭建什么 openvpn 之类的了
happyn
2023-02-15 10:17:33 +08:00
首先公司内网,有公网 ip ,可以对外映射服务吗?

如果没有公网 ip ;那肯定得需要端口映射出去;

不用第三方工具,就得自己集成这个服务,本质上跟第三方工具做的事情是一样的;

如果服务不动,ip 也不想改;最简单的方法就是楼上建议的,用 zerotier 、tailscale ,或者 openvpn 一样的工具,把云服务器和公司内网服务器联网到同一个虚拟网络里,然后用 ssh 或者 socat 端口转发,把公司内网的服务映射到云服务器上;这样对于服务端是无感知的;

如果不用三方工具,就得自己做上面的工作了;
koloonps
2023-02-15 10:19:20 +08:00
修改本机路由,不是修改公司的路由.在本机路由表中添加一条就行.
2han9wen71an
2023-02-15 10:20:36 +08:00
我们是 zerotier
Aliberter
2023-02-15 10:28:41 +08:00
@xuanbg 我去,这个吊,可以用 docker 部,我看看
@happyn 就是可以动服务的代码,刚我看上边有个老哥说能集成 zerotier 到服务里的,我准备看看
@koloonps 本机路由?不是,现在只有公司网络和云端网络两个概念,让云端能访问到公司内网就行,本机路由是啥
john2022
2023-02-15 10:31:56 +08:00
vpn 接入云端一台服务器,两个子网打通就可以了
john2022
2023-02-15 10:32:37 +08:00
@john2022 要求云端的访问内网的服务器都要添加一条路由
koloonps
2023-02-15 10:36:14 +08:00
你从 nacos 获取的其他服务的地址是服务器的局域网地址,你需要在你的机器路由表上添加一条路由将服务器的地址重定向到本机上.你可以看下 SSH 的内网穿透功能.https://zhuanlan.zhihu.com/p/57630633 参考下这个
amrice
2023-02-15 10:43:04 +08:00
要么组网,要么直接把设备暴露到公网里呗
wccc
2023-02-15 10:46:31 +08:00
wireguard 组网
ilovey482i
2023-02-15 10:51:57 +08:00
如果不组网打通环境的话,只能在云端部署测试服务器,将代码部署到测试服务器上去
GopherDaily
2023-02-15 10:56:49 +08:00
测试还是开发?测试考虑下 telepresence
nicholasxuu
2023-02-15 11:12:32 +08:00
如果公司有固定 ip 的网络的话,搭一下 ipsec vpn ,阿里云那儿大概一个月 200 的费用吧。

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

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

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

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

© 2021 V2EX