我今天遇到了一个问题,由于与 github 的连接问题,我在应用程序服务器上的部署无法完成。
我注意到,当我使用谷歌 DNS 服务器执行 github.com 的 DNS 查找时,我得到了“正确/旧”的 IP 地址,这些地址也是由 guthub HERE官方记录的。
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.
当我联系我的提供商询问他们为什么提供这些结果时,他们说 githubs 的记录已经改变。确实这似乎是正确的,因为当我再次使用 google dns 服务器执行 githubs 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 跟踪时,它会返回新的?谷歌 dns 是否返回缓存记录(甚至在一天之后)?
另一方面,github会在不通知任何人的情况下更改他们的IP地址吗?他们的文档没有提到那些“新”的IP地址,据我研究,每当他们做出这样的改变时,他们也会在他们的博客上发布。
如果您必须依赖 IP 地址,我可以同情您的评论,您应该定期刷新它们。GitHub 在https://api.github.com/meta上发布他们使用的 IP 地址
不要依赖 IP 地址(不是 60 年代),只要服务器更改提供者、实施 CDN、镜像或一组负载平衡器,它们就会发生变化。域名更改的可能性较小。
如果他们在后端做任何事情,他们不必通知任何人,他们可以镜像基础设施、更改提供者和更改域记录。照常营业。这是微不足道的,世界各地的系统管理员一直在这样做。
alex.forencich 对您的问题的评论可能解释了您所看到的。
github.com 的 A 记录可能会有所不同,具体取决于您从哪里询问。请记住,上一句中的“您”实际上是指您的服务器的解析器正在与之通信的任何递归 DNS 服务器。您的 ISP 的 DNS 服务器使用位于德国法兰克福的 AWS 的 eu-central-1 可用区中的 IP 进行响应 - 完全合理,因为您的 ISP 是 Hetzner。
我不知道 Google 的公共递归 DNS 服务器是否有效,但是当您询问时得到的答案似乎是针对北美的。
回到您最初询问的原因,如果出于某种原因您需要知道您的内部主机将要与之交谈的 IP,您需要查看它们用于 DNS 服务器的内容,并使用相同的服务器来获取 IP 以用于您的防火墙规则。没有一个“真正的”答案,所以你应该瞄准的是一致性。