前期需要的准备:
-
软路由,什么系统都可以,要支持IPV6,能够自动添加解析
-
光猫的管理员账号,能够进入光猫修改配置,拨号上网账号
-
域名账号和DNS服务
主要步骤:
-
利用管理员账号,进入光猫,新增一个Internet配置,绑定千兆网口,比如Lan1,然后记录原本上网配置里的VLAN ID,新建的配置也要设置这个Tag,IP协议版本选择V4/V6后,选择桥接保存就可以了,光猫就设置好了,但目前还不能上网,需要记录一下拨号账号和密码。
-
进入路由器界面,此时路由器应该连着刚才绑定的LAN1口,这里要设置PPPoE拨号上网模式,输入账号与密码,然后就可以上网了。
-
打开IPV6功能,选择NativeDHCPv6,WAN0(PPPoE),Stateless:RA,自动获取DNS,打开内网DHCPv6, 路由器通告,启用服务器选择Stateless。
-
保存后应该可以看到路由器多了ipv6 WAN和ipv6 LAN,其中WAN是可以直接外网访问的,而LAN网络里的ipv6地址目前应该还不能直接访问,这里主要原因是防火墙设置不对,包括电脑防火墙、路由器防火墙和光猫防火墙,可以直接关掉测试。然后根据服务判断端口是不是打开了in和out。
-
防火墙问题解决后,就意味着可以通过公网直接访问你的所有ipv6地址,现在我们要做的就是将这个地址,解析绑定我们的域名,这里我用的是腾讯云,你可以将路由器管理界面的地址设置成router.xxx.com.也可以将LAN网络里的主机地址设置为Computer.xxx.com.这样就可以直接通过域名访问ipv6地址了
-
目前的ipv6地址是动态的,所以,域名解析也要不断更新,这个时候就需要一个程序,专门按时更新域名指向的ipv6地址.在软路由上,应该可以找到类似的功能,只需要你申请对应的API接口就行,输入你的域名和二级域名,ID和KEY,就能自动更新路由器的WAN地址到你的router.xxx.com
-
主机的话,需要写一个简单的脚本来实现,我是直接搭了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, models def 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 = httpProfile client = 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 -2 except TencentCloudSDKException: # print("获取域名的记录列表失败,请重试!") return -1 def 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 = httpProfile client = 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 1 except TencentCloudSDKException: return 0 def 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密钥ID SecretKey = "xxx" # 腾讯云账户API密钥Key Domain = "xxx.xxx" # 主域名 SubDomain = "xxx" # 指定要修改的子域名 interval = 600 # 每10分钟检查一次IP RecordId = 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出问题了')
原文链接:https://blog.csdn.net/qq_24253277/article/details/137409969?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171828104516800213084155%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171828104516800213084155&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-2-137409969-null-null.nonecase&utm_term=%E8%B7%AF%E7%94%B1%E5%99%A8%E3%80%81%E5%8D%83%E5%85%86
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END