Digital Ocean 上的浮动 IP 使用情况

Posted

技术标签:

【中文标题】Digital Ocean 上的浮动 IP 使用情况【英文标题】:Floating IPs usage on Digital Ocean 【发布时间】:2021-12-23 10:09:29 【问题描述】:

我正在寻找一个基本的东西,但我什至没有找到一个很好的文档来完成它。

我想分配一个浮动IP,然后将它关联到一个除了eth0之外的droplet的网络接口。 原因是我希望能够使用编程语言轻松地从一个 IP 切换到另一个 IP。

简而言之,我希望能够执行这两个命令,并且都应该提供不同的响应。

curl --interface eth0 https://icanhazip.com
curl --interface eth1 https://icanhazip.com

另外,我想知道释放Floating IP后该怎么做,如何回滚到起点。

我阅读的所有文档,严重依赖“ip route”和“route”,大多数甚至没有工作,有些工作但完全用浮动替换旧IP,这不是我想要的,而且他们也没有显示如何回滚引入的配置更改。

请帮忙,我现在花了 1 天的时间试图让它为一个项目工作,但到目前为止没有结果。

我想没有必要了解 DigitalOcean,我认为如何在其他云提供商上进行这项工作也适用于此。

更新

在 DigitalOcean 社区论坛 (https://www.digitalocean.com/community/questions/clear-guide-on-outbound-network-through-floating-ip) 上询问此问题后,他们声称不支持,但如果有人可以提供这样的“hacky”解决方案,我也会接受它,但可能会有一些解决方案。谢谢

【问题讨论】:

【参考方案1】:

在云端(AWS.GCP等)ARP是由虚拟网络层模拟的,这意味着只有云平台分配给VM的IP才能被解析。由于这个原因,大多数 L2 故障转移协议确实会中断。即使 ARP 有效,这些 IP(通常称为“浮动 IP”)的 IP 分配过程也不会以标准方式与虚拟网络集成,因此您的操作系统不能仅使用 ARP“获取”IP 并路由数据包对自己。

我没有亲自在 Digital Ocean 上做过这个,但我假设如果你想走这条路,可以调用云的专有 API 来完成这个功能。

请参阅 GCP 上的 link,了解浮动 IP 及其实现。希望这会有所帮助。

这是一个需要测试的想法:

假设您有 Node1(10.1.1.1/24) 和 Node2(10.1.1.2/24) 在两个虚拟机上创建一个环回接口,并为两个虚拟机设置相同的 IP 地址 (10.2.1.1/32) 在它们之间启动心跳发送/接收 当 NodeA 启动时,它会自动进行 API 调用以创建 10.2.1.1/32 的路由,并以首选项 2 指向自身 当 NodeB 启动时,它会自动进行 API 调用以创建 10.2.1.1/32 的路由并以首选项 1 指向自身 节点可以相互监控,以在对方失败时撤消静态路由。理想情况下,您需要第三个节点来达到法定人数并防止出现脑裂情况,但您的想法对吗?

【讨论】:

DigitalOcean 确实告诉我,我正在寻找的东西没有得到官方支持,但可能有一些“hacky”解决方案。他们所说的浮动 IP 的目的是针对入站流量,而不是针对出站流量。

以上是关于Digital Ocean 上的浮动 IP 使用情况的主要内容,如果未能解决你的问题,请参考以下文章

Digital Ocean 主机上的 phpMyAdmin 404 错误

CSRF 令牌与 Laravel API 不匹配,使用 Digital Ocean Load Balancer with Sticky Session

当用户从托管在 Digital Ocean 上的 Web 应用程序将图像上传到 AWS S3 时,是出站还是入站带宽传输?

sh 使用Digital Ocean ubuntu 16.04进行初始服务器设置

如何在 Digital Ocean 中设置环境变量?

text 修复Digital Ocean的权限问题