最近发现托管的免费动态IP受政策管制、商业收费策略、技术平台稳定性等等,变得非常不稳定。自己正好是新网代理资质,也有API和自己的域名,便尝试使用自己的方案更新域名。这样家里的服务器就能使用FTP,以及其他私有NAS服务了。

看了下xinnet新网API文档,很简单。(但不得不说,新网的API技术协议真是写得像屎一样,数据结构别扭,既不是xml也不是json,就是自己的大白话,而且关键数据结构表述不清,甚至错误。真是谁用谁知道!)

框架说明:

说明:

  1. 家里是中国电信宽带,使用pppoe拨号。
  2. Xinnet新网API,需要事先登记一个固定IP。只有这个IP才能调用xinnet新网API。代理能申请5个。固定IP用的也是新网最低的虚拟主机Linux版本(有PHP即可)。放一个很简单php程序——fresh.php
  3. 把虚拟主机的IP地址填入允许IP的名单,否则API调用出错。

固定IP中转端(虚拟主机端)设置

Xinnet新网API开发。非常简单,注意MD5加密字符串为,METHOD+CLIENT+PASSWORD+domainName

<?php$client = "agentXXXX";
$password = "YourPassword";
$enc ="E";
$dn = "home.yourpersonaldomain.cn";
$name = "yourpersonaldomain.cn";
$recordname = "home.yourpersonaldomain.cn";
$type="A";
$content="";    //NewIP
$oldcontent="192.168.0.88";  //oldIP
$ttl=600;//METHOD+CLIENT+PASSWORD+name
$checksum=MD5("DomainDNSQuery".$client.$password.$name);
$w_URL = "http://api.xinnet.com/domain/api.gb?method=DomainDNSQuery&charset=utf8";$w_Parameters = "&enc=E&client=".$client.
"&checksum=".$checksum.
"&name=".$name.
"&type=".$type;$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $w_URL);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $w_Parameters);echo $w_URL."\n";
echo $w_Parameters."\n";$data = curl_exec($curl);
curl_close($curl);echo $data."\n";$ary_result = split('&',$data);$arrlength = count($ary_result);$isOK = False;for($x=0;$x<$arrlength;$x++) {list($key,$value)=split('=',$ary_result[$x]);if ($key=='ret' and $value == 100 ){$isOK = True;     }if ($key=='content1'){$oldcontent = $value;}
}if ($oldcontent == $_SERVER["REMOTE_ADDR"]) {exit(0);
}//我只有一个A记录,如果你有多个A记录,请自行修改程序
//原始文档:http://agent.xinnet.com/Modules/downloads/api/xinnet-domain-api.pdf
//P94-95//METHOD+CLIENT+PASSWORD+name
$content=$_SERVER["REMOTE_ADDR"];
$checksum=MD5("DomainDNSMod".$client.$password.$name);
$w_URL = "http://api.xinnet.com/domain/api.gb?method=DomainDNSMod&charset=utf8";$w_Parameters = "&enc=E&client=".$client.
"&checksum=".$checksum.
"&name=".$name.
"&recordname=".$recordname.
"&type=".$type.
"&content=".$content.
"&oldcontent=".$oldcontent.
"&ttl=".$ttl;$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $w_URL);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $w_Parameters);$data = curl_exec($curl);echo $w_URL."\n";
echo $w_Parameters."\n";echo $data."\n";curl_close($curl);?>

注意:dns TTL 设置为 600秒,缓存时间 10分钟。

家里服务器设置(Linux)

建立一个脚本,/root/script/refreshXinnetDNS.sh

#!/bin/bash
#/root/script/refreshXinnetDNS.shmyDomain=home.yourpersonaldomain.cn
myStaticIP=XXX.XXX.XXX.XXXif ping -c1 $myDomain|grep PING >/dev/null; thenremoteIP=`ping -c1 $myDomain | grep PING | cut -d'(' -f2 | cut -d')' -f1`
elseexit 1
fiif ifconfig ppp0>/dev/null ; thenlocalIP=`ifconfig ppp0 | grep 'inet addr' | cut -d':' -f2 | cut -d' ' -f1`
elseexit 1;
fiecho "remoteIP:"$remoteIP
echo "localIP:"$localIPif [ $remoteIP != $localIP ];thenwget -q -O- "http://"$myStaticIP"/refreshIP.php" > /dev/null
fi

在Redhat体系下,可以拨号后自动添加动态域名,把脚本加入

/sbin/ifup-local

[root@sh sbin]# cat /sbin/ifup-local
#!/bin/bash
export PATH=$PATH:/usr/sbin:/usr/binif [ $1 == "ppp0" ] ;then/root/script/refreshXinnetDNS.sh
fi

可以实现拨号后自动更新。外加设置一个crontab 10分钟监测一次。

这样 home.yourpernaldomain.cn 就是我家里的服务器了。电信封闭了http80端口,但是没有ftp还能用。平时把自己的私有云设置在其他端口上,就可以正常使用了。

很简单的方案,没有加密什么的,也就自己用。需要的可以自行添加,非常简单。其他万网API或其他API原理也一样。

用xinnet新网API实现动态域名相关推荐

  1. 修改域名dns服务器,新网互联域名如何修改DNS设置方法

    在新网互联注册的域名,DNS默认为新网互联DNS服务器(例如:ns1.dns.com.cn.ns2.dns.com.cn). 为了方便管理,使用西部数码的智能DNS解析服务,可以将域名的DNS修改为西 ...

  2. “.公司”域名注册总量TOP15:新网问鼎 万网居亚

    IDC评述网(idcps.com)01月16日报道:根据ntldstats.com发布的最新数据显示,截止至01月15日17:00,在".公司"域名注册总量大战中,新网打败众多国内 ...

  3. 国内域名商.wang总量统计TOP10:新网居亚 地位不稳

    IDC评述网(idcps.com)10月27日报道:根据ntldstats.com发布的最新数据显示,截止至10月24日17:00,在国内域名服务商.wang域名注册总量十强排行榜中,西部数码以46, ...

  4. 新网域名查询和注册API接口类 源码

    最近公司要做一个基于新网的API,在自己的系统中实现实时查询域名注册情况,并且要能实时注册,注册费用自动从我们的代理帐户中扣除,下面是我写的核心实现类代码:     public class XinN ...

  5. 新网域名查询和注册API接口类

    public class XinNetApiBase { //默认代理编号 public readonly static string AgentID = "agent88888" ...

  6. 域服务器如何修改域名,新网域名如何修改DNS设置方法

    在新网注册的域名,DNS默认为新网DNS服务器(例如:ns11.xincache.com.ns12.xincache.com). 为了方便管理,使用西部数码的智能DNS解析服务,可以将域名的DNS修改 ...

  7. 新网服务器网站后台怎么登陆,新网域名管理后台

    在新网域名管理后台的系统中,您只需要拥有域名管理密码,即可以管理域名.域名证书的作用是证明域名所有权.如果您需要对网站进行备案时,需要提供给您的主机空间服务商.所有通过新网注册并交纳相应注册费用的用户 ...

  8. cloudflare动态域名解析-并实现自定义内外网混合动态域名DDNS脚本

    1.获取CloudFlare的API令牌 直接进入地址:API 令牌 | [账户名]'s Account | Cloudflare 2.获取根域名ID curl -X GET "https: ...

  9. 新网停止域名URL转发

    我之前在新网注册的域名www.linsoftware.com,开始使用新网的DNS服务,后来发现转发不成功,原来新网停止了URL的转发了. 原文如下: http://www.xinnet.com/ne ...

最新文章

  1. Rails 添加新的运行环境
  2. java short to byte_java笔记 Java中byte数组与int,long,short,char间的转换
  3. QT学习之经典控件源码(如此强大)
  4. 腾讯技术直播间 | 轻量产品思维!手把手教你搭建在线甲醛监测系统
  5. 服务器显示转速负数,Moldflow使用常见问题及解决方案
  6. OO Summary Ⅲ
  7. mysql怎么模拟死锁_mysql 模拟产生死锁
  8. 深度学习算法原理——神经网络的基本原理
  9. 计算机动漫与游戏制作心得,学习课件制作的心得体会(精选10篇)
  10. 阿里云SLB负载均衡ESS弹性伸缩
  11. DOSBOX常用快捷键DEBUG指令
  12. sunOracle t4系列小型机服务器配置详解
  13. python从入门到实践十二章
  14. python判断对错题_Python爬虫自动化获取华图和粉笔网站的错题(推荐)
  15. 小岛战争1.0.4正式版无敌版
  16. 【Python爬虫项目】链家房屋信息抓取(超详细适合新手练习附源码)
  17. pqmagic 8.0中文版—硬盘分区魔术师
  18. android分享图片到qq,Android实现截图分享qq,微信
  19. es7.1聚合查询 javaAPI
  20. c语言程序考试试题,C语言程序设计期末考试试题(含答案)

热门文章

  1. 严格身份证格式校验,真实身份证号校验方法文件CheckIdCardUtil.js
  2. iOS开发之数据存储
  3. matlab怎么添加注释快捷键,Matlab注释技巧
  4. 植物大战僵尸设计元素浅析
  5. sshpass和scp的使用
  6. 金山:与微软“作战”
  7. 在查找预编译头时遇到意外的文件结尾
  8. OpenGL三维模型+常见错误
  9. BASH比较两位数大小
  10. 声源定位matlab模拟,matlab声源定位程序的一点小问题