Microduino ENC网络(六)/zh
目的本教程将教大家如何使用Microduino更新著名的动态域名服务提供商之一no-ip服务器上关于你的DNS记录。 设备
动态IP地址我们大部分人在家上网都是用一些网络服务提供商的服务,方正,电信之类的。它们每次分派给我们的地址都是动态的,随时都有可能在变。 所以给访问设备打来了不变。 动态DNS在互联网上你可以找到免费的动态DNS(DDNS)服务:他允许你将你选择的域名和一个IP地址绑定,并且可以随时更新IP地址(绑定不同的IP地址)。 更新可以有不同的方法:
NO-IP应用比较多的动态域名服务商之一是NO-IP。 如果你注册了NO-IP的免费服务,你最多可以设置5台主机,使用Hosts/重定向功能。 在这个教程,我注册了以下域名:enctutorial.no-ip.info。
动态域名客户端每个动态域名客户端,执行以下步骤:
原理图
层层堆叠,再插上网线。 如下图所示:
程序https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_ENC/ENCnetworksix 调试步骤一:首先需要下载EtherCard库:https://github.com/jcw/ethercard 放到你的IDE的libraries文件夹中,重启IDE。 步骤二:解释一下代码: 公网IP: 要获得实际的公网IP,这里有个网址写了一个简单的PHP页面: Microduino浏览这个页面获得实际的公网IP。 DNS记录和比较: //程序用dnsLookup()方法获取域名绑定的IP地址。然后将结果转换成一个字符串,与用上面方法获得的实际公网IP地址用compareTo()方法进行比较: if(!ether.dnsLookup(noIP_host)) { [...] } else { for(int i = 0; i < 4; i++) { dnsIp = dnsIp + String(ether.hisip[i]); if(i < 3) dnsIp = dnsIp + "."; } if(actualIp.compareTo(dnsIp) == 0) { Serial.println("No update needed :)"); [...] } else { Serial.println("Update needed :("); actual_status = STATUS_NOIP_NEEDS_UPDATE; } 认证: NO-IP在更新DNS记录前要进行身份认证。在代码中定义了一个常量: 这个值是用户名:密码字符串,必须用base64编码,我们使用在线的编码器:http://tuxgraphics.org/~guido/javascript/base64-javascript.html 步骤三:下载代码并编译通过。 步骤四:测试一下看看能不能访问到你的Microduino. 结果Microduino会定期的获得动态分给它的公网IP,并比较和更新no-ip网站上的ip地址,使得Microduino可以被访问。
视频 |