【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Ubuntu】【远程开发】技术方案分析:VPN 补充
补充分析了远程开发中 VPN 的网络拓扑,可以发现其和内网穿透在网络上有异曲同工之妙,都是借助远程服务器作为跳板,其中一个是实现对内网某个具体服务器的访问,而另一个是接入整个内网,下面继续分析
远程开发
前面 blog 分析了两种远程开发方式:远程桌面,VPN,都是借助一个远程服务器(公网 ip)作为跳板,对内网进行访问,那么假如家里有一个公网 ip,可不可以直接对其进行访问呢?答案当然是可以,具体可以参考下面这篇 blog
(树莓派Raspberry Pi 5系列文章)二、公网远程访问树莓派5的两种方式
下面就分析下这种向 ISP 运营商独立申请公网 ip 和在云服务器上部署远程环境的优劣势:
-
IP 地址信誉:家庭宽带 IP 通常曾被大量滥用,容易被误判为恶意 IP(比如被某些网站加入黑名单),这种情况不影响远程开发,但本地使用可能受影响,而云厂商的 IP 池较大,信誉较好,这方面的风险小点
-
DDoS 防护:基本无防护,极易被小流量打垮,而大厂的云服务可以提供免费或付费 DDoS 防护
-
防火墙与隔离:依赖本地路由器,或者电脑主机的防火墙,如果配置不当容易暴露过多端口,有安全风险(毕竟将自己的家庭环境暴露在整个公网上,容易被机器人扫描和攻击),而云服务器提供安全组,VPC,WAF 等多层防护,方便进行精细化控制
-
系统更新与补丁:需自行维护,容易滞后,漏洞可能被攻击者利用,而云服务器可镜像自动更新,或一键修复漏洞
-
带宽与上行限制 :家庭宽带上传常受限(比如 30Mbps 已经蛮高了,可以自己在家测速下),而且不稳定,云服务器的话上下行对等,带宽可选(100Mbps+ 很常见)

可以看到这里上行速度只有下行速度的10%左右,这里 5.1MB/s 相当于 40Mbps
-
IP 是否固定:即使是向 ISP 申请的独立公网 IP,也可能因 ISP 政策变动而变化,可向云服务厂商购买弹性公网 IP,可以长期固定
-
日志与监控:需自行部署日志和监控系统等(防止异常登录和攻击),而云服务厂商提供丰富的监控,告警,审计日志
综上,向 ISP 申请独立公网 ip 来部署远程环境,虽然免费(不用花钱),但其在网络安全上的要求更高,并且上行速度也会受到限制,所以建议还是在云服务器上部署远程环境,免费的是最贵的
下面综合下之前分析的技术方案:
- 远程桌面 :通过图形化界面直接控制远端计算机,就像坐在那个电脑前操作,用户体验好,完全图形化操作 ,可以直接看到桌面环境,拖拽文件方便,适合非技术人员或需要 GUI 的应用,比如设计软件,IDE 集成开发环境等,但是性能开销大,因为传输的是屏幕图像,占用大量带宽,网络差时卡顿严重或画质下降不清晰(体验过应该知道) ,适合临时技术支持,需完整桌面体验远程办公等场景
- 虚拟专用网络 (VPN) :在公共网络上建立一条加密隧道,将远程设备逻辑接入 到企业或家庭内网,获得一个内网IP地址,进而访问所有内网资源,比如文件共享,打印机,数据库等,技术成熟,部署方案丰富 (OpenVPN,WireGuard 等),社区支持广泛,并且客户端较普及 ,大多数操作系统原生支持或有成熟客户端,但一旦认证通过,用户就拥有过大权限(可以访问所有内网资源),违背最小权限原则 ,另外,VPN 攻击面也大,VPN网关是公网暴露的单一入口,容易成为黑客重点攻击目标 ,而且性能也容易遇到瓶颈,因为所有流量一般需要回传到中心节点,增加延迟 ,配置相对来说比较复杂 ,维护证书,路由规则,ACL等对运维要求较高 ,适合大型团队,比如企业员工远程办公,需要访问多种内部系统,技术人员需要灵活访问整个内网环境等等
- 向 ISP 申请独立公网 IP :从运营商处申请一个公网 IPv4 地址,用于直接对外提供服务,该 IP 可自由绑定域名,配置端口转发规则,数据直达家里的设备,没有中间跳板,因此延迟低,性能高 ,成本相对低(长期看) ,相比云服务器月租,一次性投入后费用主要是宽带费,当然,缺点就是如果配置不当,安全风险极高,服务端口容易被扫描和攻击 ,而且家庭网络防火墙一般较弱,没有专业级防护 (比如 IPS,Intrusion Prevention System,入侵预防系统等),并且资源稀缺难申请 ,即使能申请到,也可能被动态更换,没有内置防护,没有 DDoS 防护,没有自动备份等功能,并且维护责任重,系统更新,补丁,日志监控全部要自行负责 ,适合技术能力强,能自己承担安全责任的开发者
综合以上分析,结合性能,安全,效率,成本,应用,部署难度 多方面因素,后面将以内网穿透为基础,进行远程开发环境部署
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【远程开发】内网穿透:SSH 反向隧道