github 的 IP 地址是否改变了?

github 的 IP 地址是否改变了?

我今天遇到一个问题,由于与 github 的连接问题,我的应用程序服务器上的部署无法完成。

我注意到,当我使用谷歌 DNS 服务器对 github.com 执行 DNS 查找时,我得到了“正确/旧的” IP 地址,这也是 guthub 官方记录的这里

root@server# host github.com 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases: 

github.com has address 192.30.253.112
github.com has address 192.30.253.113
github.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.com.
github.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.com.
github.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com.
github.com mail is handled by 1 ASPMX.L.GOOGLE.com.
github.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.

但是,当我使用托管服务提供商的 DNS 服务器时,我得到了不同的结果:

root@server# host github.com 213.133.98.98
Using domain server:
Name: 213.133.98.98
Address: 213.133.98.98#53
Aliases: 

github.com has address 18.195.85.27
github.com has address 35.159.8.160
github.com has address 18.194.104.89
github.com mail is handled by 1 ASPMX.L.GOOGLE.com.
github.com mail is handled by 10 ALT4.ASPMX.L.GOOGLE.com.
github.com mail is handled by 10 ALT3.ASPMX.L.GOOGLE.com.
github.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com.
github.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.

当我联系我的提供商询问他们为什么提供这些结果时,他们说 github 的 a 记录已经更改。事实上,这似乎是正确的,因为当我再次使用 google dns 服务器跟踪 github 的 dns 记录时,我得到了“新”记录:

root@server# dig github.com +trace @8.8.8.8
...    
text omitted
...
github.com.     172800  IN  NS  ns-520.awsdns-01.net.
github.com.     172800  IN  NS  ns-421.awsdns-52.com.
github.com.     172800  IN  NS  ns-1707.awsdns-21.co.uk.
github.com.     172800  IN  NS  ns-1283.awsdns-32.org.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20171215054800 20171208043800 11324 com. mBRl9D0i8jmeYbtZzR527TfVtbq2x6RSECv23chq0usVGZzVCQz5BYbV JaWeaQ1QWRuTWz3snYFkQBaG7SLQbipDEaVaMgjQ9qnHitJxwzEYPTn0 mT5nweDT+IVqP3NpppB748HAr9IiqqNOar1IyQokv3S59E9cK+s1W3V0 Mik=
4KB3QDAGSO6KO9JK2O5F2FO8F4C5FTA2.com. 86400 IN NSEC3 1 1 0 - 4KB4PTQQ5CTA7POCTGM7RUFC8B1RKTEU NS DS RRSIG
4KB3QDAGSO6KO9JK2O5F2FO8F4C5FTA2.com. 86400 IN RRSIG NSEC3 8 2 86400 20171212052031 20171205041031 11324 com. DmETcOQrFR+iFYhCH4xGJT+khPaTF4Ay50o+FrdpBvRTOPT9WTFf1wOF Ew3cQlBGHdwS2TiT+tLsUlshkmiKZpdH753Lac9Z0ZBU6fcB/PWOwMQX NGPWwYZFrGb8I2QsEvQreBM+WcftfdHGXHn5ziUx8phz1lbJuQXhVYyl LBk=
;; Received 840 bytes from 192.43.172.30#53(i.gtld-servers.net) in 17 ms

github.com.     60  IN  A   18.195.85.27
github.com.     60  IN  A   18.194.104.89
github.com.     60  IN  A   35.159.8.160
github.com.     900 IN  NS  ns-1283.awsdns-32.org.
github.com.     900 IN  NS  ns-1707.awsdns-21.co.uk.
github.com.     900 IN  NS  ns-421.awsdns-52.com.
github.com.     900 IN  NS  ns-520.awsdns-01.net.
github.com.     900 IN  NS  ns1.p16.dynect.net.
github.com.     900 IN  NS  ns2.p16.dynect.net.
github.com.     900 IN  NS  ns3.p16.dynect.net.
github.com.     900 IN  NS  ns4.p16.dynect.net.
;; Received 307 bytes from 205.251.198.171#53(ns-1707.awsdns-21.co.uk) in 12 ms

为什么当我使用 google DNS 查询 github.com 时,它会返回“旧 ips”,但当我使用 dns 跟踪时,它会返回新 ips?google dns 是否返回缓存记录(即使是一天后)?

另一方面,github 会在不通知任何人的情况下更改其 IP 地址吗?他们的文档没有提到那些“新”IP 地址,据我研究,每当他们做出这样的更改时,他们也会在他们的博客上发布。

答案1

alex.forencich 对您的问题的评论可能解释了您所看到的内容。

github.com 的 A 记录可能因您从哪里请求而不同。请记住,上一句中的“您”实际上是指您的服务器解析器正在与之通信的任何递归 DNS 服务器。您的 ISP 的 DNS 服务器使用 AWS 的 eu-central-1 可用区(位于德国法兰克福)中的 IP 进行回答 - 完全合理,因为您的 ISP 是 Hetzner。

我不知道 Google 的公共递归 DNS 服务器是否有效,但当你询问时得到的答案似乎是针对北美的。

回到你最初提出的原因,如果出于某种原因你需要知道你的内部主机将要与之通信的 IP,你需要查看它们用于 DNS 服务器的内容,并使用相同的服务器来获取用于防火墙规则的 IP。没有一个“真正的”答案,所以你应该追求的是一致性。

答案2

如果你必须依赖 IP 地址,我可以理解你的评论,你应该定期更新它们。GitHub 会发布他们使用的 IP 地址https://api.github.com/meta

答案3

不要依赖 IP 地址(现在已经不是 60 年代了),只要服务器更换提供商、实施 CDN、镜像或一组负载均衡器,IP 地址就会发生变化。域名不太可能发生变化。

而且,如果他们在后端做了任何事情,他们不必通知任何人,他们只需镜像基础设施、更改提供商和更改域记录即可。一切照旧。这很简单,世界各地的系统管理员一直在这样做。

相关内容