如何设置动态DNS

・6 分钟阅读

什么是动态DNS?

让我们来举一个DNS设置的常见例子,域是example.com,你有"A"记录用于server1.example.comserver2.example.com ,Server1承载在本地,但是server2托管在本地网络上,比如,你的业务内部或你家中的开发机器,通常,这些类型的本地环境都会从Internet服务提供者(ISP )动态分配公共IP地址,并且它们可能会意外更改,这将导致server2突然指向错误的IP地址,从而严重影响服务,本文将向你展示如何设置自己的动态DNS服务,该服务在本地计算机上运行,并且可以在公共IP更改后自动更新DNS中的server2记录。

前提条件

  • 访问你的帐户以设置DNS和管理访问密钥,
  • 能够连接到有动态IP地址(或访问同一网络上的其他计算机)的本地计算机,

安装和设置

将域设置为使用服务的DNS

    • 此实用程序仅支持"A"记录,如果要更新到同一个IP地址的多个"A"记录,请将它们更改为"CNAME"记录并将它指向一个"A"记录,这会在长期内简化事情,并被认为是配置DNS的正确方式,

安装所需的工具

  • 连接到本地服务器,这可以直接或通过SSH ,
  • 这个工具需要Python 3,大多数Linux发行版都包含预安装的Python。如果它没有安装在你的环境中,可以在官方Python维基上获得说明:
  • 此进程还需要Git,你可以在下面的说明中进行安装:

正在下载动态DNS客户端

使用Git克隆包含python DDNS客户端的存储库,你应该在你具有完全访问权限的安全目录中执行此操作。运行以下命令:

git clone https://github.com/andyjsmith/-Dynamic-DNS.git vultrddns && cd vultrddns

生成个人访问令牌

生成个人访问令牌,这可以在 "Account - 在同一页面上,你需要进入"Access Control ",并且单击"Allow all IPv4"按钮,因为你每次都不知道本地服务器的IP 。

为你的服务器配置工具

  • 请阅读config.json.example文件,以获取配置文件的示例。
  • 使用你喜欢的文本编辑器打开config.json文件,并根据你的服务器配置信息来填写这些值,
  • 文件应包含以下内容:

    
    {
    "api_key":"",
    "domain":"",
    "dynamic_records": [
    ""
     ]
    }
    
    
  • 将访问令牌输入字段api_key

  • domain字段中输入你的基本域,例如example.com
  • 现在输入要在dynamic_records字段下更改的"A"记录,使用上一个例子,你可以输入server2来自动更改地址的server2 IP ,你可以输入多个子域,如果你想更改域(通常引用为@,当你直接导航到example.com时响应的记录)的基本"A"记录,只需保留空引号,
  • 一个正确的配置文件可能类似于这样,你可以按你想要的去更改example.com和server2.example.com的IP :

    
    {
    "api_key":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "domain":"example.com",
    "dynamic_records": [
    "",
    "server2"
     ]
    }
    
    

.部署您的配置和准备测试

  • 通过运行python3 ddns.py测试脚本和配置,如果这不会返回任何错误,那么你的配置是合格的,你可以启动自动化进程。

自动化

完成基本设置后,设置重复任务非常重要,因为默认情况下脚本不会执行此操作。连接到本地计算机,并且按照你的操作系统执行下面的步骤。

Linux和Mac OSX

Linux和Mac已经安装了cron工具,它允许你指定在设置日程上运行的脚本。

  • 使用realpath ddns.py查找ddns.py文件的完整路径,同时仍在vultrddns目录中,
  • 运行crontab -e来编辑你的crontab ,
  • 向文件末尾添加以下行,并将实际路径添加到ddns.py文件中:

    
    */30 * * * * python3 [full path to ddns.py] > /dev/null 2>&1
    
    
  • 这将每30分钟运行一次脚本并将它所有输出重定向到/dev/null

  • 保存并退出文本编辑器,将自动安装crontab文件,你的IP现在将自动更新,

Windows

在任务计划程序中创建任务以每30分钟运行一次,

  • 打开任务计划程序,并且单击"创建任务,"
  • 给它命名并创建一个新触发器,
  • 单击"每日",在"高级设置"下单击以每30分钟重复一次任务,并将"持续时间改为"至"无限期"。
  • 为启动程序添加新操作,并且浏览到python可执行文件,将ddns.py脚本作为参数添加。
Zuoxiaojuan profile image