19个版本 (8个稳定版)

1.0.7 2024年2月26日
1.0.6 2024年2月25日
1.0.5 2023年12月28日
1.0.4 2023年5月29日
0.1.11 2023年1月21日

#5 in #路由

Download history 10/week @ 2024-04-02 2/week @ 2024-05-21

每月296次下载

Apache-2.0

66KB
505 代码行

AWS Route 53 动态DNS

Crates.io Crates.io Build Status dependency status snapcraft.io

简介

此应用程序提供了一种方法,通过在由Amazon Route 53服务托管主DNS的域名中添加记录,来保持网络中的URL一致性,其中外部IP地址可能会不时发生变化。

你会有很多原因想要这样做,最常见的是提供一个URL,指向国内网络上托管的服务,而你的ISP没有提供静态IP地址,例如,web服务器、家庭VPN等。还有其他DDNS服务可能提供免费选项,我只是想使用自己的域名。

这不是一个面向公众的DDNS API,对于此,我推荐另一个具有类似名称的仓库:aws-ddns。这是一个提供DDNS的应用程序,它使用R53 API,目的是在你网络中的一台计算机上运行,以你满意的频率运行。

先决条件

  • 一个AWS账户,此工具使用Amazon Route 53服务,这是AWS的一部分,因此你需要一个账户
  • 你的域名,Route 53服务允许你管理你的域名DNS,此工具允许你将子域名映射到你的当前外部IP地址
  • AWS凭证 允许修改存储在位于 $HOME/.aws/credentials 的本地凭证文件中的R53记录,就像为AWS CLI做的那样。你也可以使用 AWS_SHARED_CREDENTIALS_FILE 环境变量来定位你的凭证文件,或者使用 AWS_ACCESS_KEY / AWS_SECRET_ACCESS_KEY 环境变量来指定你的凭证。

工作原理

应用程序从线上的许多服务中获取其外部网络地址,通过https进行。应用程序已将其中一些站点设置为默认,但您可以通过使用-i参数提供以逗号分隔的站点列表来自定义选择。这些服务中的许多都有调用频率限制,因此r532-ddns将每次运行检查中的随机两个服务。返回的IP地址值将与存储在Amazon Route 53 DNS设置中的值进行比较,如果它们不同,则将在Route 53中更新DNS记录。

选项

$ r53-ddns -h

Set an Amazon Route 53 DNS record for the server/network

Usage: r53-ddns [OPTIONS]

Options:
  -s, --subdomain <SUBDOMAIN>          The subdomain to save (required)
  -d, --domain <DOMAIN>                The domain to save the record in (required)
  -r, --region <REGION>                The aws region [default: us-east-1]
  -i, --ipaddress-svc <IPADDRESS_SVC>  The ip address services to use, e.g. ident.me,ifconfig.me/ip
  -n, --nat                            The record is a nat router and so a *.<subdomain>.<domain> CNAME record will be set
  -l, --logdir <LOGDIR>                Absolute path for the directory where log file should be written [default: /var/tmp]
  -a, --alert-script <ALERT_SCRIPT>    Script called on error or ip address changes, see: https://r53-ddns.a1ecbr0wn.com/alert-script
  -c, --check <CHECK>                  Consecutive check gap in seconds for continuous checking [default: 0]
  -v, --verbose                        Verbose logging
  -V, --version                        Print version information
  -h, --help                           Print help
  • 要设置DNS记录,应用程序必须提供子域和域参数。
  • 如果域所在的区域与默认的us-east-1不同,则需要使用-r参数进行指定。
  • 可以通过-i参数覆盖默认的IP地址https服务列表。
  • 如果提供了-n参数,则将设置一个额外的*.<子域>.<> DNS记录。这可以用于将流量路由到具有该模式的全部主机。
  • 为了使应用程序持续运行,可以使用-c参数传入连续检查之间的秒数间隔。一些IP地址Web服务器如果被频繁调用会返回错误,这个应用程序通过随机化使用的服务来尝试解决这个问题,但建议使用默认列表时,连续检查间隔不低于300秒。

安装

使用方法

r53-ddns可以按需使用,但如果您的外部IP地址发生变化,您可能希望将其设置为持续运行。您可以通过使用作业调度程序(如cron)或作为服务来完成此操作。

问题

如果您在使用此应用程序时遇到问题,请首先启用详细日志记录,使用-v参数。如果您在cron或作为服务运行时尝试解决一个问题,日志将默认记录到/var/tmp/r53-ddns.log文件,这是一个无论您以哪个用户运行应用程序都应该是可写的文件。

如果问题不明显或您认为存在错误,请通过GitHub提出问题。

贡献

请随意贡献,我会很高兴查看提出的任何PR。

Get it from the Snap Store

其他信息

依赖关系

~23–37MB
~700K SLoC