在家也能轻松访问公司内网的秘密|穿透!

  • 2021 年 3 月 11 日
  • AI

最近,我在家开发了一套知识问答系统,并成功部署在实验室内网的服务器上。
在将系统提供给公司的小伙伴测试时,碰到一个麻烦:由于端口没有在外网暴露,外界无法访问实验室内网中的项目。
调研后发现,现有2种解决方案:
  • 在公网服务器上搭好环境,重新部署系统;演示完成后,删除
  • 通过内网穿透实现端口映射,在哪都能访问系统
无论是从效率还是可行性考虑,第二种方法都是更好的选择。借此话题,我们来聊一聊如何在家就能访问公司局域网内的信息呢?

1 内网穿透和ngrok

公司的多台计算机一般构成内部使用的局域网络或办公网络。离开公司回到家时,除了远程控制,一般不能连上公司主机,获取资料。
但有了内网穿透,就可以像浏览公网一样访问内网了。

官方定义:内网穿透,是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 屏蔽而正确路由到内网主机。

实现内网穿透的方法有很多,例如VPN、frp、ngrok、花生壳等等。
其中ngrok是一个反向代理,通过在公共端点和本地Web服务器之间建立一个安全通道,ngrok可捕获和分析所有通道上的流量。

正向代理

如果把局域网外的Internet想像成一个巨大的资源库,则局域网中的客户端要访问Internet,需要通过代理服务器来访问。
这种隐藏了客户端的代理服务,称为正向代理

例如国内无法直接访问谷歌,需要通过一台国外ip的代理服务器转发。“搭梯子”就是典型的正向代理。

反向代理

当把请求发送到反向代理服务器,将由反向代理服务器选择目标服务器,获取数据后再返回给客户端。

此时反向代理服务器和目标服务器对外是一个服务器,暴露的是代理服务器ip,隐藏真实服务器的ip。
隐藏了服务端的代理服务,称为反向代理。

2 薅羊毛之10分钟免费实现穿透

不妨借助内网穿透工具SunnyNgrok,试一试穿透的效果。

第一步,登录//www.ngrok.cc/完成注册,点击左侧“开通隧道”。

一些高带宽,访问稳定的服务器是需要money的,如果只是项目演示或小并发demo测试,可以直接选择免费服务器

在隧道中设置好协议、名称、前置域名和内网server需要映射的端口,确定添加即可。

开通后,在隧道管理中,可以查看新建的隧道。当前隧道显示不在线,大家需要下载Ngrok客户端,启动ngrok服务

以Linux版本为例,在内网服务器上下载解压安装包,进入文件,输入指令和隧道id启动服务。
./sunny clientid 隧道id
完成后,隧道显示“online”,表示连接成功。现在,就可以用赠送域名来访问内网的服务了。很简单哦!

除了内网穿透,ngrok还能实现微信开发、HTTP转发等功能。

Demo

我在实验室服务器上部署了一个情感分析api,经内网穿透后,在公网通过免费域名成功访问到了服务。

这种方法既可以让用户在任何地方访问内网服务,又隐藏了服务器的真实地址,满足了安全和便捷的需求。
除了使用SunnyNgrok、花生壳等DDNS服务商的应用,我们还可以自建ngrok服务器
搭建前需要准备一台公网服务器(阿里云/腾讯云等),感兴趣的读者可以参考手把手搭建教程:
//www.vediotalk.com/?p=336
本文带大家以「薅羊毛」的方式,通过ngrok简单高效地实现内网穿透。
它能让你的本地服务暴露在外网上面,供其他用户访问。如果在开发中碰到类似需求,可以用ngrok来解决!

深度学习资源下载
在NLP情报局公众号后台回复“三件套”,即可获取深度学习三件套:
《PyTorch深度学习》,《Hands-on Machine Learning》,《Python深度学习》
推 荐 阅 读

参 考 文 献

[1] 如何让别人访问到你的本地项目?Ngrok学起来!://www.bilibili.com/video/BV17K4y187A2?from=search&seid=9694463133865006098

[2] Sunny-Ngrok教程://www.ngrok.cc/_book/

欢 迎 关 注 我 们?

原创不易,有收获的话请帮忙点击点赞分享吧?