日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

搭建服务器 运用阿里云DNS自己实现DDNS

發布時間:2023/12/8 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搭建服务器 运用阿里云DNS自己实现DDNS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異想之旅:本人原創博客完全手敲,絕對非搬運,全網不可能有重復;本人無團隊,僅為技術愛好者進行分享,所有內容不牽扯廣告。本人所有文章僅在CSDN、掘金和個人博客(一定是異想之旅域名)發布,除此之外全部是盜文!


先說需求:我在家里有一臺服務器,但是沒有靜態IP。之前使用的是花生殼免費的服務,但是后來收費了,就想到自己實現一個。

參考資料:

  • API獲取自己的公網IP地址 API查詢IP信息_異想之旅的博客-CSDN博客_獲取公網ip的api
  • 阿里云 OpenAPI 開發者門戶

大體的實現思路:

  • 獲取當前的服務器IP
  • 檢測是否與阿里云的記錄相等
  • 進行更改或一段時間后進行下一次檢測
  • 當然,還要加上緩存等東西

    保證DNS上有一個這個主機的A解析,然后改好開頭四個變量,掛到服務器就好了(獲取AccessToken:RAM 訪問控制)

    主機 = "yxzlownserveraddress" 域名 = "yxzl.top" AccessKey = "AccessKey" SecretKey = "SecretKey"import json import requests import time from aliyunsdkcore.client import AcsClient from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequestclient = AcsClient(AccessKey, SecretKey) # 初始化記錄ID = 舊的IP = "" page_number = 1while True:request = DescribeDomainRecordsRequest()request.set_accept_format("json")request.set_DomainName(域名)request.set_PageNumber(page_number)request.set_PageSize(100)response = client.do_action_with_exception(request)text = str(response, encoding="utf-8")print(json.loads(text))for i in json.loads(text)["DomainRecords"]["Record"]:if i["RR"] == 主機:記錄ID = i["RecordId"]舊的IP = i["Value"]breakif 記錄ID:breakpage_number += 1while True:try:新的IP = requests.get("http://ip.3322.net/").textif 新的IP != 舊的IP:# 更改記錄try:request = UpdateDomainRecordRequest()request.set_accept_format("json")request.set_RecordId(記錄ID)request.set_RR(主機)request.set_Type("A")request.set_Value(新的IP)response = client.do_action_with_exception(request)print("%s\tIP發生了變化(%s -> %s),已進行更新。" % (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), 舊的IP, 新的IP))except:print("%s\tIP發生了變化(%s -> %s),但更新失敗。" % (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), 舊的IP, 新的IP))else:print("%s\tIP相同(%s),未進行更改。" %(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), 新的IP))舊的IP = 新的IPexcept Exception as e:print("%s\t發生錯誤:%s" % (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), e))# raise epasstime.sleep(90)

    總結

    以上是生活随笔為你收集整理的搭建服务器 运用阿里云DNS自己实现DDNS的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。