V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Variazioni
V2EX  ›  问与答

有没有一种内网穿透的方法能获取到内网的 IP,把远程计算机当作内网计算机使用?

  •  1
     
  •   Variazioni · 2020-03-18 16:18:47 +08:00 · 5494 次点击
    这是一个创建于 1497 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是这样的。公司内网是没有公网 IP 的,之前远程办公都是用 Teamviewer 或者 frp 开个 3389 端口远程桌面到公司的一台 windows 服务器上工作。

    最近逐渐无法忍受卡顿,于是把各种端口都用 frp 映射过来,frp 服务端是在家的一台有公网 IP 的服务器,在公司一台电脑上装 frp 客户端作为跳板机,把几台集群里的 mysql influxdb rabbitmq 之类的端口都映射过来,速度也可以接受。这样只需要链接 frp 的地址和映射的端口号。就能在本地连上远程的环境。

    可是手动添加 frp 端口映射总是不能满足需求。微服务架构,一台机器就十几个服务,集群里有四五台机器。不只是连几个 mysql 的 3306 端口这么简单。如果全部的端口都手动添加,费时费力,可能还需要经常改动。

    所以我在想。有没有办法通过一台跳板机。利用公司内网目前的 dhcp 获取内网 ip,把远程计算机当作公司内网的一台机器,直接连上内网环境?这样就能访问公司所有的 ip 了。

    第 1 条附言  ·  2020-03-18 18:29:04 +08:00
    看了半天,感觉我可能没表达清楚,情况是这样的。

    前置条件:
    公司 nat 网 IP 段:192.168.10.x
    家里 nat 网 IP 段:192.168.20.x

    比如说我把公司内网 IP 为 192.168.10.100:3306 的 mysql 映射到 frp 的 13306 端口上。
    在家里的电脑如果想连公司的数据库,那么链接应该是 jdbc:frp 服务器地址:13306。
    但是我不仅需要 192.168.10.100 的 mysql,可能还需要 192.168.10.101-200 所有 3306 端口的 mysql。
    常规应该就是手动去把这些 ip 和 port 都去 frp 配置文件里手动写一遍,还需要记住对应关系,这不是我想要的。

    而 zerotier 和各种 vpn 都需要新建一个虚拟网络,比如我在家里电脑 192.168.20.1 上装 vpn,在公司电脑 192.168.10.100 装 vpn,那么这两台电脑都会拥有一个新的 IP 段,家里电脑是 10.0.0.1,公司电脑是 10.0.0.2,这样不能通过 192.168.10.100 访问公司的电脑。

    我想要的效果是,有没有一个软件,比如说能在电脑里装一个虚拟网卡,而这个网卡的 ip 是公司 nat 网络的 dhcp 分配的 192.168.10.x,跟公司 nat 网络的 ip 一样,相当于我家里的电脑的网络处在公司内网中,这样我就能通过一个跳板机访问这个 ip 段下的所有电脑了。
    第 2 条附言  ·  2020-03-18 18:48:15 +08:00

    画了个拓扑图,也不知道画的对不对,大概就是这个意思

    avatar

    第 3 条附言  ·  2021-10-04 09:03:57 +08:00
    看到又有人收藏这个主题了
    说一下现在的解决方案
    目前用的是 softether vpn,完美解决问题,只要在跳板机上装服务端,然后把 vpn 端口用 frp 穿透出来。
    外面用客户端连 frp 穿透出来的地址和端口,再把 vpn 用的虚拟网卡跳数优先级低于物理网卡。
    就能实现访问内网地址走 vpn 。其他地址走物理网卡
    30 条回复    2020-03-20 11:51:00 +08:00
    freebacao
        1
    freebacao  
       2020-03-18 16:28:41 +08:00
    内网搭一个 vpn+nat 通过 frp 映射公网地址作为跳板;
    cuixiao603
        2
    cuixiao603  
       2020-03-18 16:33:09 +08:00
    zerotier ?只不过打洞成功不成功看缘分
    zer
        3
    zer  
       2020-03-18 16:37:26 +08:00
    内网开个 SS 或者 VPN,FRP 将将内网 VPN 服务暴露到公网,你再连这个 VPN,不就是内网环境了
    kingpo
        4
    kingpo  
       2020-03-18 16:37:58 +08:00
    GitHub 上搜索 nps,有服务端和客户端,非常好用,可视化后台,唯一不足的是服务一多容易奔溃
    jjianwen68
        5
    jjianwen68  
       2020-03-18 16:40:29 +08:00
    frp 是不是已经有管理界面,操作是不是方便一些
    novaeye
        6
    novaeye  
       2020-03-18 16:44:03 +08:00
    zerotier, 电信网络打洞还是没问题的, 洞通了之后基本就是你公网的出口速度.
    0victor0
        7
    0victor0  
       2020-03-18 16:56:59 +08:00
    没有公网服务器和 IP,哎
    doveyoung
        8
    doveyoung  
       2020-03-18 17:08:35 +08:00
    zerotier 打洞,如果有条件的话找个云服务器之类的建个 moon,如果能白嫖别人的 moon 也行
    haojie06
        9
    haojie06  
       2020-03-18 17:16:46 +08:00
    zerotier 或者看雪安全接入
    ljpCN
        10
    ljpCN  
       2020-03-18 17:40:27 +08:00 via Android   ❤️ 1
    VPN?站长之前分享过一个 Slack 开源的工具,不知道是不是满足你的需求:
    https://github.com/slackhq/nebula
    westerndream
        11
    westerndream  
       2020-03-18 17:45:46 +08:00
    你这是需要 vpn,端口就随意访问了,试试 wireguard ?不行就 openvpn 啥的
    superrichman
        12
    superrichman  
       2020-03-18 18:39:11 +08:00
    你需要配置路由表, 而不是做一堆映射
    novaeye
        13
    novaeye  
       2020-03-18 18:40:06 +08:00   ❤️ 1
    公司端找台电脑建虚拟机装个 x86 软路由比如 LEDE 配成单臂模式, 然后把要访问的公司电脑的网关地址设置到 LEDE 地址上, LEDE 的上级网关设为公司局域网原来的网关, zerotier 装在 LEDE 里, 家里的电脑连上 zerotier 后添加一下本地路由就可以透过那台软路由直接访问公司局域网网段的 IP 了.
    coolcoffee
        14
    coolcoffee  
       2020-03-18 19:00:31 +08:00
    我觉得都有了公网 ip 给 frp 穿透,直接用 vpn 替换就可以了。

    我这边是用的 wireguard 组网的,腾讯云的几台机器和家里面的几台机器都可以自由通过内网 ip 互访。 大致操作就是家里的一台网关服务器和腾讯云的一台服务器通过 vpn 连通。 家里路由器将腾讯云内网静态路由重定向到网关服务器走 vpn 通道到腾讯云,腾讯云内网访问家里的电脑也类似这么操作。

    但缺点也很明显,会受制与单台公网服务器的出口带宽。现在在考虑网关同时拨多个公网服务器,访问有公网 ip 服务器的内网时直接走对应 vpn 通道。
    Variazioni
        15
    Variazioni  
    OP
       2020-03-18 19:04:50 +08:00
    @superrichman #12 感觉有点接近了。。
    @novaeye #13 LEDE 不太懂。不过感觉这应该就是我要的答案。。有空研究一下
    flynaj
        16
    flynaj  
       2020-03-18 20:57:38 +08:00 via Android
    zerotier
    Jirajine
        17
    Jirajine  
       2020-03-18 21:10:10 +08:00 via Android
    用 frp 随便穿出一种 vpn 服务来,配置静态路由 192.168.10.0/24 路由到 tunnel 就可以通过公司的机器访问内网网段了,没必要强行获取同段的 IP 地址。
    非要达到你说的那种效果的话得在路由器上组网,或者把你家的电脑网卡“桥接”到公司电脑的网卡上,我不知道这种操作能不能远程还要透传实现。
    ysc3839
        18
    ysc3839  
       2020-03-19 00:19:36 +08:00 via Android
    > 而 zerotier 和各种 vpn 都需要新建一个虚拟网络
    因为你在用三层 VPN,改用二层 VPN 就没有这样的问题了,VPN 服务器做交换机接入现有的网络中。
    freebacao
        19
    freebacao  
       2020-03-19 09:15:30 +08:00
    windows 服务器上安装 路由和远程访问 + openvpn
    客户端用 openvpn 连接,配置文件加 route 192.168.10.0 255.255.255.0 vpn_gateway
    lzk50136
        20
    lzk50136  
       2020-03-19 09:36:58 +08:00
    frp 服务端用云服务器试试?我用云服务器做 frp 服务端在家用 3389 连公司的流畅得像本地一样。
    mauve
        21
    mauve  
       2020-03-19 09:59:42 +08:00 via iPhone
    楼主的想法与我契合,我用 V2Ray 搭在树莓派上放公司完美实现了,请参考 V2Ray 新白话文教程 反向代理 2 一节 https://guide.v2fly.org/app/reverse2.html#b-的配置
    efaun
        22
    efaun  
       2020-03-19 10:43:19 +08:00
    安利一下 FCN,你跟我的需求是一样的,这是个在 github 上的不开源项目(当时被 V2 的人喷惨了),使用桥接模式,远程计算机就是公司内网的 IP,可以使用公司内网的资源
    hongwanzhang
        23
    hongwanzhang  
       2020-03-19 11:16:53 +08:00 via iPhone
    huawuya
        24
    huawuya  
       2020-03-19 11:33:52 +08:00
    @Variazioni 你的要求 vpn 或 zerotier 都可以做到,关键在于设置路由和网关。https://www.v2ex.com/t/653960 这是我在另一个帖子里关于使用 zerotier 来做到这一点的回答。
    Variazioni
        25
    Variazioni  
    OP
       2020-03-19 14:16:51 +08:00
    @huawuya #24 非常感谢提供这个方案,相比其他实现起来很方便。我在家里的电脑和公司的电脑安装了 zerotier。。两台电脑使用虚拟 ip 可以互相 ping 通。按照帖子里的说明添加了路由([公司 ip 段 /24] via [公司跳板机虚拟 ip]。。但是使用家里的电脑 ping 公司的非 ip。。并不能 ping 通。。两台电脑防火墙都是关闭的。。其他还需要设置什么东西吗?
    huawuya
        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 的路由,可以转发数据。
    你可以看看跟你的设置有什么区别?
    Variazioni
        27
    Variazioni  
    OP
       2020-03-20 08:51:41 +08:00
    @huawuya #26 感谢回复,我这的配置确实是和你一样的,家里的 win10 上使用 route print 查看有路由。有一点不明白的是,“而公司的跳板机( centos7 )上本身就有 192.168.1.0 的路由”,这点可能不太一样?公司的 Windows 服务器并没有进行过特殊的设置,并且 IP 也是 DHCP 获取的。跟这个有关系吗?
    Variazioni
        28
    Variazioni  
    OP
       2020-03-20 08:53:33 +08:00
    @huawuya #26 另外公司的网络环境比较复杂,从外网到我的 windows 服务器,中间可能有多层路由和交换机的拓扑,跟这个是不是也有关系?
    Variazioni
        29
    Variazioni  
    OP
       2020-03-20 11:26:58 +08:00
    @huawuya #26 我在公司新建了一台 centos 跳板机,安装 zerotier 并且配置好路由。发现家里可以不通过虚拟 ip ping 通公司 nat 网络的 centos 跳板机地址,但是只能 ping 通跳板机,不能 ping 通公司网络下的其他机器,是不是跟因为 centos 上没有公司 ip 段的路由,不能转发数据?
    huawuya
        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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3295 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 13:18 · PVG 21:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.