当前位置: 首页 > news >正文

通过IPV6+DDNS实现路由器远程管理和Win远程桌面控制

前期需要的准备:

  1. 软路由,什么系统都可以,要支持IPV6,能够自动添加解析
  2. 光猫的管理员账号,能够进入光猫修改配置,拨号上网账号
  3. 域名账号和DNS服务

主要步骤:

  1. 利用管理员账号,进入光猫,新增一个Internet配置,绑定千兆网口,比如Lan1,然后记录原本上网配置里的VLAN ID,新建的配置也要设置这个Tag,IP协议版本选择V4/V6后,选择桥接保存就可以了,光猫就设置好了,但目前还不能上网,需要记录一下拨号账号和密码。
  2. 进入路由器界面,此时路由器应该连着刚才绑定的LAN1口,这里要设置PPPoE拨号上网模式,输入账号与密码,然后就可以上网了。
  3. 打开IPV6功能,选择NativeDHCPv6,WAN0(PPPoE),Stateless:RA,自动获取DNS,打开内网DHCPv6, 路由器通告,启用服务器选择Stateless。
  4. 保存后应该可以看到路由器多了ipv6 WAN和ipv6 LAN,其中WAN是可以直接外网访问的,而LAN网络里的ipv6地址目前应该还不能直接访问,这里主要原因是防火墙设置不对,包括电脑防火墙、路由器防火墙和光猫防火墙,可以直接关掉测试。然后根据服务判断端口是不是打开了in和out。
  5. 防火墙问题解决后,就意味着可以通过公网直接访问你的所有ipv6地址,现在我们要做的就是将这个地址,解析绑定我们的域名,这里我用的是腾讯云,你可以将路由器管理界面的地址设置成router.xxx.com.也可以将LAN网络里的主机地址设置为Computer.xxx.com.这样就可以直接通过域名访问ipv6地址了
  6. 目前的ipv6地址是动态的,所以,域名解析也要不断更新,这个时候就需要一个程序,专门按时更新域名指向的ipv6地址.在软路由上,应该可以找到类似的功能,只需要你申请对应的API接口就行,输入你的域名和二级域名,ID和KEY,就能自动更新路由器的WAN地址到你的router.xxx.com
  7. 主机的话,需要写一个简单的脚本来实现,我是直接搭了Python3的环境,写了一个py脚本,然后windows设置计划执行就可以,具体的脚本如下,主要功能就是得到当前主机的ipv6地址,然后将其通过腾讯云API接口上传更改。
import json
import requests
import subprocess
import re
import time
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, modelsdef ReturnRecordId(Domain, SubDomain):"""获取指定记录的RecordId:param Domain: 主域名:param SubDomain: 待修改的子域:return: RecordId 或错误码"""try:cred = credential.Credential(SecretId, SecretKey)  # 凭证httpProfile = HttpProfile()httpProfile.endpoint = "dnspod.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = dnspod_client.DnspodClient(cred, "", clientProfile)req = models.DescribeRecordListRequest()params = {"Domain": Domain}req.from_json_string(json.dumps(params))resp = client.DescribeRecordList(req)for record in resp.RecordList:if record.Name == SubDomain:return record.RecordId# print("未找到对应的记录值,请先创建相应的主机记录!")return -2except TencentCloudSDKException:# print("获取域名的记录列表失败,请重试!")return -1def ModifyDynamicDNS(RecordId, Domain, SubDomain, Ip):"""动态域名解析API:param RecordId: 待修改记录ID:param Domain: 主域名:param SubDomain: 子域名:param Ip: IP地址:return: 操作成功返回1,否则返回0"""try:cred = credential.Credential(SecretId, SecretKey)httpProfile = HttpProfile()httpProfile.endpoint = "dnspod.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = dnspod_client.DnspodClient(cred, "", clientProfile)req = models.ModifyDynamicDNSRequest()params = {"Domain": Domain,"SubDomain": SubDomain,"RecordId": RecordId,"RecordLine": "默认","Value": Ip}req.from_json_string(json.dumps(params))resp = client.ModifyDynamicDNS(req)# if str(RecordId) in resp.to_json_string():#     print("更新成功!")return 1except TencentCloudSDKException:return 0def get_global_ipv6_address():# 适用于Windows的命令command = "ipconfig"process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True)stdout, stderr = process.communicate()# 解析ipconfig输出查找IPv6地址ipv6_addresses = re.findall(r"IPv6 地址 . . . . . . . . . . . . : ([\da-fA-F:]+)", stdout)# 过滤掉本地链接地址global_ipv6_addresses = [addr for addr in ipv6_addresses if not addr.startswith("fe80:")]return global_ipv6_addresses[0]if __name__ == "__main__":SecretId = "xxx"  # 腾讯云账户API密钥IDSecretKey = "xxx"  # 腾讯云账户API密钥KeyDomain = "xxx.xxx"  # 主域名SubDomain = "xxx"  # 指定要修改的子域名interval = 600  # 每10分钟检查一次IPRecordId = ReturnRecordId(Domain=Domain, SubDomain=SubDomain)if RecordId < 0:exit()CurrentIP = get_global_ipv6_address()res = ModifyDynamicDNS(RecordId=RecordId, Domain=Domain, SubDomain=SubDomain, Ip=CurrentIP)# if res:#     print(f'IP成功更新!IPV6:{CurrentIP}')# else:#     print('动态域名解析API出问题了')
http://www.lryc.cn/news/336957.html

相关文章:

  • 数据湖/数据仓库
  • 万兆以太网MAC设计(2)MAC_RX模块
  • D. Solve The Maze Codeforces Round 648 (Div. 2)
  • CPU核心数、线程数都是什么意思?
  • 每日一篇 4.12
  • 鸿蒙南向开发:【智能烟感】
  • 【主题广|检索稳定】2024年生态工程与农业科技国际会议 (EEAT 2024)
  • 代码随想录算法训练营第三十八天|509. 斐波那契数、 70. 爬楼梯、746. 使用最小花费爬楼梯
  • 07-app端文章搜索
  • ✔ ★Java项目——设计一个消息队列(二)
  • Java语言实现生产者/消费者问题
  • bugku-web-file_get_contents
  • Python数据处理和常用库(如NumPy、Pandas)
  • [SystemVerilog]Simulation and Test Benches
  • lightgbm-安装失败(解决方案)
  • halcon图像相减算子sub_image
  • final、finally 和 finalize 有什么区别?
  • 智能运维场景 | 科技风险预警,能实现到什么程度?
  • 中颖51芯片学习3. 定时器
  • [python] Numpy库用法(持续更新)
  • vue快速入门(十七)v-model数据双向绑定修饰符
  • 2024-2025年申报各类科研项目基金撰写及技巧
  • Python基于Django的微博热搜、微博舆论可视化系统,附源码
  • 【Linux学习】初识Linux指令(一)
  • 基于Python实现盈利8371%的交易策略
  • 如何在Linux中找到正在运行的Java应用的JAR文件
  • 几分钟学会TypeScript
  • 最新版手机软件App下载排行网站源码/App应用商店源码
  • R语言计算:t分布及t检验
  • uni-app的地图定位与距离测算功能的实现