Сегодня у меня возникла проблема, когда развертывание на моих серверах приложений не могло быть завершено из-за проблем с подключением к github.
Я заметил, что когда я выполняю DNS-поиск github.com с использованием DNS-серверов Google, я получаю "правильные / старые" 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 были изменены. В самом деле, это кажется правильным, поскольку, когда я выполняю трассировку записей DNS githubs, снова используя DNS-сервер Google, я получаю "новые" записи:
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
Почему, когда я запрашиваю github.com с помощью DNS Google, он возвращает «старые IPS», но когда я использую трассировку DNS, он возвращает новые? Возвращает ли google dns кэшированные записи (даже через день)?
С другой стороны, изменит ли github свои IP-адреса, никого не уведомляя? В их документации не упоминаются эти «новые» IP-адреса, и, насколько я исследовал, всякий раз, когда они вносили такие изменения, они также публиковались в своем блоге.
Если вы должны полагаться на IP-адреса, и я могу посочувствовать твой комментарий, вам следует регулярно обновлять их. GitHub публикует IP-адреса, которые они используют https://api.github.com/meta
Не полагайтесь на IP-адреса (это не 60-е годы), они будут меняться каждый раз, когда сервер меняет поставщика, или реализует CDN, или зеркало, или набор балансировщиков нагрузки. Менее вероятно изменение доменных имен.
И им не нужно никого уведомлять, если они что-то делают на бэкэнде, они могут просто зеркалировать инфраструктуру, менять поставщиков и изменять записи домена. Все как обычно. Это тривиально, и системные администраторы по всему миру делают это постоянно.
Комментарий alex.forencich к вашему вопросу, вероятно, объясняет то, что вы видите.
Записи A для github.com могут отличаться в зависимости от того, откуда вы запрашиваете. Имейте в виду, что «вы» в предыдущем предложении действительно относится к тому рекурсивному DNS-серверу, с которым разговаривает преобразователь вашего сервера. DNS-сервер вашего интернет-провайдера отвечает IP-адресами в зоне доступности AWS eu-central-1, которая находится во Франкфурте, Германия, что вполне разумно, поскольку вашим интернет-провайдером является Hetzner.
Я не знаю, работают ли общедоступные рекурсивные DNS-серверы Google, но ответы, которые вы получаете, когда спрашиваете, похоже, предназначены для Северной Америки.
Возвращаясь к первой причине, которую вы задали, если по какой-то причине вам нужно знать IP-адреса, с которыми будут разговаривать ваши внутренние хосты, вам нужно будет посмотреть, что они используют для своих DNS-серверов, и использовать те же серверы, чтобы получить IP-адреса для использования в правилах вашего брандмауэра. Не существует единственного «настоящего» ответа, поэтому вы должны стремиться к последовательности.