通过IP地址vs域名调用API


Calling API by IP address vs domain name

在最近一次针对DNS的DDoS攻击中,我的网站无法继续运行。

当主站点保持正常运行时,我无法连接到不同域的外部API,导致站点完全无法使用。

数据是用PHP获取的:

file_get_contents(API_PATH)

我目前使用域名调用API,但如果需要,我可以使用IP地址。

通过IP调用API有什么优点/缺点吗?

在做这个改变之前还有什么我应该知道的吗?

您的机器可能缓存了已解析的主机,但尚未更新。您需要刷新DNS缓存。

使用IP地址不是一个好主意。虽然DNS提供商可能受到攻击,但更有可能的是IP被更改。我的意思是,很少有DNS提供商像最近这样受到如此大规模的攻击,而且看到一个网站的IP地址被更改肯定是更常见的(尽管它不应该总是正常发生)。因此,您可能希望在 DNS攻击期间使用IP地址(尽管您自己的DNS提供程序也可能受到攻击),但不是作为正常情况。如果你想要安全,在域名无法解析时使用缓存的IP地址;但是写这种代码是没有意义的,因为它很少有用。

如果使用IP地址:

  • 你不能在不更新所有客户端代码的情况下将服务移动到不同的服务器
  • 你不能使用某些形式的负载平衡
  • 您不能使用主机名来区分托管在同一IP地址上的多个服务

在API调用中使用DNS名称或IP地址确实没有太大区别。

然而,如果你改变了服务提供商,你将不得不更新你的DNS设置(比如你的A记录)和你代码中的IP地址,否则你就不必这样做了。

除此之外,很好,除非有人想到任何其他原因。

我猜您想减轻最近DNS DDoS攻击的影响。

优势:

  • 您的网站仍在运行。虽然这可能不是太重要,因为没有人能够访问你的网站。

缺点:

  • 如果API改变了自己的IP地址怎么办?
  • 如果API使用DNS进行负载平衡(例如,它可能在不同的时间解析到不同的ip)怎么办?
  • 如果API使用CDN怎么办?