自动将动态 IP 地址指向域

自动将动态 IP 地址指向域

我想将我的所有项目从共享主机移动到个人服务器,基本上是我家里使用 200Mb 光纤连接的服务器。

我遇到的第一个问题是我的动态 IP 地址。它可以随时更改(几周、几个月),我需要一种方法来自动将我拥有的域指向我的家庭 IP。我不知道该怎么做。实际上,我有一个与托管公司关联的域指向共享托管的特定 DNS,但我需要将域指向我的 IP(并在我的 IP 地址更改时更新它)。

第二个问题是关于 SSL。我想将一个域升级到 SSL 并配置 Apache 来使用它,但我不知道是否可以购买 SSL 证书以用于具有我的动态 IP 的域(不知道该证书是用于域还是 IP)。

欢迎任何帮助。

答案1

您的问题中的动态 IP 方面可以轻松解决,因为有许多提供商提供动态 DNS作为一种服务。例如:

我自己尝试过 DynDNS 和 no-ip,它们都像宣传的那样好用。这已经是很久以前的事了,但我猜它们现在仍然很好用。

SSL 证书基于域名,而不是 IP,因此只要您的服务器设置正确,就不会出现问题。

答案2

虽然已经有一个答案被标记为正确,但我将添加另一个更详细的答案。@Jarmund 的答案没有错,但我认为可以说更多。

如上所述,您需要动态 DNS 服务。我不确定他们中是否有人有“好的”完全免费计划。上次我使用上述提供商之一时,您需要每月单击电子邮件中的链接来“刷新”或“保持”免费帐户。不用说,电子邮件中包含广告,尽管有一个过滤器将电子邮件标记为对我很重要,但它经常最终被归为垃圾邮件。

话虽如此,如今一些路由器品牌确实提供终身免费的路由器动态 DNS 服务订阅。例如,netgear 提供由 no-ip.com 提供支持的 myNetgear 动态 DNS 服务。拥有路由器后无需额外付费,设置后路由器本身会更新外部 DNS。其他路由器品牌似乎也有这个,我不会提及其他名字,因为这是唯一的当前的我有第一手经验。

如果您没有支持动态 DNS 的路由器,那么您将需要在本地计算机上运行一个全天候运行的客户端,以保持动态 DNS 服务最新。如果您运行的是服务提供商提供的调制解调器/路由器,则很可能会出现这种情况。您可能需要考虑将调制解调器和路由器分开,并拥有自己的路由器。如果不知道您的 ISP,就不可能提供具体信息。

当然,路由器附带的免费服务是指向服务域的公共子域。示例:MyExample.someDynamicDNSExample.com 指向您的本地外部 IP。

如果您有 5 个(或任意数量)自定义域名,那么这对您有什么帮助?如果您愿意为动态 DNS 服务支付更多费用,那么动态 DNS 服务会很高兴,也许在某些情况下这样做是有理由的,但在大多数情况下您不需要这样做。

当您现有的共享主机设置 DNS 或告诉您在外部 DNS 中输入什么时,他们可能会创建或告诉您创建 A 记录。这些记录指向域名(或子域名)特定 IP地址。在这种情况下,您需要对自定义域名执行的操作是输入 CNAME 记录(删除任何现有的 A 记录,它们会冲突),并将“值”设置为您的动态服务主机名,或者在此处的示例中,我们将使用 MyExample.someDynamicDNSExample.com。这基本上是说“此域名使用与 MyExample.someDynamicDNSExample.com 相同的数字 IP”

答案3

对于通过 Google Domains 托管域名的用户,他们有一个页面解释如何设置应全天候运行以更新 IP 地址的客户端软件。 https://support.google.com/domains/answer/6147083?hl=en

他们描述了如何使用现有的客户端软件来实现这一点,以及如果您精通技术,如何执行 REST POST 请求,使用脚本等自行实现这一点。

引用页面内容:

在网关、主机或服务器上设置客户端程序

目前有几种流行的动态 DNS 客户端在使用,例如 DDclient 和 INADYN。此外,大多数路由器都内置了软件来检测 IP 变化并将其与名称服务器进行通信。

注意:Google Domains 使用 dyndns2 协议。

使用以下配置配置您的动态 DNS 客户端:

提供商(或 DNS 或服务):您的 DNS 提供商的名称。

用户名:(或凭证)动态 DNS 记录中生成的用户名。

密码(或凭证):动态 DNS 记录中生成的密码。

创建记录并配置客户端软件后,通过将子域和域输入到 Web 浏览器(或适当的客户端)并查看它是否连接到正确的资源来对其进行测试。

例子

DDclient 现在支持 Google Domains。

支持 Google Domains 的 DDclient

ddclient.conf 条目:

ssl=是

协议=googledomains

登录=生成的用户名

密码=生成的密码

你的资源.你的域名.tld

常规客户端配置示例:

DD客户端

不支持 Google Domains INADYN

ddclient.conf 条目示例:

协议=dyndns2

使用=web

服务器=domains.google.com

ssl=是

登录=生成的用户名

密码=生成的密码

你的资源.你的域名.tld

将以下内容添加到您的 inadyn.conf

系统[电子邮件保护]

用户名 生成的用户名

密码 generated_pa​​ssword

别名 sub.domain.tld

使用 API 更新您的动态 DNS 记录

动态 DNS 客户端软件会自动更新您的动态 DNS 记录。您可以通过向以下 URL 发出 POST 请求(也允许 GET)来使用 API 手动执行更新:

https://domains.google.com/nic/update

该 API 需要 HTTPS。以下是示例请求:

https://用户名:[电子邮件保护]/nic/update?主机名=子域.yourdomain.com&myip=1.2.3.4

注意:您还必须在请求中设置用户代理。Web 浏览器通常会在通过上述 URL 进行测试时为您添加此项。无论如何,发送到我们服务器的最终 HTTP 请求应如下所示:

HTTP 查询示例:

POST /nic/update?主机名=subdomain.yourdomain.com&myip=1.2.3.4 HTTP/1.1

主机:domains.google.com

授权:基本 base64 编码身份验证字符串用户代理:Chrome/41.0[电子邮件保护]

请求参数:

参数 必需/可选 描述

用户名:密码 必需 与要更新的主机关联的生成的用户名和密码。

hostname 必需 要更新的主机名。

myip 可选

(如果您有 IPv6 地址,则必填)主机将设置为的 IP 地址。如果未提供,我们将使用发送请求的代理的 IP。

注意:如果您的代理使用 IPv6 地址,则需要 myip。您可以通过以下方式检查代理的 IP 地址 https://domains.google.com/checkip

离线 可选 将当前主机设置为离线状态。如果对离线主机执行更新请求,则主机将脱离离线状态。

允许的值包括

是的

处理请求后,将返回下列响应之一。

请确保您正确地解释响应,否则您的客户端可能会被我们的系统阻止。

响应状态描述

好 1.2.3.4 成功 更新成功。后面跟着一个空格和更新后的 IP 地址。在您的 IP 地址更改之前,您不应尝试进行其他更新。

nochg 1.2.3.4 成功 提供的 IP 地址已为此主机设置。在您的 IP 地址更改之前,您不应尝试进行其他更新。

nohost 错误主机名不存在,或者未启用动态 DNS。

badauth 错误 用户名/密码组合对于指定的主机无效。

notfqdn 错误提供的主机名不是有效的完全限定域名。

badagent 错误 您的动态 DNS 客户端发出了错误请求。请确保在请求中设置了用户代理。

滥用错误由于无法正确解释先前的响应,主机名的动态 DNS 访问已被阻止。

911 错误 我们这边发生错误。请等待 5 分钟,然后重试。

答案4

我的 DNS 托管提供商 ionos 提供了可在我的服务器上运行的软件,以使用我当前的 IP 更新 ionos 托管的域名。请参阅以下说明: https://www.ionos.com/help/domains/configuring-your-ip-address/connecting-a-domain-to-a-network-with-a-changing-ip-using-dyna

相关内容