使用DDNS快速实现外网到家庭内部网络的互联

  • 2017-03-23
  • 1,525
  • 5

DDNS指的是动态域名解析服务,它允许动态更新DNS服务器上域名和IP地址之间的对应关系,保证通过域名解析到正确的IP地址。也就是说就算你使用路由器拨号上网提供的IP是多哪个台,但也可以通过DDNS服务,可以实现动态IP和域名的实时绑定。

举个比较常见的例子。

我现在有个小米路由器连接了电信的宽带,外网的ip会经常变化,然后我有个域名,叫做 proxy.coderstory.cn.一台linux主机,它连接着路由器。而我现在不在加,可能在星巴卡喝咖啡,我现在拿着笔记本想用星巴卡的wifi去连我的linux主机。当然也可能是我的路由器比较高级,有个usb口子,然后我查了一个移动硬盘,我想把这个硬盘变成私有云,就像百度云盘一样,我能在线上传或者下载数据。

现在的难点有2个,一是IP比较难记,如果我能通过域名的方式访问就好了。二是IP的动态,随时都会失效,我在户外的话,很难获知新的IP地址。

方法1 DMZ+动态IP访问

目前外网最简单访问家庭内部网络的方式是通过我的ip访问我的路由器,然后路由器开启DMZ功能,然后绑定linux主机的ip。

 

Tips:当dmz设置绑定了指定的IP后(这里把使用这个ip的设备称之为dmz设备),路由器会转发所有的外部请求到指定的IP上,也就是说对于dmz设备和外网的连接设备而言,路由器是透明的。

设置方法:

打开小米路由器的设置主页(一般是192.168.31.1),点击主界面上的高级设置-端口转发,在网页的最下方有个dmz设置,直接开启dmz服务,然后设置下linxu主机的ip即可,然后点击应用。


这个时候,所有外部的请求都转发到我的服务器上了,我们当然也就能访问了。

这个方式设置比较简单,dmz会完整的暴露我的linux主机,怕危险也可以设置转发必要的端口。
截图是我通过xshell 使用ssh访问登入服务器的截图

 

 

 

方法2 DDNS+域名访问

方法1有个明显的短板,通过ip访问,但如果ip失效了怎么办?难不成跑回家看看新的ip到底是啥?在方法1的基础上,使用一个域名绑定这个ip,这样就能像访问百度一样访问我的主机了(直接输入www.baidu.com)。至于外网IP会变的问题,我用ddns服务实时的去解析,每次更新ip都会同步更新域名的解析记录。

现在我们需要一个能提供ddns的服务商,而且最好是免费的。我之前使用的是花生壳的服务,不过这花生,感觉还不错。现在我尝换成3322的免费解析。我想,应该会有人对3322影响比较深刻的吧。

想要使用3322的解析服务,请在浏览器中访问www.pubyun.com,然后自己注册个账户,需要你输入手机号和邮箱,完全验证完毕后,进入后台页面 www.pubyun.com/user/,然后点击 创建dns解析 这个下拉菜单,选择 动态域名设置。在打开的创建页面,选择创建动态域名按钮,在弹窗中输入你想要的二级域名名称,一级域名只有个f3322.net是免费的,所以不用去改。
如果运气好这个域名没被人注册,那么你可以注册他,点击创建域名.

最后登入小米路由器的后台,点高级设置-DDNS,进入ddns设置页面。在页面上点添加服务,把你刚申请的域名填进去
这里填的用户名密码是你之前注册的账户的信息,主机名称写你申请的域名,然后保存即可。
接下来什么都不需要做,只需静静的等待几分钟,域名就可以同步解析到你家宽带的外网ip了。

一般路由器都有这些功能,设置也大同小异。
我现在注册了3322的一个ddns域名,此时我们可以在命令提示符下使用nslookup查询下这个域名的解析情况。
我们可以看到能正确解析到我的ip。(左侧是百度查询的我的ip,右侧是域名解析记录查询)

方法3 CNAME转发DDNS

本方法建于方法2之上,方法2有个坑爹的地方就是域名是域名是服务商提供的,我们是无法控制的,f3322.net这个域名看着就有点怪,好看好记的二级域名也基本都被注册了,但我本身就有个独立的域名,我想能不能用自己的域名直接访问。也就是说,我打开的是我的域名,但实际上访问的是f3322.net(我需要ddns解析服务,但我自己不能提供)。Ok,现在将自己的域名通过cname的方式解析到f3322.net就能满足需求。

Tips:
这里解释下,一个域名一般能解析到一个ip,就像每家每户有个门牌号一样,我们称之为A记录,但有时候我们会在自家大门上写个便签:户主不在,有事请到12楼1202室找我,同理我访问的是我的域名,但被告知我要找的东西在f3322.net,进而会去访问f3322.net,但在浏览器上,依旧显示为我的域名,这种解析方式称之为cname,这种解析用户并不清楚这里面存在的跳转,当然还有个显性跳转的方法,你访问我的域名,直接给你跳转到f3322.net,在浏览器中看得到这个跳转,类似于手机上的电话呼叫转移。
具体的类型和解释如下

这个设置需要在你的域名服务商哪里设置。比如我的域名是在阿里注册的,我进入阿里的后台,选择域名管理。然后我设置我的域名的解析设置。

图中红色框框显示的就是我的cname解析,我的域名指向了3322.

这个时候,你就能真正的通过你的域名访问你家里的服务器了,不管你家的ip是多少都行。
是不是很酷?

完整的拓扑图(引用自花生壳官网)

感谢打赏!
微信
支付宝

评论

  • 头像
    clsdl回复

    花生壳的穿透好像不适用小米路由器,只时候他自己的客户端,这个怎么办?

    • coderstory
      coderstory回复

      你的那个是内网穿透吧 这是2个东西了 这篇文章写的是ddns

  • 头像
    zhuiliu回复

    不论是花生壳还是3322解析出来的都是公网ip,但是路由拨号获取的ip是私网ip,这个有什么办法解决呢?

    • coderstory
      coderstory回复

      内网穿透可以解决 但是流量需要付费

      • 头像
        zhuiliu回复

        受教了