preface
说来惭愧,大四之前一直没有接触过这两个东西,自然也说不出来他们之间的差别,最近接触到了网络方面的知识,才知道这两个的区别,就在这里记录一下
首先,两个东西功能是一样的,都是为了在能够访问互联网的同时将内网中的服务投射到公网上访问,只不过 DDNS 针对的是公网的 ip ,而内网穿透针对的是非公网 ip (运营商给的大局域网或者其他局域网等)。
DDNS
DDNS(Dynamic DNS)叫做动态域名服务,比如我们家里的宽带 ip 是通过运营商给的公网 ip,如果这个 ip 是动态变化的(重启光猫或路由器后会重新申请 ip),而我们又想在外地的时候也能访问家里的设备,这时候就可以用 DDNS 服务,在家里的设备上运行 DDNS 脚本,监听着本地的 ip 是否变化
用 DDNS 服务的话我们必须要一个域名,一般去阿里云买吧,几块钱就能买一年了,给域名添加一个指向家庭 ip 的记录,因为这个 ip 是公网 ip ,所以直接访问域名就可以访问到家里的设备,欸?不是说动态 ip 吗,那难道每次都得上阿里云重新添加一个记录吗?大可不必!我们家里运行着 DDNS 脚本,就可以调用运营商的 API (我用的是阿里云的 DDNS 服务),在监控到本地 ip 变化的时候自动修改域名所指向的 IP,这样,我们不需要记住家里的 ip 是多少,只需要记住域名,然后做一些端口映射的设置,就能够让公网能够访问到家里的服务了。
内网穿透
以前经常听说什么花生壳内网穿透,以为很高级的样子,其实也就那样,而且花生壳的域名很难记。。扯远了,内网穿透其实和 DDNS 是一样的,不过这里针对的对象是没有公网 ip 的人,比如运营商 ip 紧缺,给了一个大局域网的 ip 给用户,这时候就不能用 DDNS 了,因为这个 ip 不是公网 ip ,就算域名解析上去也不能让公网访问,而且端口映射也不是在与国际互联网的接口处进行,所以我们家里的服务就不能被外网访问了吗?也不是不可以,内网穿透就是干这事的。
像我们在学校里也偶尔会用到内网穿透,这玩意比 DDNS 烧钱一点,要用到一个 VPS 服务器,也就是说你没有公网 ip 没关系,我可以用一台有公网 ip 的服务器作为跳板来访问你。说得简单一点,在内网的机器上装好内网穿透软件的客户端,在自己的 VPS 上装好内网穿透的服务端,用客户端主动连接服务端,这样在公网和内网之间就形成了一条通道,我们就可以通过访问 VPS 的某个端口来访问到内网的某个端口上运行的服务了