IPV6实现DDNS动态域名

随着IPV6的普及,极大的丰富了IP数据库的容量,可用数量可做到给每粒沙子分配IP的程度。

市面上70%路由器默认不开启IPV6、只有30%默认开启IPV6,开启IPV6需要进行测试,以小米祖传断流王路由器AX9000为例,开启IPV6后,需要设置防火墙关闭才可以允许数据入站。

现在市场上的路由器默认不支持IPV6 DDNS,普遍是IPV4 DDNS (一个内网IPv4要DDNS何用)

也有为数几家公司提供IPV6动态域名服务、目前再用的是每步动态域名。

下面是网站的说明:

根据官网提供的API,注册好账户后只需要提取本地IPV6更新即可:

具体HTTP请求格式:

http://ipv6.meibu.com/?id=123&name=aaa.noip.cn&pwd=abc&ipv6=2001:da8::36…

有三个参数要修改:name、pwd、ipv6 分别对应域名,密码,IPV6地址

使用JAVA结合CURL即可实现一个简单的IPV6自动监视更新器。

/** * */ package main.ex; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; /** * @author Administrator * */ public class Refresher { /** * */ public Refresher() { // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String CURRENT_IPV6 = "EMPTY"; while(true) { //更新模拟POST String NEW_IPV6 = GetComputerIPV6(); if(!CURRENT_IPV6.equals(NEW_IPV6)) { updateDDNS(NEW_IPV6); CURRENT_IPV6 = NEW_IPV6; } //5秒轮巡监视IPV6变换并更新 try { Thread.sleep(1000 *5); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void updateDDNS(String ipv6) { String cmd = "C:\\curl-8.0.1_6-win64-mingw\\bin\\curl.exe " +" -X GET \"http://ipv6.meibu.com/?id=123&name=动态域名&pwd=密码&ipv6="+ipv6+"\""; try { Process proc = Runtime.getRuntime().exec(cmd); //...命令行运行结果输出的代码(略) } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("New IPV6 updated."); } public final static String GetComputerIPV6() { String ipv6 = null; try { System.out.println("[Local IPV6]"); for (InetAddress it : InetAddress.getAllByName(System.getenv().get("COMPUTERNAME"))) { System.out.println(it); //筛选公网IPV6 2048 2409 240e if(ipv6 == null & it.toString().contains("/240")) { ipv6 = it.toString(); } } // InetAddress[] ips = InetAddress.getAllByName(System.getenv().get("COMPUTERNAME")); // ipv6 = ips[ips.length - 1].toString(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("\nSelect ipv6 is "+(ipv6 = ipv6.substring(ipv6.indexOf('/')+1,ipv6.length()))); return ipv6; } } 

导出为为可执行JAR格式,直接运行即可后台静默更新IPV6 DDNS,显示运行则在CMD命令行运行 java -jar xxx.jar

原文链接:https://blog.csdn.net/avisp/article/details/130136981

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享