我有两台服务器,一台有静态 IP 地址(网关),另一个则没有(前端)。
Tunneled directly │ Over the public network
[FRONTEND]────[GATEWAY]╝ → [GATEWAY]╕
│ → [INTRANET]────[FRONTEND]┘
[INTRANET] →
为了让网关始终知道如何将连接路由到动态寻址的前端,网关还充当 OpenVPN 服务器,因此前端从网关的角度来看具有静态 RFC1918 地址。VPN 链接是站点到站点的连接,也是 WAN 类型的连接,并且使用 OSPF 来路由流量,因此站点之间没有 NAT。它运行良好,只是您可能注意到我在提到地址时使用了复数……
我一直在尝试执行某种负载平衡和/或故障转移,但无论我多么努力,尽管所有路由器的每个接口(被动+主动)上都启用了 OSPF,但还是检测到了一些路由循环,整个系统都崩溃了或出现了有损链接。我想改变我的方法,只通过开放的互联网进行路由,但如果出于某种原因 IP 地址发生变化,我需要,这种情况很少发生,但仍然有可能实现即时更新。所以我也不想设置 BIND。高频率可能意味着我需要不停地刷新缓存。
我有一个Cloudflare STUN 类无服务器工作器或功能或其他你可以curl
,它只给出你的 IP 地址作为响应,我在想也许可以设置一个 cron 作业来无休止地执行此操作并将其输出转换为 hosts 文件中的主机名,该文件将rsync
位于远程服务器 网关。听起来太简单了,但说实话,我有点担心用我糟糕的技能修改系统文件sed
,awk
而且我不知道任何编程或脚本语言,除非 Bash 是其中之一(它是一个解释器,对吧?)。此外,Cloudflare 工作者在给定的 CPU 时间后开始收取账单,其计费方案比 Cloudflare 自己的更新 DNS 记录的 API 更复杂。我想它有数十万次调用,但我宁愿先探索其他 Cloudflareless 选项。
所有这些系统都属于一个或多个域,因此它们都有自己的 FQDN,只是我迫不及待地希望 DNS 只为这个链接传播。使用该hosts
文件的原因很简单,因为 DNS 是一个我可以使用变量,而 hosts 文件是因为它立即起作用并否决其他任何内容*。但它不需要是 DNS,只要前端的结果 <ping/通知/marcopolo/等等> 网关我获取变量或文件中的 IP 地址,可用于创建路由。系统范围的变量可以通过 SSH 更新吗?我刚刚考虑了源的身份验证,似乎 SSH 是最简单的方法,这是我的脑海中想到的。
网关运行 Linux(特别是 RHEL9.2),在前端我可以选择各种操作系统。我突然想到一定已经有一个用于此的工具;也许设计为 DDNS 客户端/服务器解决方案的一个组件,它可以完成这个任务,这样我就不必重新发明轮子了。:)
有什么建议么?
*:除非你使用的是 Windows;我相信它是遥测和其他微软资产,其中一些地址是系统中硬编码的——如果好奇的话,可以搜索一些微软演示文稿,其中有演讲者 Paula Januszkewicz (CQURE)。