DDNS:DIY 解决方案可行吗?效果更好吗?

DDNS:DIY 解决方案可行吗?效果更好吗?

我正在尝试在家里建立个人邮件/日历服务器(是的,我听说这很困难,很麻烦,等等,但我仍然想尝试一下)。我的 ISP 不提供静态 IP 地址,因此看起来某种动态域名服务 (DDNS) 是解决方案。

但是,我一直在做研究,并且找到了至少几个在线资源,它们解释了您可以自己执行 DDNS:您需要有一个脚本/程序来定期监视您的 IP 地址,如果地址发生变化,则脚本/应用程序需要更新您用于家庭服务器的任何域名(我碰巧有一个域名停放在托管服务提供商处以应对这种情况,据我了解,我只需要托管公司的 API 密钥即可以编程方式调整必要的域/IP 记录……如果我在这一点上错了,请有人告诉我,并且有更简单的方法)。

问题是:当您按照我上面描述的方式更新域名记录时,我读到它可能需要几个小时才能在整个系统/世界传播(所有 DNS 服务器都必须重新填充更新后的地址)。但是,我看过的几家付费 DDNS 提供商似乎都宣传他们能够让更改几乎立即生效(或者至少比我的 DIY 方法更快)。这是真的吗?我是否遗漏了什么?

此外,我还有另一个担忧:使用 DDNS 提供商是否会忽略任何安全问题?他们是否无法监控流经他们提供的域名的所有流量?有没有人对哪种方法(付费还是 DIY)可能更好有见解?

我很感谢您抽出时间...谢谢!

答案1

我正在尝试在家里建立个人邮件/日历服务器(是的,我听说这很困难,很麻烦等等,但我仍然想尝试一下)。

邮件部分可能不太好。请参阅@Alex 的回答。

你需要有一个脚本/程序定期监控你的 IP 地址,如果地址发生变化,那么脚本/应用程序需要更新你用于家庭服务器的域名

差不多就是这样。

我只需要托管公司的 API 密钥,以便以编程方式调整必要的域名/IP 记录

是的,但是如果该公司仅提供通用的“托管一切”服务,则可能根本没有任何 DNS 管理 API(而是专注于网络和邮件),您可能需要将域名移到其他地方。

事情是这样的:当您按照我上面描述的方式更新您的域名记录时,我读到它可能需要几个小时才能传播到整个系统/世界(所有 DNS 服务器都必须重新填充您更新的地址)。

不。只有您的 DNS 托管提供商自己的系统需要更新。世界其他地方不会保留永久记录 - 它只是缓存单个查询的结果,缓存时间在每个(子)域的“TTL”(生存时间)字段中指定的时间内。

但是,我看过的几家付费 DDNS 提供商似乎都宣传他们能够让更改几乎立即生效(或者至少比我的 DIY 方法更快)。这是真的吗?我是否遗漏了什么?

我猜他们允许在动态域上配置非常低的 TTL(低至几秒钟),这意味着它会很快从任何缓存中退出,代价是 DDNS 提供商本身会收到更多请求(他们的 DNS 服务器和数据库负载更高,并有借口向您收取更多费用)。仅这一点并不是什么特别的事情,可以用任何 DIY 方法实现。

他们难道无法监控流经他们提供的域名的所有流量吗?

不。DNS 服务器仅为您提供一个地址(很像电话簿),并不参与任何进一步的通信。

(除非提供商确实尝试返回错误数据一旦新闻网站获悉此事,该公司的生存时间就会大大缩短。)

也就是说,请注意 API 的工作方式;当然,你不能确定服务没有任何漏洞,但如果(例如)API 通过未加密的 HTTP 运行并在明面上传输 API 密钥,那么你就不应该依赖它。

答案2

如果你没有静态 IP,那么你应该忘记邮件服务器,如果你使用 DDNS 解决方案,大多数电子邮件服务器要么会拒绝你的电子邮件,要么会将电子邮件标记为最高垃圾邮件级别,因为所有动态 IP 都在针对性语言学习列表。(您可以在 PS 部分中看到更多详细信息,了解为什么在住宅 IP 上设置电子邮件服务器不是一个好主意,但仍有一种解决方法,即使用中级廉价 VPS(虚拟专用服务器)

关于“自己进行 DDNS”——好的域名注册商通过其 API 提供免费的 IP 更新,您的程序需要做的就是定期验证公共 IP,如果 IP 发生变化,则将新 IP 发送给注册商,注册商将更新 A(AAAA) 记录。顺便说一句,如今大多数路由器都具有这样的功能(监视 IP 并向 DDNS 提供商报告)

我读到过,它可能需要几个小时才能传播到整个系统/世界

这取决于 DNS 提供商,有信誉的注册商允许将 TTL(告知其他人 IP 更改频率的时间)设置为 5 分钟。并非所有转发中间 DNS 服务器都遵循此规则以避免高负载,但通常即使它们不遵循域所有者的 TTL,也很少会超过几个小时。大多数转发器都会按照您在域 TTL 中设置的方式更新其缓存。

使用 DDNS 提供商时我可能会忽略哪些安全问题?

上网已经存在安全问题。请将您的服务器与本地网络隔离,以避免不受欢迎的客人。

有谁能提供关于哪种方法(付费还是 DIY)可能更好的明智意见?

如果使用 DDNS,您将会浪费时间和金钱。如今,您只需每月支付 3-4 美元即可获得不错的 VPS(虚拟专用服务器)。虽然网站(如果您打算拥有一个)可以直接托管在 VPS 上,因为它通常不需要太多空间,但是如果您希望长期运行服务器或预计电子邮件数量巨大,则电子邮件服务器可能会有问题。通常 20GB 的空间足够小型企业使用 3-5 年,甚至无需删除旧电子邮件。即使您预计电子邮件数量巨大,您也可以使用nginx功能将电子邮件流量代理到您的家中。因此,您可以在家中使用动态 IP 托管主要电子邮件服务器,而 VPS(具有静态 IP)将代理传入/传出流量到您的家中。您可以在这样的配置中轻松使用您自己的 VPS,因为无需担心 DNS 传播,域将始终指向 VPS 的静态 IP。您仍然需要管理向 VPS 报告您的家庭 IP 变化,这样 VPS 才会知道在哪里代理流量,但这要容易得多,只需在您的 VPS 上查询一些 URL 并在日志中解析您的传入 IP 并调整 nginx,这样它就始终知道您在哪里。

附言


我发现这个主题对于超级用户来说很有趣,所以我想添加更多细节。

针对性语言学习列表保存了 IP 数据库,这些 IP 通常是动态 IP,因此针对性语言学习 对电子邮件服务器的运营商有很大帮助。这不是技术问题,也不是 ISP 是坏人不允许在动态 IP 上使用电子邮件服务器,问题是来自动态 IP 的大多数电子邮件流量来自受感染的计算机,这些计算机发送大量垃圾邮件或恶意软件,很容易分布式拒绝服务接收服务器(如果其中一个是目标)。一些 ISP 会阻止到端口 25 的传出连接,以防止恶意软件的传播和分布式拒绝服务,但有些则不然。几乎所有公司的电子邮件服务器都会断开来自针对性语言学习可显著减少垃圾邮件的列表。

第二种有效的反垃圾邮件解决方案是删除来自 DNS 中没有反向 PTR 记录且与域的 DNS 记录不匹配的 IP 的连接。即使连接来自没有 PTR 记录的静态 IP,通常也是严重配置错误或主要来自垃圾邮件团伙运行的服务器(某些大型(但粗心)提供商可能会被排除,但可以手动将其添加到白名单中)。虽然在 VPS 上设置反向 PTR 记录只需几分钟,但如果从 ISP 获得的静态 IP 和设置 PTR 的过程通常很麻烦(必须打电话给他们,在验证您是 IP 的原始所有者后提交工单,然后等待他们的系统管理员的宽恕,他们需要设置反向 PTR 记录,有时需要几个小时,但有时需要几天)

另外,这不是什么关键问题,但是...为了避免电子邮件伪造,大多数电子邮件服务器所有者使用所谓的防晒指数(发件人策略框架)允许指定最快的策略处理方法,如果在 DNS 授权 IP 地址中设置允许代表域发送电子邮件。(可以通过以下方式指定授权服务器完整限定域名 (FQDN)作为 MX 记录的参考,但它需要通过 DNS 进行额外的往返来连接服务器)因此,在 DNS 中管理浮动 IP 并不是一件有趣的事情。

答案3

我的 ISP 不提供静态 IP 地址,因此某种动态域名服务 (DDNS) 似乎是解决方案。

这是一个解决方案。作为另一个解决方案的示例,HurricaneElectric.net IPv6 隧道提供具有可移动隧道端点的静态 (IPv6) 地址。诚然,目前 IPv4 更适合为广大公众提供此类功能,但如果您能找到愿意合作的计算机,从技术上讲,您也可以使用 IPv4 实现这样的功能。

你需要有一个脚本/程序定期监控你的 IP 地址,如果地址发生变化,那么脚本/应用程序需要更新你正在使用的域名

从技术上来说,这听起来像是一个可行的计划。

我只需要托管公司的 API 密钥,以便以编程方式调整必要的域/IP 记录...如果我错了,请有人告诉我,并且有更简单的方法。

具体细节取决于域名注册商如何实现此功能。有些可能使用某种 API 密钥,而有些可能依赖 Web 界面进行自动更新。过去,一些 ISP 提供此类服务,但依赖于手动更改来响应请求。因此,这完全取决于为您提供服务的人。

事情是这样的:当您按照我上面描述的方式更新您的域名记录时,我读到它可能需要几个小时才能传播到整个系统/世界(所有 DNS 服务器都必须重新填充您更新的地址)。

胡说八道。众所周知,DNS 传播需要几分钟、几小时或几天(例如 72 小时)。然而,当人们深入分析时,他们发现,大部分模糊的“传播”时间只是因为 DNS 托管提供商更新缓慢。

更好的理论是,您只需要等待 TTL 值。不过,这个理论存在问题...

但是,我看过的几家付费 DDNS 提供商似乎都宣传他们能够让更改几乎立即生效(或者至少比我的 DIY 方法更快)。这是真的吗?我是否遗漏了什么?

好吧,现实情况是这样的:为了使您的更新完全生效,您需要让互联网清除其旧信息的活动缓存。

根据标准,缓存 DNS 服务器可能依赖于其缓存,缓存时间长度由您可以配置的 TTL 值指定。

然而,现实情况是,至少有一些(甚至可能是大多数?)大型 ISP 会运行自己的缓存 DNS 服务器,而这些服务器会完全忽略 TTL 值。他们这样做是因为他们认为,如果他们不频繁更新 DNS 缓存,总体效果将是带宽减少(也许计算时间也会减少)。

因此,任何依赖此类 DNS 服务器的电子邮件服务器都可能受到影响,并且无法注意到您的更新,直到 DNS 服务器更新为止。在某些情况下,这可能需要一两天(或三天?)。

但这种情况已经越来越少见,实际操作中,大部分DNS服务器在一两个小时内就会被刷新缓存。

由于某些缓存的更新速度不如其他缓存快,因此互联网上的某些地方会使用新地址,而其他地方仍会尝试使用旧地址。几个小时内,大多数计算机都可以正常使用新信息。(其中许多计算机可能在几分钟内就可以正常工作。)

电子邮件软件的典型行为是尝试发送电子邮件。如果失败,则稍后重试。电子邮件服务器通常会在几天内不断重试(大约每小时一次),然后放弃。因此,可能发生的情况是,您不会丢失电子邮件,但会稍微延迟。

Alex 的评论“所有动态 IP 都在 PBL 列表中”显然是错误的,因为这些信息是去中心化的(因此“所有”这个词并不准确),但确实许多动态 IP 都在这样的列表中,所以这可能意味着一些与电子邮件相关的计算机/设备可能决定不与您合作。

此外,我还有另一个担心:使用 DDNS 提供商时我可能会忽略什么安全问题吗?

最大的担忧是您的更新是否以安全的方式处理。

他们难道无法监控流经他们提供的域名的所有流量吗?

不是。DNS 服务器的工作是接收域名请求并提供响应。传统的典型响应是提供一个或多个 IP 地址。其他响应也是可能的,例如引用另一个 DNS 服务器或域名(例如,使用 CNAME),或其他数据(例如,通过较新的 DNSSec 标准帮助提供安全性)。

有谁有明智的意见...

我想指出的是,如果您真的想运行一个严肃的电子邮件服务器,您可能需要考虑遵守现代电子邮件标准。这不仅仅涉及遵守 SMTP 和 DNS 技术规范。许多人使用大型提供商,而这些大型提供商可能会实现他们自己的期望。

例如,我知道几年前使用 Debian 和 Postgrey 设置的电子邮件服务器。Postgrey 是一款提供“灰名单”反垃圾邮件处理的软件。但是,使用的 Postgrey 版本假定当电子邮件服务器重试电子邮件时,发送电子邮件的服务器将使用相同的 IP 地址。众所周知,Office 365 电子邮件服务器会从仍在 IPv6 /64 子网内的其他 IP 地址重试发送电子邮件。Postgrey 不喜欢这样。

随着越来越多的组织转向 Office 365,这对于使用旧电子邮件服务器的人来说越来越成问题。Postgrey 软件的较新版本已经发布,但安装此类软件的简单方法是使用该操作系统的官方软件存储库。因此,实际上,更新该软件的明智方法是升级操作系统。

还有其他惯例,例如 DNS 名称以“mail.”开头,这可能会导致您的设置被判断为更可信或更不可信。这可能会影响设备是将您视为不合规的垃圾邮件发送者,还是视为值得通信的设备。

当然,也许在严格谈论官方技术规范时,大型组织正在采取一些行动,这些行动与包含所用协议技术规范的 RFC 文档所要求的最低要求不同。但如果您想与更大的互联网社区进行交流,一些重要/大型参与者会施加一些额外的标准。准备好很好地满足这些标准,或者准备好遇到一些麻烦。

我对所有这些标准到底是什么不太清楚,因为它们会随着时间而改变。

关于需要升级旧 Debian 操作系统的旧电子邮件服务器,也许人们无论如何都应该更频繁地升级他们的操作系统。不过,我想说的是,由于许多电子邮件地址普遍使用的新行为,多年来运行良好的软件设置现在已损坏。如果您尝试做一些不寻常的事情,例如在较慢的 Internet 提供商上使用动态 DNS,则在此过程中可能会遇到一些额外的问题。由于您听起来雄心勃勃,也许您可​​以为此投入精力。我只是警告您做好准备。

... 关于哪种方法(付费还是 DIY)可能更好?

正如其他人指出的那样,付费会更容易,而且对大多数人来说相当经济。大型提供商可能会提供一个稳定的 IP 地址,您可以将 MX 记录指向该地址(这样电子邮件就会发送到那里),并且可能会提供明显更好的带宽。

DIY 更有利于积累经验和了解事物的工作原理,并且选择不完全依赖大公司的实施。对实施有更多控制权还可以让您更快地进行重大的自定义更改。

哪个“更好”将取决于您的个人目标,因此我将这些结论留给您自己决定。

答案4

其他答案已经解释了DDNS部分。

我要解释一下为什么您必须使用单独的服务器来发送电子邮件(因为@Alex 的简要解释不完整)。

最重要的是,您需要一个有效的反向 PTR 记录才能发送电子邮件 — 如果 IP 地址的反向 DNS 记录与发件人域不匹配,许多电子邮件服务器会检查它并退回您的邮件。此记录由 IP 地址的所有者提供 — 例如由您的 ISP 提供。

现在让我们想象一下,您以某种方式获得了有效的、动态更新的反向 DNS(哈哈)。您仍然需要让所有人相信您的域名是合法的,并且您发出的电子邮件不是垃圾邮件。

正如@Alex 所解释的那样,小型邮件托管商喜欢使用 spamhaus 和其他在线黑名单。但我见过这些公司管理员做了很多其他愚蠢的事情(例如阻止所有不是来自 Gmail/Hotmail 的电子邮件)。实际上,不仅仅是一些“公司管理员”——我见过Sourceforge阻止合法公司电子邮件域的注册,因为“我们不知道为什么,但我们的垃圾邮件过滤器认为,你们是坏人”。忽略他们 — 你不可能与天底下所有人兼容。

如今,大型邮件托管商不再依赖 spamhaus 或其他 PBL。他们自己跟踪您的可信度。发件人信誉(至少大部分)与 IP 相关联。这是因为垃圾邮件发送者经常被托管商踢出,因此他们被迫跳转 IP。从 Gmail 的角度来看,您最近创建的域/IP 与普通垃圾邮件发送者没有什么不同。当您开始发送电子邮件时,您的信誉很低(默认情况下您被视为垃圾邮件发送者!)。您的大多数外发电子邮件将被标记为垃圾邮件。当有人回复您的电子邮件或特别将其标记为合法(通过按下其电子邮件提供商的 Web 界面中的相应按钮)时,对您的信任会略有增加。如您所见,要提高发件人信誉,您必须多年来在相同的 IP 上使用相同的域。使用动态 IP 无法可靠地做到这一点。


一旦你从主机商那里租用了 VPS,让家庭服务器保持动态 IP 就变得容易多了。你可以将该 VPS 用作你自己的 DDNS 服务器,TTL 极低。你甚至可以放弃 DNS,使用其他方式(如 HTTP 重定向)来处理家庭服务器 IP 的更改。你仍然可以直接在你的家庭服务器中接收电子邮件 — — 当你的家庭 IP 出现故障或最近更改时,可以选择回退到 VPS。

相关内容