需求是这样的。公司内网是没有公网 IP 的,之前远程办公都是用 Teamviewer 或者 frp 开个 3389 端口远程桌面到公司的一台 windows 服务器上工作。
最近逐渐无法忍受卡顿,于是把各种端口都用 frp 映射过来,frp 服务端是在家的一台有公网 IP 的服务器,在公司一台电脑上装 frp 客户端作为跳板机,把几台集群里的 mysql influxdb rabbitmq 之类的端口都映射过来,速度也可以接受。这样只需要链接 frp 的地址和映射的端口号。就能在本地连上远程的环境。
可是手动添加 frp 端口映射总是不能满足需求。微服务架构,一台机器就十几个服务,集群里有四五台机器。不只是连几个 mysql 的 3306 端口这么简单。如果全部的端口都手动添加,费时费力,可能还需要经常改动。
所以我在想。有没有办法通过一台跳板机。利用公司内网目前的 dhcp 获取内网 ip,把远程计算机当作公司内网的一台机器,直接连上内网环境?这样就能访问公司所有的 ip 了。
画了个拓扑图,也不知道画的对不对,大概就是这个意思
1
freebacao 2020-03-18 16:28:41 +08:00
内网搭一个 vpn+nat 通过 frp 映射公网地址作为跳板;
|
2
cuixiao603 2020-03-18 16:33:09 +08:00
zerotier ?只不过打洞成功不成功看缘分
|
3
zer 2020-03-18 16:37:26 +08:00
内网开个 SS 或者 VPN,FRP 将将内网 VPN 服务暴露到公网,你再连这个 VPN,不就是内网环境了
|
4
kingpo 2020-03-18 16:37:58 +08:00
GitHub 上搜索 nps,有服务端和客户端,非常好用,可视化后台,唯一不足的是服务一多容易奔溃
|
5
jjianwen68 2020-03-18 16:40:29 +08:00
frp 是不是已经有管理界面,操作是不是方便一些
|
6
novaeye 2020-03-18 16:44:03 +08:00
zerotier, 电信网络打洞还是没问题的, 洞通了之后基本就是你公网的出口速度.
|
7
0victor0 2020-03-18 16:56:59 +08:00
没有公网服务器和 IP,哎
|
8
doveyoung 2020-03-18 17:08:35 +08:00
zerotier 打洞,如果有条件的话找个云服务器之类的建个 moon,如果能白嫖别人的 moon 也行
|
9
haojie06 2020-03-18 17:16:46 +08:00
zerotier 或者看雪安全接入
|
10
ljpCN 2020-03-18 17:40:27 +08:00 via Android 1
VPN?站长之前分享过一个 Slack 开源的工具,不知道是不是满足你的需求:
https://github.com/slackhq/nebula |
11
westerndream 2020-03-18 17:45:46 +08:00
你这是需要 vpn,端口就随意访问了,试试 wireguard ?不行就 openvpn 啥的
|
12
superrichman 2020-03-18 18:39:11 +08:00
你需要配置路由表, 而不是做一堆映射
|
13
novaeye 2020-03-18 18:40:06 +08:00 1
公司端找台电脑建虚拟机装个 x86 软路由比如 LEDE 配成单臂模式, 然后把要访问的公司电脑的网关地址设置到 LEDE 地址上, LEDE 的上级网关设为公司局域网原来的网关, zerotier 装在 LEDE 里, 家里的电脑连上 zerotier 后添加一下本地路由就可以透过那台软路由直接访问公司局域网网段的 IP 了.
|
14
coolcoffee 2020-03-18 19:00:31 +08:00
我觉得都有了公网 ip 给 frp 穿透,直接用 vpn 替换就可以了。
我这边是用的 wireguard 组网的,腾讯云的几台机器和家里面的几台机器都可以自由通过内网 ip 互访。 大致操作就是家里的一台网关服务器和腾讯云的一台服务器通过 vpn 连通。 家里路由器将腾讯云内网静态路由重定向到网关服务器走 vpn 通道到腾讯云,腾讯云内网访问家里的电脑也类似这么操作。 但缺点也很明显,会受制与单台公网服务器的出口带宽。现在在考虑网关同时拨多个公网服务器,访问有公网 ip 服务器的内网时直接走对应 vpn 通道。 |
15
Variazioni OP |
16
flynaj 2020-03-18 20:57:38 +08:00 via Android
zerotier
|
17
Jirajine 2020-03-18 21:10:10 +08:00 via Android
用 frp 随便穿出一种 vpn 服务来,配置静态路由 192.168.10.0/24 路由到 tunnel 就可以通过公司的机器访问内网网段了,没必要强行获取同段的 IP 地址。
非要达到你说的那种效果的话得在路由器上组网,或者把你家的电脑网卡“桥接”到公司电脑的网卡上,我不知道这种操作能不能远程还要透传实现。 |
18
ysc3839 2020-03-19 00:19:36 +08:00 via Android
> 而 zerotier 和各种 vpn 都需要新建一个虚拟网络
因为你在用三层 VPN,改用二层 VPN 就没有这样的问题了,VPN 服务器做交换机接入现有的网络中。 |
19
freebacao 2020-03-19 09:15:30 +08:00
windows 服务器上安装 路由和远程访问 + openvpn
客户端用 openvpn 连接,配置文件加 route 192.168.10.0 255.255.255.0 vpn_gateway |
20
lzk50136 2020-03-19 09:36:58 +08:00
frp 服务端用云服务器试试?我用云服务器做 frp 服务端在家用 3389 连公司的流畅得像本地一样。
|
21
mauve 2020-03-19 09:59:42 +08:00 via iPhone
楼主的想法与我契合,我用 V2Ray 搭在树莓派上放公司完美实现了,请参考 V2Ray 新白话文教程 反向代理 2 一节 https://guide.v2fly.org/app/reverse2.html#b-的配置
|
22
efaun 2020-03-19 10:43:19 +08:00
安利一下 FCN,你跟我的需求是一样的,这是个在 github 上的不开源项目(当时被 V2 的人喷惨了),使用桥接模式,远程计算机就是公司内网的 IP,可以使用公司内网的资源
|
23
hongwanzhang 2020-03-19 11:16:53 +08:00 via iPhone
我之前也遇到过,我是这样解决的:frp+ss
https://hongwan.xyz/2019/12/07/frp,ngrok%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/#more |
24
huawuya 2020-03-19 11:33:52 +08:00
@Variazioni 你的要求 vpn 或 zerotier 都可以做到,关键在于设置路由和网关。https://www.v2ex.com/t/653960 这是我在另一个帖子里关于使用 zerotier 来做到这一点的回答。
|
25
Variazioni OP @huawuya #24 非常感谢提供这个方案,相比其他实现起来很方便。我在家里的电脑和公司的电脑安装了 zerotier。。两台电脑使用虚拟 ip 可以互相 ping 通。按照帖子里的说明添加了路由([公司 ip 段 /24] via [公司跳板机虚拟 ip]。。但是使用家里的电脑 ping 公司的非 ip。。并不能 ping 通。。两台电脑防火墙都是关闭的。。其他还需要设置什么东西吗?
|
26
huawuya 2020-03-19 23:16:30 +08:00
@Variazioni 我这没有什么别的设置了,在 zerotier 的网页上添加了路由就可以从家里的机器连公司网络里的任一台机器了。
例如我家里网段 192.168.0.X,公司网段 192.168.1.X,虚拟 IP 网段是 192.168.193.X。zerotier 网页上增加的路由是“192.168.1.0/24 via 192.168.193.5”。(192.168.193.5 是公司跳板机的虚拟 IP)。 增加后家里 win10 上就会自动添加一个路由设置 “192.168.1.0 255.255.255.0 192.168.193.5 192.168.193.107”(命令行下用 route print 查看) 192.168.193.107 是我家里 Win10 的虚拟 IP。表明发往 1 网段的数据都通过本机 zerotier 的虚拟网卡(193.107)发给公司的跳板机(193.5)。而公司的跳板机( centos7 )上本身就有 192.168.1.0 的路由,可以转发数据。 你可以看看跟你的设置有什么区别? |
27
Variazioni OP @huawuya #26 感谢回复,我这的配置确实是和你一样的,家里的 win10 上使用 route print 查看有路由。有一点不明白的是,“而公司的跳板机( centos7 )上本身就有 192.168.1.0 的路由”,这点可能不太一样?公司的 Windows 服务器并没有进行过特殊的设置,并且 IP 也是 DHCP 获取的。跟这个有关系吗?
|
28
Variazioni OP @huawuya #26 另外公司的网络环境比较复杂,从外网到我的 windows 服务器,中间可能有多层路由和交换机的拓扑,跟这个是不是也有关系?
|
29
Variazioni OP @huawuya #26 我在公司新建了一台 centos 跳板机,安装 zerotier 并且配置好路由。发现家里可以不通过虚拟 ip ping 通公司 nat 网络的 centos 跳板机地址,但是只能 ping 通跳板机,不能 ping 通公司网络下的其他机器,是不是跟因为 centos 上没有公司 ip 段的路由,不能转发数据?
|
30
huawuya 2020-03-20 11:51:00 +08:00
@Variazioni 你能直接 ping 通跳板机的公司 ip 地址,说明是通了的,只是缺少跳板机到公司其它机器的路由。真没有的话可以手工加一个。
下面是我在公司的跳板机的路由。第一条是缺省就有的,第三条是 zerotier 自己加的。第二条的 192.168.1.5 就是跳板机的公司 ip 地址,有可能这个是我手工加上的,时间太长记不清了,供参考。 default via 192.168.1.1 dev ens192 proto static metric 100 192.168.1.0/24 dev ens192 proto kernel scope link src 192.168.1.5 metric 100 192.168.193.0/24 dev zt2lrzli6v proto kernel scope link src 192.168.193.5 |
31
eunrui 179 天前
请教下 OP , 按照你说的 frp 穿透出来了,也能连上,SecureNat 要怎么配置才能访问到内网的资源呢,明明已经给 dhcp 了内网的网段
|
32
Variazioni OP @eunrui 不需要设置 SecureNat 。保持关闭。内网 ip 是目标网络的 dhcp 服务器分配的。如果已经有 ip 。但是没法访问同网段的资源,有可能是路由表的问题
|