共计 2192 个字符,预计需要花费 6 分钟才能阅读完成。
绝大部分人通过ISP连接互联网,都会被分到一个动态的IP,每次登陆或者间隔一段时间,连接的IP就会发生变化,像我所在的地方,基本每48小时就会变化一次,即使你中途不断开连接(不知道谁定的规矩)!这个时候,你要是想在其他地方访问你家里网络里面的设备,就会很头疼。一个比较方便的方法是使用动态DNS服务商提供的服务。我曾经一直在用DynDNS的服务,不是那是在他们停掉免费服务之前了(貌似现在又开始服务了),反正你懂得,不是很方便,毕竟Free嘛。 也用过一段时间No-IP的服务,但是自从一次域名夺占事件之后,我就一直在寻找最新的方法,如果能找到一个提供DyN服务的域名注册商(一定要便宜啊,屌丝的心态,不知道你懂不懂),那就再好不过了。功夫不负有心人,终于让我找到NameSilo这家域名注册商,价格公道,童叟无欺,重要的是,他们提供了一个解决Dyn DNS的方法。
通过API
NameSilo为你的域名提供一系列的强大特性,当然其中就包括允许通过API管理你的域名。一旦发现这点,剩下的问题就是写一个脚本来做到这点而已。下面这个例子,我就通过在Windows下建立一个定时Shell脚本来完成这个目的,其他环境下面,原理是差不多的,你可以使用任何一种语言来编写。首先,获得你的API Key。
获得API Key:
管理菜单API Manager下面,点击“Generate New API Key”,接受API 使用条款,点击“Next”。
之后就会显示下一步需要用到的API Key
创建Shell命令
下面的Shell命令会比较现有公共IP与现有IP,如果两者不匹配,这个脚本会更新IP。所有的变量都在顶端,拷贝这个命令到Text编辑器里面,然后修改APIKey,域名信息及主机信息(A记录应该已经存在),这个例子以更新 dyn.forkrobotics.com作为例子,完成后将脚本存NameSiloDDNS.ps1
[php]# NameSilo API Dynamic DNS
#Variables
$APIkey = "49d7202378997443f699a016”
$domain = "forkrobotics.com"
$record = "dyn"
###Code – Do not edit below this line
# Gather data about the DNS entries in the domain
$listdomains = Invoke-RestMethod -Uri "https://www.namesilo.com/api/dnsListRecords?version=1&type=xml&key=$APIkey&domain=$domain"
$CurrentIP = $listdomains.namesilo.request.ip
$RecordIP = ($listdomains.namesilo.reply.resource_record|where {$_.host -eq "$record.$domain"}).value
$RecordID = ($listdomains.namesilo.reply.resource_record|where {$_.host -eq "$record.$domain"}).record_id
$listdomains.namesilo.reply
# If the current IP address is not the same as the one in the record it updates it
if ($CurrentIP -ne $RecordIP){
$update = Invoke-RestMethod -Uri "https://www.namesilo.com/api/dnsUpdateRecord?version=1&type=xml&key=$APIkey&domain=$Domain&rrid=$RecordID&rrhost=$record&rrvalue=$CurrentIP&rrttl=3600"
$update.namesilo.reply
}
[/php]
设定任务
设定一个自动运行的更新任务。
1、开始菜单搜索“Task Scheduler” 或者 “Schedule Tasks” (Windows版本不一样,会有些差别)
2、点击“Create Basic Task”
3、为Task命名,点击Next
4、选择在每天的那个时候运行命令(运行频率你可以自己设定)然后点击Next
5、选择运行时间,点击Next
6、选择“Start a Program” 点击Next
7、对话框中输入 “PowerShell.exe”
8、“Add Arguments” 输入框中输入 “-ExecutionPolicy Bypass C:\scripts\NameSiloDDNS.ps1” 点击Next
9、点击Finish
下一步
这是一个在Windows下运行的简单例子,使用其他平台的,可以重新编辑来满足Linux的运行要求。
PS:顺便附送一枚NameSilo的域名折扣优惠码Coupon Code(SILODOM),价值1美元哦。结账时拷贝括号()里面的代码,输入Coupon Code输入框即可使用。8.99美元的域名,使用这个Namesilo的域名优惠码以后,相当于只要7.99美元,价格那是相当便宜了!
NameSilo域名优惠码:SILODOM
你值得拥有!