V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jmyz0455
V2EX  ›  程序员

想在外网调用内网的接口,请问正确的姿势是什么?

  •  
  •   jmyz0455 · 2020-11-23 16:39:38 +08:00 · 2919 次点击
    这是一个创建于 1468 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上周不是有件小米实习生私自将公司内网端口映射到公网的新闻嘛,当时看了没啥感觉,然后周末跟旧同事叙旧,才想起来类似的事情我也干过啊,简直心有余悸。

    当年毕业没多久,在实习的工作一直干到了前端部门的主管,遇到个客户表示没做过互联网项目,以前都是在内网折腾。由于数据比较私密,所以他们拷贝了测试数据库给我们前后端进行开发,等上线前再部署过去。后来我们这边都开发测试好了,代码发过去。他们说 Java 的东西还好,前端的东西怎么看文档也不会用,QQ 远程协助也不肯,非要我们立马外派一名前端出差到当地协助上线。

    很明显这件苦差只能我来扛了,客户催得也急,叫我马上买了第二天早上六点的飞机出发,下飞机之后还打了一个多小时的出租车才来到客户那个鸟不拉屎的科技园,总算整明白了,客户长期做硬件和数据业务,公司里根本没有前端,只有运维测试和后端,以前的项目都是后端随便 jq 糊上去的。问了下他们的运维,node npm 没听过,docker nginx 不会用,以前的项目都是陈年老 SSH,jar 直接跑到端口上给内网用,听得我直挠头。

    不过我看他们的生产环境好像还算规范,生产环境不接外网,物理机柜放在冷 /热通道封闭系统内,要操作生产环境只能在全监控的操作室内进行(操作室附近还屏蔽了手机信号,搞不懂为什么)。不过服务器的 RHEL 系统上连 Nginx 都没有,幸亏我还有一点 Linux 基础,跑到园区外用 Android 上网下载了源码自己编译,总算在生产环境把前后端服务都跑起来了。

    万万没想到的就是部署成功,他们用了之后,列出了长长的一个改进清单,说是什么我来都来了现场改肯定比远程方便,死活不给我走,逮住我 996 没日没夜地改,我公司那帮孙子又打死不肯来支援,干了两周一看,妈呀清单不减反增。我说顶不住啊,重要问题都给你改了,非紧急需求的我回公司再弄,客户还是不让走,说我在公司调用不了他们的内网 API,我差点就在操作室晕过去🤯🤯🤯

    幸亏在那段时间还是认识了很多人,知道除了不连外网的生产环境外,他们还是有测试环境的,可以写工单申请指定时间内连接外网。当时确实不懂网络安全啥的,但是为了能回家,就找客户的测试妹子,麻烦她每天写工单,申请早上十点到下午五点连接外网,然后再装个花生壳,在这段时间内开内网穿透,这样我就能调用测试环境的 API,还能把 ssh 服务安排上(他们的技术也知道了这件事)。最后我顺利回家,用这个办法远程给他们搞定了清单还干了二期。

    可是现在看来,这种操作挺危险的吧?幸亏项目结束后我就叫妹子把软件卸了。请问在外网调用内网的接口,请问正确的姿势是什么?比如说在公司调用家里局域网,怎样做才是比较安全,至少不会说让自己或公司承受巨大的风险。

    16 条回复    2020-11-24 11:54:15 +08:00
    glfpes
        1
    glfpes  
       2020-11-23 16:52:39 +08:00
    标准答案 VPN
    cuiweieee
        2
    cuiweieee  
       2020-11-23 17:24:08 +08:00
    frp
    hotcool100
        3
    hotcool100  
       2020-11-23 17:24:41 +08:00
    ngrok
    IDAEngine
        4
    IDAEngine  
       2020-11-23 17:26:43 +08:00 via iPhone
    openvpn 内网组网
    laminux29
        5
    laminux29  
       2020-11-23 17:28:09 +08:00
    不想承担风险就不要做,老老实实去现场。

    远程连接或远程调用接口,理论上来说,再怎么注意安全,也有风险。
    simenet
        6
    simenet  
       2020-11-23 17:34:40 +08:00
    我用的 ngrok 我也不知道安不安全
    singerll
        7
    singerll  
       2020-11-23 17:42:35 +08:00 via Android
    风险没有大小,只有有和没有。

    最没有风险的做法就是给客户内网穿透方案,让他们做,到现场也可以,请加钱。
    demonlin
        8
    demonlin  
       2020-11-23 19:08:11 +08:00
    VPN +1
    yeqizhang
        9
    yeqizhang  
       2020-11-23 19:14:46 +08:00 via Android
    都回家了还调个毛线公司的接口,让公司提供条件才干活,调不了那不正好?借口来了
    bitdust
        10
    bitdust  
       2020-11-23 20:41:59 +08:00
    这个工作模式就很神奇

    封闭环境开发也不是没有~

    一般都是在外面开发,然后测试完之后实机部署。。。你这个内网外网来回倒腾确实很费劲
    mansurx
        11
    mansurx  
       2020-11-23 21:00:08 +08:00
    企业级的解决方案应该是终端使用是具有双因素认证的 VPN 拨入公司内网。
    sampeng
        12
    sampeng  
       2020-11-23 21:05:13 +08:00 via iPhone
    标准答案 ipsec vpn 组网
    rabbbit
        13
    rabbbit  
       2020-11-23 21:19:09 +08:00
    麻烦她每天写工单

    楼主应该长得挺帅吧...
    azh7138m
        14
    azh7138m  
       2020-11-23 23:04:02 +08:00   ❤️ 2
    @rabbbit 淦 原本想批评两句楼主,看到这里我默默流下了泪水
    jmyz0455
        15
    jmyz0455  
    OP
       2020-11-24 10:52:53 +08:00
    @glfpes @IDAEngine @demonlin @mansurx @sampeng 谢谢了,我去学习下 VPN 组网的正确姿势。
    @cuiweieee @hotcool100 @simenet 当时我也是搜到 frp ngrok 不过确实不知道安不安全。

    @laminux29 @singerll @bitdust 谢谢,你们说的我知道,老实说,我当时主要是被坑的那个,组员喊不会,产品&销售软骨头,客户说什么就要给什么。客户也奇葩,所有压力顶在我这边,我才工作几年战斗经验不足,上头也是个高高挂起的态度,实属无奈,所以我后来干完了二期,年终啊什么的都拿到,那个花生壳也叫他们卸了,马上离职,以后肯定不敢干这样的操作,现在跳出来骨头肯定得硬,不然真是被社会疯狂毒打。


    @rabbbit @azh7138m 你们想多啦哈哈哈哈,我是把工单写好提交一次然后把请求内容复制下来,每天请妹子跑一句 node 命令 post 内网接口就完事了。
    vision1900
        16
    vision1900  
       2020-11-24 11:54:15 +08:00
    今天用公司的 VPN,发邮件给我除了报备 MAC 地址安装 Cisco AnyConnect 外,还要安装一个叫 Cybereason 的软件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2610 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 07:13 · PVG 15:13 · LAX 23:13 · JFK 02:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.