如何设置动态DNS

什么是动态DNS?

让我们以DNS设置的常见示例为例。您的域是example.com,并且具有和的A记录。Server1托管在Vultr中,但是server2托管在本地网络中,例如您的公司内部或作为家庭中的开发计算机。通常,这些类型的本地环境具有从Internet服务提供商(ISP)动态分配的公共IP地址,并且它们可能会意外更改。这将导致server2突然指向错误的IP地址,这可能会严重影响服务。本文将向您展示如何设置自己的动态DNS服务,该服务在本地计算机上运行,​​并可以在公共IP更改后自动更新Vultr DNS中server2的记录。server1.example.comserver2.example.com

尽管客户端喜欢某些DNS服务提供商ddclient并且inadyn可以为之工作,但Vultr当前不支持这些服务,而是使用其自己的自定义API。该服务将在您的计算机上本地运行,并使用GET和POST请求以及您的访问密钥。

先决条件

  • 访问您的Vultr帐户以设置DNS和管理访问密钥。
  • 能够连接到具有动态IP地址的本地计算机(或访问同一网络上的另一台计算机)。

安装与设定

设置您的域以使用Vultr的DNS服务

  • 如果您的域未使用Vultr的DNS服务,请按照本文进行修改,以将名称服务器与Vultr一起使用。
  • 设置Vultr DNS后,转到“服务器-> DNS-> [您的域名]”下的DNS管理页面。
  • 在这里,您会找到为您的域设置的所有记录。写下您要更改的记录,因为以后需要。
    • A该实用程序仅支持“ ”记录。如果您有多个A要更新为相同IP地址的记录,请将它们更改为CNAME记录,然后将它们指向一个A记录。从长远来看,这将为您简化事情,并且被认为是配置DNS的正确方法。

安装所需的工具

  • 连接到本地服务器。可以直接或通过SSH。
  • 该工具需要Python3。大多数Linux发行版都包含预安装的Python。如果您的环境中未安装它,则可在以下官方Python Wiki上获得说明:
  • 此过程还需要Git,您可以按照以下说明进行安装:

下载动态DNS客户端

使用Git克隆包含python DDNS客户端的存储库。您应该在一个具有完全访问权限的安全目录中执行此操作。您的主文件夹应该足够了。运行以下命令:

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

生成个人访问令牌

在Vultr中生成个人访问令牌。这可以在“帐户-> API->个人访问令牌”下完成。在同一页面上,您将需要转到“访问控制”下,然后单击“允许所有IPv4”按钮,因为您将不会每次都知道本地服务器的IP,因此不知道动态DNS。

为您的服务器配置工具

  • 通读该config.json.example文件,以获取配置文件外观的示例。
  • config.json使用您喜欢的文本编辑器打开文件,然后根据您的特定服务器设置填写值。
  • 该文件应包含以下内容:

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

  • domain字段中输入您的基本域。例如,example.com
  • 现在A,在该dynamic_records字段下输入要更改的记录。使用上一个示例,您将输入server2以自动更改server2的IP地址。您可以输入多个子域。如果您想更改A域的基本记录(通常称为@,当您直接导航到时会响应的记录example.com),只需将引号留空。
  • 一个适当的配置文件看起来是这样的,要动态地更改IP的example.comserver2.example.com

    {
        "api_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "domain": "example.com",
        "dynamic_records": [
        "",
        "server2"
        ]
    }
    
  • 现在保存这些更改,您的文件应该就可以了!

测试您的配置

  • 通过运行测试脚本和配置python3 ddns.py。如果这没有返回任何错误,则说明您的配置是名义上的,您可以启动自动化过程。

自动化

完成基本设置后,重要的是要设置一个周期性任务,因为脚本默认情况下不会执行此任务。连接到本地计算机,然后根据您的操作系统执行以下步骤。

Linux和Mac OSX

Linux和Mac cron已经安装了该实用程序,可让您指定脚本以按设定的时间表运行。

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

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

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

视窗

在任务计划程序中创建一个任务,每30分钟运行一次。按照Microsoft指南进行基本任务创建。

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


Leave a Comment

使用OpenBSD在Vultr上配置BGP

使用OpenBSD在Vultr上配置BGP

Vultrs BGP功能使您可以拥有自己的IP空间并在我们的任何位置使用它,而OpenBSD实例则不需要其他软件!

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

配置专用网络

配置专用网络

如果您将专用网络分配给现有计算机(或部署自己的操作系统),则需要在专用计算机上配置IP地址。

如何在Linux上设置TCP优化

如何在Linux上设置TCP优化

简介当来自其他国家的访问者访问您的网站时,连接出现问题吗?想知道为什么从您的预言下载速度

BGP公告的授权书示例

BGP公告的授权书示例

请求BGP公告的授权时,请使用以下模板。授权信[日期]可能涉及的人Thi

在Debian / Ubuntu上设置您自己的DNS服务器

在Debian / Ubuntu上设置您自己的DNS服务器

本教程说明了如何在Debian或Ubuntu上使用Bind9设置DNS服务器。在整篇文章中,请相应地替换your-domain-name.com。在

在Windows上通过PuTTY使用SSH连接到服务器

在Windows上通过PuTTY使用SSH连接到服务器

首次连接到Linux服务器可能会造成混乱,特别是如果您具有强大的Windows背景。连接到Linux(或UNIX)时

如何在Ubuntu 16.04 LTS上安装OpenNMS

如何在Ubuntu 16.04 LTS上安装OpenNMS

使用其他系统?OpenNMS是企业级开源网络管理平台,可用于监视和管理众多设备。

如何在CentOS 7上部署Google BBR

如何在CentOS 7上部署Google BBR

BBR(Bottleneck带宽和RTT)是一种新的拥塞控制算法,由Google贡献给Linux内核TCP堆栈。有了BBR,

使用OpenVPN设置自己的专用网络

使用OpenVPN设置自己的专用网络

Vultr为在同一位置运行的服务器提供了绝佳的专用网络连接。但是有时您想要在不同国家/地区使用两台服务器

在Ubuntu 14.04 x64上为Cisco AnyConnect设置OpenConnect VPN服务器

在Ubuntu 14.04 x64上为Cisco AnyConnect设置OpenConnect VPN服务器

OpenConnect服务器,也称为ocserv,是通过SSL进行通信的VPN服务器。通过设计,其目标是成为安全,轻便和快速的VP

如何在CentOS 6上使用WonderShaper限制流量

如何在CentOS 6上使用WonderShaper限制流量

简介在本教程中,最好安装WonderShaper,该实用程序用于限制传入/传出流量。这可以用于多种

在CentOS 6上设置PPTP VPN服务器

在CentOS 6上设置PPTP VPN服务器

本指南说明了如何使用yum存储库中可用的pptpd守护程序在CentOS 6上设置自己的PPTP VPN。请注意,证券

为Windows远程桌面设置动态DNS

为Windows远程桌面设置动态DNS

本文将向您展示如何为远程桌面设置动态DNS,以便避免一次又一次设置远程协助的麻烦。w ^

在Debian上使用Samba创建网络共享

在Debian上使用Samba创建网络共享

有时我们需要共享Windows客户端必须可见的文件。由于基于Fuse的系统只能在Linux上运行,因此不妨介绍一下

在Windows Server 2012上使用远程访问设置VPN服务器

在Windows Server 2012上使用远程访问设置VPN服务器

本指南说明了如何使用Windows Server 2012设置PPTP VPN。我们将使用远程访问角色来设置VPN并为单个用户

反向SSH隧道

反向SSH隧道

在Internet服务提供商中,通常的做法是阻塞其归属用户的大部分(即使不是全部)入站端口,这使它成为不可能

在Debian 7上具有Postfix,Dovecot和筛子的简单Mailserver

在Debian 7上具有Postfix,Dovecot和筛子的简单Mailserver

下面的教程描述了如何使用Postfix作为MTA,Dovecot作为MDA以及出色的Sieve来设置简单的邮件服务器来对邮件进行排序。起始

RPKI

RPKI

RPKI(资源公钥基础结构)是一种有助于防止BGP劫持的方法。它使用加密签名来验证是否允许ASN

在Windows Server 2012上设置DNS服务器

在Windows Server 2012上设置DNS服务器

Windows Server 2012可以配置为DNS服务器。DNS用于将域名解析为IP地址。通过托管自己的DNS服务器,您可以

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息