Thankwsx's Diary

2018-12-02 自动更新DNS解析

December 02, 2018

电信拨号ip一直会变化,怎么自动更新ip呢。下面就是我的步骤。

步骤列表:

  1. 获取最新的ip地址
  2. 将最新的ip地址保存到线上
  3. 更新dns解析的指向

下面详细介绍下每一步的做法:

  1. 这一步比较简单,访问http://2018.ip138.com/ic.asp 即可获取到最新的ip地址,当然得用电信拨号内网的机器访问才行。 wget/curl即可,简单方便。当然如果条件允许,也可以用更复杂的语言和方法等等。系统自带的命令是最方便的。
  2. 第二步稍微复杂一点,得首先有一个地方能保存起来。刚好我有一个腾讯云服务器,之前的文章已经介绍过,安装了adminer和mysql,那么只要有一个web server将api提供出来就可以了,这样我就可以在内网机器上将ip通过api保存进这个服务器的mysql数据库里了。 一切以简单为主,这个云服务器上已经安装了node,8.11的版本,和一个pm2,装一个koa,开放一个记录ip的接口即可。

这也分成好几步:

  1. 新建一个api.xxxx.xxx的子域名,布置好api接口,从内网机器访问该接口以保存ip;
  2. 安装koa,mysql等依赖包,将request.query.ip参数及remote_addr保存起来;
  3. 内网机器配置crontab,每3分钟访问一次该接口,达到定时刷新的目的。

插曲

```
stream {
        upstream db {
                server xxx.xxx.xx:13306;
        }
        server {
                listen 13306;
                proxy_pass db;
        }
}
```

因为nginx的配置文件里,我这样写,导致nginx重启时失效了,说13306端口被占用,这里需要注意。 upstream里的本地端口需要改成与listen不一样的本地端口。
  1. 第三步,通过腾讯云提供的解析API更新域名指向

这里主要重点是,要引入crypto和request模块,查看云解析API,计算Signature等等,根据云解析API的返回值判断是否操作成功。