想在外网调用内网的接口,请问正确的姿势是什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jmyz0455
V2EX    程序员

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

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

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

    当年毕业没多久,在实习的工作一直干到了前端部门的主管,遇到个客户表示没做过互联网项目,以前都是在内网折腾。由于数据比较私密,所以他们拷贝了测试数据库给我们前后端进行开发,等上线前再部署过去。后来我们这边都开发测试好了,代码发过去。他们说 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     Solana     872 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:57 PVG 04:57 LAX 13:57 JFK 16:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86