美文网首页
给ipv6插上翅膀(域名和DDNS)

给ipv6插上翅膀(域名和DDNS)

作者: 今天i你好吗 | 来源:发表于2023-11-19 01:07 被阅读0次

现在大多数家庭宽带已支持公网ipv6, 但是是动态的, 而且不好记忆, 本文分享如何使用域名和实现动态域名解析DDNS

先分享个ipv6的使用方式:

假如你的ip是 fe80::f66d:2fff:feaa:28ff
如果想要浏览器访问, 和ipv4相比在ip首尾多了[] . 而且需要浏览器支持, 目前大多数浏览器已支持
输入: http://[fe80::f66d:2fff:feaa:28ff]:80

如果要smb访问, 和ipv4相比结尾多了".ipv6-literal.net" , 而且需要把所有的":"转换成"-"
输入: \\fe80--f66d-2fff-feaa-28ff.ipv6-literal.net\share

1. 域名的注册和使用

以阿里云为例, 先注册个阿里云账号, 然后花1大洋(新用户才有)购买个域名. 地址: https://wanwang.aliyun.com/domain/1yuan

选择域名


image.png

创建模板


image.png
勾选模板并购买
image.png

然后在这里就可以看到自己购买的域名了
https://dns.console.aliyun.com/#/dns/domainList
需要实名后才能正常使用,但是可以提前配置, 实名过程跳过

在这里可以看到自己未实名域名数量并点击数字进入实名
https://dc.console.aliyun.com/next/index#/overview

image.png

点击 "解析设置"进行域名的配置


image.png

添加记录


image.png

配置完以后等模板实名了就可以通过域名查找的自己配的ip了, 即可以通过域名访问自己的ip了

比如我配置了test


image.png image.png

2. DDNS

有了域名后我们就可以很方便的通过域名访问我们的ipv6地址了, 但是存在一个问题, 我们的ip是动态的, 每次变化后需要手动去控制台修改配置, 这时DDNS就排上用场了.在本地循环获取设备ip, 当ip变化后通过代码修改配置
修改方式: https://api.aliyun.com/api-tools/sdk/Alidns?version=2015-01-09&language=java-tea

image.png

主要用到了3个接口:
查询: client.describeDomainRecords
更新: client.updateDomainRecord
添加: client.addDomainRecord

示例代码:
implementation "com.aliyun:alidns20150109:3.0.8"

package com.yzh.ddns;

import com.aliyun.alidns20150109.Client;
import com.aliyun.alidns20150109.models.*;
import com.aliyun.teaopenapi.models.Config;

/**
 * 作者:yzh
 * <p>
 * 创建时间:2023/11/15 00:08
 * <p>
 * 描述:
 * <p>
 * 修订历史:
 */
public class DDNSMain {
    public static void main(String[] args) throws Exception {
        System.out.println("=======================sssssssssssssssssssssssssstart=================");

        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = "***************";
        // 您的AccessKey Secret
        config.accessKeySecret = "***************";
        // 您的可用区ID
//        config.regionId = "cn-hangzhou";
        // Endpoint 请参考 https://api.aliyun.com/product/Alidns
        config.endpoint = "alidns.cn-hangzhou.aliyuncs.com";

        Client client = new Client(config);
        String domainName = "yzhtest.com";
        String RR = "www";
        String recordType = "AAAA";
        String newHostIP = "fe80::f66d:2fff:feaa:28ff";

        checkAndAdd(client, domainName, RR, recordType, newHostIP);
        System.out.println("=======================eeeeeeeeeeeeeeeeeeeeeeeeeeeend=================");
    }

    private static void checkAndAdd(Client client, String domainName, String RR, String recordType, String newHostIP) throws Exception {
        System.out.println("-------------checkAndAdd:");
        DescribeDomainRecordsRequest describeRequest = new DescribeDomainRecordsRequest();
        // 主域名
        describeRequest.domainName = domainName;
        // 主机记录
        describeRequest.RRKeyWord = RR;
        // 解析记录类型
        describeRequest.type = recordType;
        DescribeDomainRecordsResponse describeResponse = client.describeDomainRecords(describeRequest);

        if (describeResponse.statusCode != 200) {
            System.out.println("error describeResponse.statusCode: " + describeResponse.statusCode);
            return;
        }
        System.out.println("describeResponse.body.totalCount: " + describeResponse.body.totalCount);
        if (describeResponse.body.totalCount > 0) {
            for (DescribeDomainRecordsResponseBody.DescribeDomainRecordsResponseBodyDomainRecordsRecord record : describeResponse.body.domainRecords.record) {
                System.out.println("-------------change?-------------");
                System.out.println("record = recordId: " + record.recordId
                        + " status: " + record.status
                        + " locked: " + record.locked
                        + " weight: " + record.weight
                        + " line: " + record.line
                        + " remark: " + record.remark
                        + "\nRR: " + record.RR
                        + " domainName: " + record.domainName
                        + " type: " + record.type
                        + " value: " + record.value);
                System.out.println();
                if (!newHostIP.equals(record.value)) {
                    System.out.println("change newIp: " + newHostIP);
                    // 修改解析记录
                    UpdateDomainRecordRequest updateRequest = new UpdateDomainRecordRequest();
                    // 主机记录
                    updateRequest.RR = RR;
                    // 记录ID
                    updateRequest.recordId = record.recordId;
                    // 将主机记录值改为当前主机IP
                    updateRequest.value = newHostIP;
                    // 解析记录类型
                    updateRequest.type = recordType;
                    UpdateDomainRecordResponse updateResponse = client.updateDomainRecord(updateRequest);
                    System.out.println("updateResponse.statusCode: " + updateResponse.statusCode);
                }
            }
        } else {
            System.out.println("-------------add-------------");
            System.out.println("add newIp: " + newHostIP);
            AddDomainRecordRequest addRequest = new AddDomainRecordRequest();
            // 主域名
            addRequest.domainName = domainName;
            // 主机记录
            addRequest.RR = RR;
            // 将主机记录值改为当前主机IP
            addRequest.value = newHostIP;
            // 解析记录类型
            addRequest.type = recordType;
            AddDomainRecordResponse addResponse = client.addDomainRecord(addRequest);
            System.out.println("addResponse.statusCode: " + addResponse.statusCode);
        }
    }

}

AccessKey ID和AccessKey Secret获取方式


image.png image.png image.png image.png image.png

相关文章

  • openwrt路由器(红米AC2100)折腾全程——多拨、ipv

    openwrt路由器(红米AC2100)折腾全程——多拨、ipv6负载均衡、ipv6 nat6、ddns、端口转发...

  • 给产品插上翅膀

    在生活中,不管是实体商场,还是电商、微商,人们在购物的过程中看完或听完商品信息后都喜欢掏出手机搜一下,看看网上对该...

  • 给努力插上翅膀

    上学的时候,有的学生语文成绩很好,但是数学比较差。这时候学生会认为自己数学方面缺乏天赋,不适合学习数学,因此会停止...

  • 给猪插上翅膀

    狄更斯在100多年前说过:“这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀...

  • 给梦想插上翅膀

    我出生在一个美丽的大山里,灵宝朱阳。 在上小学时,父母就教导我要好好学习,然而当时的自己很懵懂,虽...

  • 给梦想插上翅膀

    我出生在一个美丽的大山里,灵宝朱阳。 在上小学时,父母就教导我要好好学习,然而当时的自己很懵懂,虽...

  • 给孩子插上翅膀

    作者 艾米 书籍是人类最好的朋友,知识是人类进步的阶梯,阅读则是了解人生和获取知识的重要手段和最好途径。 “书中自...

  • 给梦想插上翅膀

    经常抱怨、觉得生活与自己处处为敌的人,多半是自己跟自己过不去。其实,你给生活希望,生活才能给你风景;你风声鹤唳,生...

  • 给梦想插上翅膀

    晨风轻轻推开疲惫的窗户 一缕阳光照进了温暖小屋 抚摸几下偷懒沉睡的闹钟 该行动了,快起来,起来! 带上你的梦想、带...

  • 给梦想插上翅膀

    做为一名财务工作者,却从来不理财,说出去真的有点汗颜。 梦想和目标之所以被搁置,多数是因为,没有把它们落实到书面上...

网友评论

      本文标题:给ipv6插上翅膀(域名和DDNS)

      本文链接:https://www.haomeiwen.com/subject/bpmpwdtx.html