树莓派使用 DNSPod 做动态域名解析

今天刚入手树莓派 3,有种相见恨晚的感觉,接下来又有得折腾了。

ZHETENG #1: 动态 DNS

我相信虽然树莓派足够轻便,但你也不会愿意总把它带在身边,应该还是需要固定在某个地方提供服务的,比如藏在家里的电视柜里——你要拿它做一个机器人或者无人机之类,当我没说,而且这篇文也没必要往下看了,这里仅针对拿树莓派当 Linux 远程主机使用的场景 ;-)

如果家里的宽带没有固定公网 IP,不在家的时候怎么访问就很成问题。过去我在西数 MyBookLive 上的做法是,每天中午 12 点,crontab 执行脚本获取外网 IP,email 给我。low 是 low 了点,但基本上能满足需求,主要考虑 MyBookLive 频繁唤醒几 T 的大硬盘会缩短寿命,所以把脚本执行的周期设得比较长。

现在有了树莓派,没有挂硬盘,只插了个 32G 的 TF 卡,可以随便搞了,最优的方案当然是动态域名解析。于是在 DNSPod 注册了账号,把域名的 nameserver 设置到 DNSPod,再用 python 写了个脚本专门干这个事,代码放在 github 上了,把文档贴一下:

dnspod.py

@author migege
@version 0.0.2

dnspod.py 是基于 DNSPod 服务的动态 DNS 脚本,用于检测 IP 变化并更新至 DNSPod,支持多域名解析。支持 Linux 设备,包括树莓派(Raspberry Pi)。

Prerequisites

  1. python
  2. pyyaml
  3. requests

python 的模块可通过 pip install 命令安装。如果未安装 pip,请先安装 pip。

Installation

安装 git 客户端,通过本命令获取 dnspod.py

git clone https://github.com/migege/dnspod.git dnspod

然后到 dnspod 目录下新建 conf.yaml 文件,根据您的 DNSPod 设置,填入以下内容:

token: <your_api_token>
sub_domains:
  <your_first_sub_domain_name>:
    domain_id: <your_domain_id>
    record_id: <your_record_id>
  <your_second_sub_domain_name>:
    domain_id: <your_domain_id>
    record_id: <your_record_id>

最后设置 crontab 定时任务

*/10 * * * * cd <path_to_dnspod>; /usr/bin/python dnspod.py conf.yaml > /dev/null 2>&1 &

Tips

  1. */10 表示每 10 分钟执行一次 dnspod.py
  2. 如果 python 可执行路径不是 /usr/bin/python,请自行替换
donate to me

1 Comment

No comments yet.

Leave a Reply