【DNS解析】使用DNSPOD实现动态公网解析(DDNS)
背景
公司电信宽带(PPoE)分配了一个公网IP,但它每过一段时间就变了,如果我要用它远程桌面,意味着每过一段时间就要改一次IP,记一个新的IP,非常复杂,该如何用一个固定的地址来替代这些变化的IP并且实现定时自动替换呢?虽然可以通过购买EIP来固定这个地址,但是成本稍微高了。替代的办法就是动态解析,用一个别名代替变换的IP。而别名就是域名,用一个固定的域名,解析到这些IP,即可实现DDNS。
原理
基本流程就是获取公网IP,然后修改某个域名的解析为获得的IP
流程图如下
实施
网络:
将服务器网络出口NAT到动态IP线路上(其他设置可自行科普,以下仅供参考)
此处已Cisco路由器为例:
ip nat inside source static tcp 192.168.0.217 80 interface Dialer1 11180
#Dialer1为PPOE拨号线路
access-list 100 permit ip host 192.168.0.217 any
#ACL 100为PPOE拨号线路
密钥:
在确定服务器经由PPoE线路上网后,需要在DNSPod上申请API密钥,从而获取SecretId以及SecretKey
环境:
Ubuntu 20.04 + Python 3.8.10
安装依赖包:
pip install tencentcloud-sdk-python
pip install tencentcloud-sdk-python-dnspod
**详细脚本如下: **
Ref: 腾讯云 API Explorer
import json
import requests
import logging
from datetime import datetime
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.dnspod.v20210323 import dnspod_client, models############################################
#此处需要按照实际情况修改
Domain = "*****.com" #修改域
SubDomain = "p1234" #修改域名
SecretId = "SecretId"
SecretKey = "SecretKey"
############################################filename = "./" + datetime.now().strftime("%Y%m%d") + "-" + SubDomain + "-DDNS-Log.log"
logging.basicConfig(filename=filename, level=logging.INFO,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')logging.info("脚本开始运行...")
#获取当前公网IP地址,通过AWS提供的服务。
def get_external_ip():try:ip = requests.get('https://checkip.amazonaws.com/').text.strip()return iplogging.info("成功获取当前公网地址...")except:return Nonelogging.info("获取当前公网地址失败...")CurrentGlobalIP = get_external_ip()try:cred = credential.Credential(SecretId, SecretKey) #修改成你获得的SecretId以及SecretKeyhttpProfile = HttpProfile()httpProfile.endpoint = "dnspod.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = dnspod_client.DnspodClient(cred, "", clientProfile)req = models.DescribeRecordListRequest()params = {"Domain": Domain,"Subdomain": SubDomain}req.from_json_string(json.dumps(params))resp = client.DescribeRecordList(req)RecordID = resp.RecordList[0].RecordIdRecordValue = resp.RecordList[0].ValueRecordLine = resp.RecordList[0].LineRecordType = resp.RecordList[0].Typelogging.info("成功获取域名信息...")logging.info("域名信息: " + SubDomain+"."+Domain+" "+RecordValue)except TencentCloudSDKException as err:logging.info("获取域名信息失败..." + err)if CurrentGlobalIP == RecordValue:logging.info("域名信息未发生变动...")
else:logging.info("域名信息发生变动...")try:req = models.ModifyRecordRequest()params = {"Domain": Domain,"RecordId": RecordID,"RecordLine": RecordLine,"RecordType": RecordType,"SubDomain": SubDomain,"Value": CurrentGlobalIP}req.from_json_string(json.dumps(params))resp = client.ModifyRecord(req)logging.info("新域名信息: " + SubDomain + "." + Domain + " " + CurrentGlobalIP)except TencentCloudSDKException as err:logging.info("修改域名信息失败..." + err)logging.info("脚本结束运行...")
将脚本设置成定时运行
此处是将脚本设置为每小时的10分运行一次,也可按照自己需求进行修改。
日志输出:
到此,就完成了动态公网解析,更多可能,需要我们一起继续探索…
【DNS解析】使用DNSPOD实现动态公网解析(DDNS)相关推荐
- 群晖docker实现阿里云动态公网域名解析ddns服务
日常生活中,一般家庭用户宽带使用的都是内网ip,如果需要在外网就是远程使用,需要将家庭ip向电信部门申请变更为公网ip,通常情况下,我们获得的都是动态公网ip,这种ip每隔一段时间都会自动变化,这样如 ...
- 家庭宽带 动态公网IP,使用腾讯云DDNS实现实时更新DNS解析记录
解决DDNS问题 动态公网IP 环境说明: 我是家庭宽带 只能申请到动态的公网ip,好处是不花钱,弊端是每次重启光猫,都会重新获取一个新的公网IP 为解决此办法,我尝试了很多个DDNS的方案. 包括但 ...
- 【计网】DNS解析 DDNS解决动态公网IP访问
DNS服务与DDNS 前言 一.DNS服务 二.DNS域名解析 1.解析过程 2.DNS污染 三.DDNS解决动态公网IP访问 总结 前言 本篇主要记录一下DNS域名解析在我们平时上网时的使用,与DN ...
- 动态ip解析 linux,ddwrt路由/linux动态解析ip(ddns)到dnspod配置
dnspod域名解析服务有提供出来api,可以通过curl命令与dnspod交互.需要在dnspod先绑定一个域名,并设置一个二级域名(A记录),如我的test.xdty.org指向到了127.0.0 ...
- 修改新网域名DNS服务器到DNSPOD解析服务
修改新网 后台 DNS 地址 1.先看域名状态是否允许修改dns 2.修改dns地址为dnspod的dns地址 具体操作 应改不改版而定
- CenOS7 运维 - DNS域名解析服务 | 正向解析 | 反向解析 | 主从服务器实时同步 | 分离解析 | 排错思路及方案 | 超详细
CenOS7 运维 - DNS域名解析服务 一.DNS系统的作用 二.域名的结构 根域 顶级域 二级域 子域 主机 三.DNS服务器类型 ►主域名服务器 ►从域名服务器 ►缓存域名服务器 ►转发域名服 ...
- 国际域名及其他可解析域名免费捆绑动态IP地址
国际域名及其他可解析域名免费捆绑动态IP地址 [ 日期:2004-09-25 ] "让网络更免费更自由! 让所有国内的动态域名服务商破产!"本站推荐可解析三级域名:.COM ...
- 外网系统怎么访问协同oa?快解析内网端口映射公网
办公软件oa系统功能涵盖移动办公.流程审批.信息门户.知识文档.电子签章.移动考勤.即时通讯.计划任务.费用报销.人事管理等,让办公更智能. 办公OA网站是企业公司信息管理的一个重要使用场景,除了在公 ...
- 域名解析教程:Cloudflare解析与DNSPod解析
在购买域名后,需要将你的域名解析到你的IP后才能正常使用你的域名代替IP.本文是一个详细的域名解析教程,以NameSilo为例,分别介绍NameSilo自带的域名解析,以及国外的Cloudflare域 ...
最新文章
- Linux Kernel中local_irq_enable()和local_irq_disable()的实现
- Altium Designer-Net has no driving source解决办法
- jQuery的链式操作
- 数字后端——可制造性设计
- [导入][导入][c#]Web开发中Tag的开发技巧
- 同步与异步以及线程与进程
- 干货|我在 GitHub 上发现了一款骚气满满的字体!
- phython拟合曲面方程_python数据关系型图表散点图系列曲面拟合图
- VxRack与VxRail遭受Power的“全面入侵”
- 【万里征程——Windows App开发】使用华丽丽的字体
- 咸鱼笔记-编程语言优缺点
- SQL Server 2008 R2 安装图文详解
- 百度文库免费下载(附:分享一些有趣的网站,最后一个可以免飞下载百度文库)
- UVa10653.Prince and Princess
- word-break 换行
- 博世传感器调试笔记(三)加速度及地磁传感器BMC156
- RTCP Receiver Report(RR)相关
- 计算机 博士 论文要求,计算机学院博士生发表论文要求.doc
- java写json数组字符串,Java将前端的json数组字符串转换为列表
- JAVA unusual问题收集