各位老铁们好,相信很多人对使用阿里云API实现DDNS,再也不用花钱买花生壳花生棒了都不是特别的了解,因此呢,今天就来为大家分享下关于使用阿里云API实现DDNS,再也不用花钱买花生壳花生棒了以及的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
这里我们需要先讲一下实现内网穿透需要什么条件。如果您没有,请看一下。
1.您需要有一个域名。如果您没有,您可以购买一个。普通域名一年只需十几块钱,或者几块钱。买个十年也花不了多少钱。
2.既然要使用ddns,那么就需要一个公网IP。现在大部分家庭网络都是私有网络,所以需要申请。我家里用的是中国电信。我拨打了客服电话10000进行申请。第三位大神已经帮我解决了。不知道申请联通移动的网络是否方便。听说申请很困难,因为分配给他们的地址很少。这里什么是私有网络,什么是公共网络?比如你家里有路由器,家里的电脑、电视、手机获取的IP地址就是路由器分配的IP地址,是私网IP。但路由器拨号上网所获得的IP地址是由电信公司分配的。那么如果路由器使用的IP地址是公网地址。同样的道理,就像说一个电信公司有一个巨大的路由器,每家每户使用的路由器上获取的IP地址都是由电信公司的大路由器分配的。电信公司的路由器使用公网IP。在我们的路由器上拨号得到的IP是私有IP。如果我们想使用公网IP,就必须申请。中国电信拥有大量的公网IP地址,申请起来比较容易。那么为什么不为每个家庭分配公共IP地址呢?是因为用户太多,公网IP不够用。此外,公共IP比私有IP更好、更快。离主题太远了……
3、无论你想做什么内网渗透,家里总是需要一台服务器。例如,一台闲置多年的坏笔记本电脑。扔掉了再也没用过,实在是太可惜了。最好是功耗低一点,不耗电的。我家里有两台旧笔记本电脑(只能运行WinXP系统的),一台是Windows平板电脑,一台是华硕低功耗上网本。一台是我上学时买的,我想是2009年买的。Windows平板电脑是Windows 8的山寨版,运行在Windows 8上,但没有网线插座。作为服务器时功耗很大,但网络可能不好,所以选择华硕上网本,安装centOs。
4.由于其他原因,例如家里没有互联网或路由器,那么.
说说实现原理
即使是公网IP也会发生变化,不会保持不变。具体原因就不说了。因此,我们需要利用阿里云的云分析API制作一个动态改变分析值的组件,然后在服务器上进行设置。定期执行该组件。当您发现公网IP发生变化时,立即将解析值修改为最新的IP,以保证域名解析始终指向您的家庭服务器。
1、实施步骤:
1.申请公网IP
2、阿里云域名(需要注册,过程比较麻烦但是注册起来比较容易),设置需要解析的域名解析值到这个公网IP
3. 设置路由器。路由器的端口映射可以将网络上的请求定向到您局域网上的服务器。注意,路由器必须根据mac地址为服务器分配静态IP,不能让服务器自动获取IP。当然,你也可以把你的服务器放在猫旁边,直接连接猫获取IP,省去端口映射。
4.服务器可以是linux或windows,无论你想使用web ftp服务器.
5、将开发好的组件放入服务器
上面的步骤就这么简单。下面我们重点关注这个组件的开发。 Python 用于开发组件。我不会详细介绍设置Python服务器的方法。我也是Python新手。我只花了两天时间看了runoob的python3教程。我主要做PHP和前面的部分。如果下面的代码写得不好或者注释有误,希望高手不要笑指正。
2、实现原理:
首先获取当前的公网IP,然后获取阿里云域名列表,找出需要修改的域名解析值,然后与公网IP进行比较。如果两个IP不同,则说明公网IP改变了主意,需要将解析值更改为新的。即将到来的IP
现在开始直接贴代码:
#1 获取公网IP
import requests #异步请求库安装方法终端运行:pip install requests
进口再
def get_local_ip(self):
#通过向http://txt.go.sohu.com/ip/soip网站发送get请求,会获取当前局域网所在外网(公网)的IP信息,并返回一串字符串。注意,使用异步请求需要requests库的支持。
text=requests.get(‘http://txt.go.sohu.com/ip/soip’).text
#通过表达式解析返回的IP地址
ip=re.findall(r’\d+.\d+.\d+.\d+’,文本)
返回ip[0]
#2 获取域名列表并修改解析值
#阿里云分析库以下4种库安装方法
#pip安装aliyun-python-sdk-core
#pip安装aliyun-python-sdk-domain
#pip安装aliyun-python-sdk-alidns
从aliyunsdkcore.client 导入AcsClient
从aliyunsdkcore.acs_exception.exceptions 导入ClientException
从aliyunsdkcore.acs_exception.exceptions 导入ServerException
从aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest导入DescribeDomainRecordsRequest
从aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest 导入UpdateDomainRecordRequest
import json #系统自带。如果没有,请下载并安装。
”’ 从阿里云后台获取的AccessKeyId
AccessKeySecret阿里云后台获取
RegionId一般默认为zh-hangzhou
DomainName 需要获取的域名,如xxx.cn、xxx.com
RrName解析主记录可以通过阿里云后台解析列表查看。例如,www.xxx.com 的主记录是www home.xxx.com,主记录是home。
PageSize 获取解析列表每页显示的数量,默认为20,最大为200
”’
客户端=AcsClient(AccessKeyId, AccessKeySecret, RegionId)
请求=描述域记录请求()
request.set_accept_format(‘json’) #返回的数据格式为json
request.set_DomainName(‘您要解析的域名DomainName ‘) #要获取的域名
request.set_PageSize(‘每页显示的记录数PageSize ‘) # 每页显示的记录数
响应=client.do_action_with_exception(请求)
dns_list=str(response,encoding=’utf-8′) #获取json字符
list_boj=json.loads(dns_list); #将json字符串转换为python字典
record=list_boj[‘DomainRecords’][‘Record’]; #获取dns列表中需要修改的dns组格式,如{‘RR’: ‘xx’,’Line’: ‘default’,’Status’: ‘ENABLE’,’Locked’: false,’输入’: ‘A’,’域名’: ‘xxx.cn’,’值’: ‘0.0.0.0’,’RecordId’: ‘123456789.’, } ,{”:”,}
#必填参数
记录ID=”
类型=”
RR=”
这个IP=”
#遍历记录获取RR:主记录RecordId:记录id Type:记录类型ThisIp:当前解析的值
对于record: 中的x
rtop=x[‘RR’]; #下面用主记录来判断是否与修改设置的RrName一致。如果一致,则取出需要的参数并跳出循环。
if(rtop==RrName):
RecordId=x[‘RecordId’];
类型=x[‘类型’];
RR=x[‘RR’];
ThisIp=x[‘值’];
休息;
if(‘公网ip’ !=ThisIp):
请求=UpdateDomainRecordRequest()
requests.set_accept_format(‘json’)
requests.set_RecordId(RecordId) #记录id
requests.set_RR(RR) #主记录
requests.set_Type(Type) #记录类型如A
requests.set_Value(‘new public network ip’) #修改为当前公网IP
响应=client.do_action_with_exception(请求)
infJson=str(响应,编码=’utf-8′)
infObj=json.loads(infJson); # 解析返回值,如果返回成功,则返回该记录值的RecordId
if(RecordId==infObj[‘RecordId’]):
inf=’IP修改成功! RecordId:’+infObj[‘RecordId’]
否则:
inf=’IP修改失败’
否则:
inf=’IP相同,无需修改! ‘
返回信息;
上面的代码是一个解决思路。使用这段代码的时候,要注意自己的使用逻辑。需要根据自己的逻辑进行修改,并注意缩进问题。
部分代码截图如下:
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/175725.html
用户评论
矜暮
终于可以告别那些死贵的花生壳了!这个方法太赞了,自己搭建一套更靠谱的 DDNS,而且还能省钱!感觉阿里云的服务越来越好用了。
有12位网友表示赞同!
早不爱了
我之前一直用花生壳,偶尔遇到服务不太稳定的情况,现在试试阿里云 API 实现 DDNS,希望能更加流畅和安全。还是有点担心能不能配置成功啊,希望详细教程能写的详细点!
有15位网友表示赞同!
酒笙倾凉
这个方法真酷炫!不用花钱再也不受限于花生壳了自由度更高,我也尝试过,发现设置起来比较简单,而且阿里云的API文档也很清晰易懂!
有11位网友表示赞同!
*巴黎铁塔
对于小白来说,这篇文章有点难懂啊,还是建议添加一些更详细的操作步骤和图解,这样更容易入门!
有6位网友表示赞同!
纯情小火鸡
我用的花生壳多年了,现在想换个新的 DDNS 服务,阿里云的API接口好像功能强大很多,而且比花生壳便宜不少,需要仔细研究一下!
有5位网友表示赞同!
苏樱凉
太棒了! 我一直都在寻找摆脱花生壳的替代方案,阿里云 API 实现 DDNS 绝对是个好办法!省钱又省心,强烈推荐给大家!
有10位网友表示赞同!
孤街浪途
不过我还是不太了解阿里云的服务价格,还有没有其他更便宜的选择呢?
有14位网友表示赞同!
见朕骑妓的时刻
这篇文章对小白友不友好,技术含量有点高,我看了半天也没理解!希望能有更简单的教程,或者视频讲解!
有18位网友表示赞同!
烟雨离殇
这个方法确实可以实现 DDNS的效果,不过阿里云的API接口操作还是有些复杂,需要有一定编程基础才行!
有18位网友表示赞同!
南宫沐风
阿里云服务稳定性很高啊!相信用上阿里云 API 实现 DDNS,我的网站访问速度会提升很多
有16位网友表示赞同!
_心抽搐到严重畸形っ°
我使用花生壳的时候偶尔会出现断线的情况,非常令人头疼。 现在打算试试阿里云,希望可以解决这个问题并且获得更稳定的体验。
有10位网友表示赞同!
伤离别
这个方法确实是一个替代方案,不过我对阿里云的安全性不太了解。 有没有其他用户可以使用阿里云 API 实现 DDNS 的分享,说说他们的使用感受和建议?
有16位网友表示赞同!
。婞褔vīp
我尝试了阿里云 API 实现 DDNS,发现设置过程比想象中要简单很多!而且官方文档也很详细,新手也能轻松搞定!
有10位网友表示赞同!
情深至命
我很担心阿里云的DDNS服务会不会太贵,有没有人知道具体的收费标准呢?
有5位网友表示赞同!
眉黛如画
阿里云的服务不错,但是我希望他们能够优化一下 API 文档,使其更易于理解,尤其对于初学者来说!
有12位网友表示赞同!
哭着哭着就萌了°
这个方法真的很有潜力,可以更加方便我们管理和访问远程设备。 期待后续的发展!
有6位网友表示赞同!
◆残留德花瓣
用花生壳 DDNS 很多年了,虽然服务还算稳定,但这次看到阿里云 API 实现 DDNS,真的很兴奋!希望它能给我带来更好的体验!
有6位网友表示赞同!
泪湿青衫
对于我来说,DDNS 的主要目的是确保我的服务器始终可访问。 如果阿里云API实现的方案能够保证稳定性和安全性,那我一定会试试看!
有6位网友表示赞同!
素婉纤尘
我比较担心阿里云 API 的复杂性,希望官方能够提供更简洁易用的接口,这样就能更加方便普及了!
有13位网友表示赞同!