Использование нескольких A-записей для моего домена - действительно ли веб-браузеры пробуют больше одного?

Если я добавлю несколько A-записей для своего домена, они будут возвращены в циклическом порядке DNS-серверами.

Пример:

1.1.1.1 A example.com
1.1.1.2 A example.com
1.1.1.3 A example.com

Но как веб-браузеры реагируют, если первый хост (1.1.1.1) не работает (недоступен)? они пробуют второй хост (1.1.1.2) или они возвращают пользователю сообщение об ошибке? Есть ли разница между наиболее популярными браузерами?

Если я реализую свое собственное приложение, я могу реализовать его так, чтобы второе использовалось в случае, если первое не работает, так что это возможно. И это было бы очень полезно для создания отказоустойчивого веб-сайта.

76 голосов | спросил Jonas 20 MaramSun, 20 Mar 2011 00:58:02 +03002011-03-20T00:58:02+03:0012 2011, 00:58:02

4 ответа


69

Да, большинство браузеров за последние 5-10 лет попробуют другие записи A, если вы не ответите. Иногда это иногда называют «попыткой браузера» или «повторной попыткой клиента». Вы в значительной степени найдете информацию об этом в контексте различных эксплойтов браузера, которые эта функция позволяет запретить использование сайтов (см. DNS пересоздание и привязка DNS , анти-dns-пиннинг, анти-анти-dns-пиннинг, анти-анти-dns-пиннинг и т. д.). Вид плохой репутации, но он доказывает, что он существует.

Практически каждый браузер действительно получает полный список записей A и действительно проверяет других, если тот, который он использует, терпит неудачу. Вы можете ожидать, что у каждого клиента будет 30-секундное ожидание, когда они сначала попытаются получить доступ к сайту, когда сервер не работает, пока он не подключится к рабочему адресу. Затем браузер будет кэшировать, какой адрес работает, и продолжать использовать этот для будущих запросов, если он также не сработает, тогда ему придется снова искать список. Таким образом, 30 секунд ждут по первому запросу, в дальнейшем после этого.

Но это не то, что вы обязательно хотите использовать, у него будет много предостережений о совместимости браузера, совместимости с os, совместимости с прокси-серверами, заголовки кеш-контроля будут иметь странные последствия для того, помнит ли он, какие IP-адреса недоступны или начнется с 30-секундным ожиданием по каждому запросу, люди, пишущие пользовательские клиенты для вашего сайта, будут в конечном итоге использовать gethostbyname вместо getaddrinfo , а не быть в состоянии справиться с отказоустойчивостью, всевозможными потенциальными проблемами.

Вы также не можете полагаться на несколько записей A, чтобы разрешать «ведущие» и «ведомые» серверы, потому что вы никогда не узнаете, какой адрес браузер будет выбирать из списка. Все они должны быть такими же способными обрабатывать посетителей, если они запускаются, потому что любой может получить трафик, если он работает. Браузер может подумать, что ваш третий сервер из списка наиболее привлекателен, может быть, он выглядит самым близким, и он выберет его, хотя все трое все еще остаются.

Но если вы можете жить с ограничениями и иметь достаточно простую HTTP-систему, с которой вы можете предсказать взаимодействие с браузером, она будет работать.

О, вам также придется иметь дело с большим количеством людей, говорящих вам, что этого не существует (поскольку это было правдой 15 лет назад). Но вы можете попробовать подключиться к доменному имени с несколькими записями A, некоторые с мертвыми IP-адресами и некоторыми хорошими, если вам нужно это доказать (да, даже старый добрый telnet теперь использует getaddrinfo и обрабатывает несколько записей A изящно в эти дни) - он распечатает хороший список IP-адресов, которые он пытается, пока он, наконец, не удастся.

ответил Joff 21 AMpThu, 21 Apr 2011 06:59:53 +040059Thursday 2011, 06:59:53
3

Это базовый метод распределения балансировки DNS: DNS Round Robin. Это не имеет ничего общего с браузером, это зависит от реализации преобразователя и локального /удаленного кеша DNS-адреса. Изменения состоят в том, что если сервер выходит из строя, из-за кэширования на уровне DNS ваш сайт может быть недоступен.

См. здесь базовое объяснение Round Robin DNS в WikiPedia.

ответил keatch 20 MaramSun, 20 Mar 2011 02:24:46 +03002011-03-20T02:24:46+03:0002 2011, 02:24:46
2

Предупредите, что Windows Vista реализует тупые части RFC3484 (т.е. backporting от IPV6 до IPV4) и предпочтет IP-адрес, который разделяет большинство битов префикса с IP-адресом пользователя, а не выбирает их случайным образом. Поскольку большинство пользователей имеют IP-адреса, которые начинаются с 192.168, это означает, что в зависимости от того, какой из ваших IP-адресов приходится делиться большинством битов префикса, они получат большую часть трафика Vista. Microsoft исправила этот конкретный бит идиотизма в Windows 7 и более поздних версиях, поэтому это не такая большая проблема, как раньше.

ответил Mike Scott 12 MarpmSat, 12 Mar 2016 14:39:33 +03002016-03-12T14:39:33+03:0002 2016, 14:39:33
0

ОС определяет, какой IP-адрес использовать, а не браузер. Окна будут циклически возвращать возвращенный список (в списке, переданном из DNS), хотя и будут продолжать использовать тот же адрес, пока DNS не будет сброшен или не будет отключен. * ix-реализации частично зависят от реализованной реализации пакета tcp, но обычно следуют также методу round robin.

ответил iivel 20 MaramSun, 20 Mar 2011 04:37:50 +03002011-03-20T04:37:50+03:0004 2011, 04:37:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132