如题,目前遇到这么个问题,一开始想的是内网穿透,但是被 pass 了说是对内网不安全,经过一番调研,阿里云有自己的端云互联工具,但是又不想用阿里云,太贵了。我们的某个竞品,他们部署在云端的后台就能直接发现自己内网的服务并成功调用,这个是怎么做到的呢?希望老哥们给指点一下迷津,感谢
![]() |
1
MinJin 103 天前
zerotier
|
2
luomao 103 天前 ![]() 我们这边是和阿里云拉了一条专线,可以直接互访内网
|
![]() |
5
Aliberter OP 我们用的 springcloud 那一套,有能跟服务的项目做集成做绑定,不用额外的网络配置和三方工具,只要本地项目跑起来,就能被云端发现调用,这种技术实现吗?
|
![]() |
6
cheng6563 103 天前
ssh 算第三方工具吗?用 ssh 也能穿透
|
![]() |
7
tramm 103 天前
你们公司不能开放端口吗?
不开放端口,也没专线的话,云服务器起个 TCP 服务,公司的这边写个 TCP 中转服务通过长连接连上去,让云服务器那边所有请求下发到公司的这个中转服务器上...不过感觉这个有点麻烦啊 |
8
Seulgi 103 天前
阿里的端云互联实际也和内网穿透差不多。
|
![]() |
9
Lentin 103 天前
防火墙上做 nat 转发 设置好源 IP 和目的地 IP 端口就行了
|
![]() |
10
Diego01 103 天前
公网访问、VPN 、智能接入网关、共享专线
|
![]() |
17
Eytoyes 103 天前
这不是网工的事吗?提个申请开个口子映射到你的内网服务器,把源地址和目的地址都限制一下就行了
|
![]() |
18
lower 103 天前
楼主项目里有集成消息队列么,感觉应该适合你的场景,改造改造
|
![]() |
19
ragnaroks 103 天前
zerotier 本身有库,集成到你的项目中即可,我用很久以前就实现了 MC 一键 P2P 联机
|
20
luomao 103 天前
和 spring cloud 那套融合起来,还有个比较蛋疼的方法。两边都接入一个消息队列,譬如 rabbitMq ,网关收到消息后将消息发送到队列中并保持连接,内网服务器消费这个”请求”,“请求”的结果消费完以后再将”响应”发送到队列中,网关消费掉这个”响应”后释放连接并返回
|
![]() |
21
killva4624 103 天前
合理合法、又不动网络和运维参与,说实话不太可能...
|
22
koloonps 103 天前
SSH -L 将服务器的端口映射到本地,SSH -R 将本地端口映射到服务器上.修改本机路由,将服务器地址转发到 localhost.这样应该就可以了
|
23
lucifer69 103 天前
部署一个服务注册中心?比如 nacos
|
![]() |
24
xuanbg 103 天前
VPN 。我在家里,要使用公司的测试环境的话,就拨公司的 VPN 。
|
25
koloonps 103 天前
最简单的方式是开一个 openvpn,不用对外开放端口.用 SSH 将 openvpn 端口映射到本地,然后你在 openvpn 客户端中将服务器设置为本地就可以了
|
![]() |
27
xuanbg 103 天前 ![]() 如果服务器上有 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 |
![]() |
28
Aliberter OP |
![]() |
29
happyn 103 天前
首先公司内网,有公网 ip ,可以对外映射服务吗?
如果没有公网 ip ;那肯定得需要端口映射出去; 不用第三方工具,就得自己集成这个服务,本质上跟第三方工具做的事情是一样的; 如果服务不动,ip 也不想改;最简单的方法就是楼上建议的,用 zerotier 、tailscale ,或者 openvpn 一样的工具,把云服务器和公司内网服务器联网到同一个虚拟网络里,然后用 ssh 或者 socat 端口转发,把公司内网的服务映射到云服务器上;这样对于服务端是无感知的; 如果不用三方工具,就得自己做上面的工作了; |
30
koloonps 103 天前
修改本机路由,不是修改公司的路由.在本机路由表中添加一条就行.
|
31
2han9wen71an 103 天前
我们是 zerotier
|
![]() |
32
Aliberter OP |
33
john2022 103 天前
vpn 接入云端一台服务器,两个子网打通就可以了
|
35
koloonps 103 天前
你从 nacos 获取的其他服务的地址是服务器的局域网地址,你需要在你的机器路由表上添加一条路由将服务器的地址重定向到本机上.你可以看下 SSH 的内网穿透功能.https://zhuanlan.zhihu.com/p/57630633 参考下这个
|
![]() |
36
amrice 103 天前
要么组网,要么直接把设备暴露到公网里呗
|
![]() |
37
wccc 103 天前
wireguard 组网
|
![]() |
38
ilovey482i 103 天前
如果不组网打通环境的话,只能在云端部署测试服务器,将代码部署到测试服务器上去
|
39
GopherDaily 103 天前
测试还是开发?测试考虑下 telepresence
|
40
nicholasxuu 103 天前
如果公司有固定 ip 的网络的话,搭一下 ipsec vpn ,阿里云那儿大概一个月 200 的费用吧。
|
41
ChengHaha 103 天前
我是在本地启动一个网关,前端指向本地的网关就好了
|
![]() |
42
nicebird 103 天前
不难吧,自己开发个代理都可以
|
43
Bottle 103 天前 ![]() 说一下我们公司的情况:
1 、有两台物理服务器放在公司内网,部署一些服务 2 、办公室没有固定公网 IP 3 、有几台阿里云 ECS ,有公网 IP ,几台 ECS 之间内网互通 需求是:ECS 上的所有服务,都能访问办公室内网两台机器上的服务 我们采用的解决方案是:SSH 远程端口转发 1 、办公室内网服务端口转发到 ECS 指定端口上 2 、ECS 上的服务,通过转发的端口,访问公司内网服务 希望能够帮到你。 参考资料: https://www.ronpad.com/docs/ssh/port-forwarding-4.html https://www.cnblogs.com/XiiX/p/15095135.html |
![]() |
44
BQsummer 103 天前
我们公司也有类似场景, ios 打包需要 mac 机器, 云服务没有, 就把 mac mini 放在办公地点的机房, 走的 vpn
|
45
lyc8503 103 天前
如果不用过墙的话 wireguard 或者 openvpn 就可以? 两者都是完全开源的工具.
|
![]() |
46
k8ser 103 天前
wireguard over udp ,国内运营商的环境还是要测试下。
|
47
salmon5 103 天前
专线
|
![]() |
49
piku 102 天前 via Android
tram 的方法是正确的,只要有网络连接,无所谓是从内网连到云端还是从云端连到内网。不知道你们中间究竟需要什么样的数据交互,总体上从内网起一个 tcp 连到云服务器上,然后数据走这个长连接就是了。约等于手机接收推送(比如 jipush )消息的原理。
内网穿透一般是指建立一个其他连接可以用的隧道,上面的方法只供一个连接通道用,算是内网穿透的简化吧 |
![]() |
51
sunnysab 102 天前 via Android
干过类似事情,不过协议是私有的,代码自己写的,比较好改 😂
|