前言

最近买了个树莓派折腾,所以研究了一些相关技术。树莓派相关内容及技术等下次再说,今天先简单说说内网穿透和DDNS的联系和区别。

正文

用途

  1. 先说结论:

内网穿透和DDNS都是在服务器本身不方便直接接入公网、进行公网访问时候,用的技术手段。目的都是为了实现服务的公网访问和便捷请求。

  1. 示例场景:
    • 微信公众号、小程序开发(虽然有官方测试账号和沙盒环境)阶段,还没部署到线上服务器、绑定域名,想先在自己电脑或主机上测试调用微信接口;
    • 资源在家或公司的局域网环境,自己在外也想访问并使用资源(类似NAS)
    • 希望在外可以查看家中、办公室监控 ....

原理解析

  • 这两者都可实现将局域网服务发布到公网,但所用原理及效率大有不同。
  1. DDNS: DDNS是一种动态域名解析技术(Dynamic DNS),一般的DNS域名解析是对于固定IP的公网网络,在域名服务商那里将域名与固定IP绑定。即可实现通过域名访问固定IP服务器的效果。而DDNS是对于动态的公网IP进行的域名解析操作,主要是使用域名服务商(阿里云、腾讯云都有)提供的接口和SDK,用程序将动态的IP绑定到指定域名,并对IP进行监控和动态绑定。访问时,和固定ip解析的域名没有任何差别,配置好后不再需要其他操作。方便、快捷、一劳永逸。

    条件:

    • IP: 需要有公网IP(动态公网IP也是公网IP);
    • 域名:需要有自己域名,并且有域名操作权限(需要授权给程序进行域名绑定等操作);
    • 公网服务器:不需要
  2. 内网穿透: 内网穿透,是对于没有公网IP、或者有公网IP但自己不能使用(用公司网络和闲置电脑搭建自己的东西)。但还是想将服务投射到公网环境,所使用的一种技术。原理是类似与一种代理和转发,在一个公网可访问的服务器上部署一个内网映射程序的服务端,在需要公网投射的内网服务器上部署一个客户端,两者建立通信。内网穿透后再请求时,其实是先请求的该公网服务器的某个端口,服务端会将该请求转发给内网服务并返回信息,从而实现将内网服务投射到公网可访问。

    条件:

    • IP:不需要有公网IP(只要能上网就行);
    • 域名:理论上需要有自己的域名绑定内网服务(花生壳那种是用的别人的二级、三级域名所以收费啊),当然也可以直接ip+端口进行转发,但不安全、不方便,不推荐;
    • 公网服务器:理论上需要有一个可公网访问的服务器做内网穿透的服务端(同上,花生壳那种是用的他们的服务端,所以会收流量费,或者只免费使用1、2G流量)

对比及区别

条件对比:DDNS需要公网服务器和自己的域名,内网穿透如果是使用的他人的内网穿透服务几乎不需要任何条件;

速度对比:毫无疑问,DDNS的速度和效率肯定大于内网穿透。DDNS只是在IP变动后将IP再次绑定到域名,链路和正常域名请求一样。而内网穿透的请求需要由一个公网IP的服务端对请求进行判断、转发、再回传,链路较长,速度除了受自身网速等影响,也受服务端的影响。

结论

对比后是不是觉得DDNS这么好,谁还用内网穿透啊?而且TM内网穿透我要是不用别人的服务端,我还得自己有个公网服务器来搭建服务端?脱裤子放屁?

哈哈哈,当然还是有原因的。除了上面介绍内网穿透时候说得,自己偷偷搞以外。即使在自己能做主的家庭网络环境下,除了拉的专线,普通的宽带一般也都是大的局域网(也就是内网),连动态公网IP都不是。各大运营商对公网IP都是十分珍惜的,打客服都不一定可以申请到。所以有时候还是需要将自己家的内网环境下的服务投射到公网,只能使用内网穿透。而且如果是临时使用,用一下花生壳等内网穿透厂商的免费流量和服务还是很方便的。

结束语

折腾这个树莓派,对自己的帮助挺大。除了可以学习到许多硬件相关知识,也了解了软件方面及系统相关、网络方面的知识。帮助不小。继续折腾吧!!!