本帖最后由 柳羽衣 于 2017-3-4 11:06 编辑
刚DIY了4盘黑裙,想开外网,结果发现电信竟然不给外网IP,果断投诉走起,告知家里监控需要外网IP,15分钟就给我开通了,所以才有了今天的教程,再次赞一下电信的服务,昨晚9点半才打的电话,9点45分就给我弄好了,废话不多说进入今天的正题。
首先你得具备以下几个条件:
1.拥有外网IP,如果没有就找运营商吧,搞不定的话你可以出门右转花生壳内网穿透了。
2.拥有自己的域名,由于本教程使用的是DNSPOD的动态解析服务,你需要有自己的域名
3.DNSPOD账号,并将域名的DNS改为DNSPOD提供的,DNSPOD稳定速度快,我很多网站都长期使用他们的解析服务,最重要的是免费
首先我们先注册一个域名,随便一家注册商都行,本人在西部数码注册的,如果你们需要注册也可以找我,有折扣哦
然后注册DNSPOD的账号,传送门:https://www.dnspod.cn/ ,然后在控制台添加你的域名
在DNSPOD添加域名
接着,去注册商那里修改dns为dnspod提供的免费线路
- f1g1ns1.dnspod.net
- f1g1ns2.dnspod.net
复制代码
修改域名DNS
下一步,为你的域名添加一条解析的记录
添加记录
我们使用A记录,解析到你现有的外网IP,这个不重要,因为后续我们将使用脚本修改IP,记录添加完成后,我们需要获取这条记录的IP,最简单的办法是使用chrome或任何带有开发工具的浏览器,审查这条记录前面的复选框,复选框的value就是这条记录的ID
获取记录ID的方法还有一种,不过需要使用到API接口,所以我们需要先创建API Token,以便我们使用API接口在DNSPOD的控制台>用户中心>安全设置下添加一条API Toke
API
你会得到一个ID及密钥,请保存好它,如果不幸忘记了也没关系,可以再次创建新的。
如果你还没有得到记录的ID,可以打开:https://c.runoob.com/compile/6,在左边的输入框输入以下代码,请修改对应的数值
- # -*- coding: UTF-8 -*-
- import urllib2,urllib
- data={'login_token':'你的ApiToken数字ID,你的ApiToken数字密钥','format':'xml','domain':'你的域名'}
- content_stream = urllib2.urlopen("https://dnsapi.cn/Record.List", data=urllib.urlencode(data))
- content = content_stream.read()
- print content
复制代码
在右边的输入框会返回一个XML,在记录对应的ITEM中寻找ID的值,这就是记录的ID,到这里我们的准备工作就已经完成,你应该要有以下几个东西
1.记录的ID
2.ApiToken的数字ID及密钥
现在我们进入群晖的控制面板,打开计划任务,新增一条计划任务,选择用户自定义脚本
在计划中将计划的时间设置为每天运行,运行时间为00:00 每隔15分钟运行一次(后面会解释时间设置),结束时间为23:45
在任务设置中输入以下脚本
- curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_token=ApiToken数字ID,ApiToken密钥&format=json&domain=你的域名&record_id=记录的ID&record_line=默认&sub_domain=域名的前缀
复制代码
然后保存即可,每隔15分钟系统会自动连接DNSPOD修改外网IP来实现动态解析,要注意的是由于DNSPOD的API在无变化请求超过5次/小时后,将会锁定记录1小时无法修改,为了避免这种情况,建议计划的时间不要低于15分钟每次,由于IP的变动一般只在重新拨号的情况下发生,所以频率其实可以设置1小时甚至更长或者使用其他API来检测外网IP的变化,有变化再提交修改申请,由于IP的变化并不频繁并且会进一步消耗系统资源,并不建议使用此方法。
附上你可以有以下方法监测脚本的执行情况,使用email通知或者脚本输出监控,跟据输出的结果来判断脚本是否运行成功 请注意由于解析的修改并不是实时生效的,修改完之后可能会有3-5分钟的会无法访问,当然我不认为会有那么凑巧你会在IP修改完刚好访问。
教程结束,如有不明白请跟帖,我会一一回复
|