![自动将动态 IP 地址指向域](https://linux22.com/image/1468541/%E8%87%AA%E5%8A%A8%E5%B0%86%E5%8A%A8%E6%80%81%20IP%20%E5%9C%B0%E5%9D%80%E6%8C%87%E5%90%91%E5%9F%9F.png)
我想将我的所有项目从共享主机移动到个人服务器,基本上是我家里使用 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_password
别名 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