Что определяет, будет ли полное доменное имя интерпретировано как IPv6 или IPv4?

9

Когда я вписываю полное доменное имя (FQDN) в мою строку URL, браузер подключается к некоторой таблице сопоставления (где хранится эта таблица? С поставщиком услуг?), Которая определяет, где размещен запрошенный файл.

Таким образом, это зависит от поставщика услуг (который, я предполагаю, имеет таблицу преобразования), поддерживаются ли адреса IPv6 или нет. Это правда?

Lazer
источник

Ответы:

7

Поскольку это помечено как iptables, я предполагаю, что это вопрос Linux.

В Linux, glibc должен решить, будет ли программа, для данного имени хоста, сначала искать адрес IPv6 (AAAA) или адрес IPv4 (A). Программа, использующая glibc, использует функцию getaddrinfo (). Поведение getaddrinfo () настраивается в /etc/gai.conf.

В вашей системе, скорее всего, все в /etc/gai.conf закомментировано. Раскомментируйте запись:

ярлык :: / 0 1

для меня привело к активации поиска AAAA-first, поэтому адреса IPv6 ищутся предпочтительнее. Так что это может быть то, что вы хотите.

Обновление для добавления : представляется, что правильным способом является раскомментировать весь блок «label» в gai.conf значениями от 0 до 7:

label ::1/128       0
label ::/0          1
label 2002::/16     2
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
label 2001:0::/32   7
unixtippse
источник
4

IPv4-адреса отображаются на доменное имя с помощью записи A (Address) в DNS (система доменных имен). Адреса IPv6 отображаются с использованием записей AAAA. Кажется странным? IPv4-адреса 32-битные, IPv6 128-битные. 128/32 = 4, поэтому AAAA / A = 4 тоже. Умный трюк, который разработал запись IPv6 в DNS.

DNS является иерархической, распределенной системой по всему Интернету. Ваш браузер позвонит в системную библиотеку, которая запустит цепочку поиска. Сначала он проверит свой локальный кеш, обычно хранящийся в памяти. Затем он ищет диск и просматривает файл HOSTS (/ etc / hosts в большинстве UNIXes / Linux и C: \ Windows \ System32 \ drivers \ etc \ HOSTS в Windows). Затем, если он все еще не может найти ответ, он выполняет вызов на назначенный DNS-сервер в соответствии с вашей сетевой конфигурацией.

ЭТО DNS-сервер проверяет свой кеш, который намного больше. Если у него есть совпадение, он возвращает ответ. Если он не может найти ответ, он оборачивается и просит DNS-сервер еще более высокого уровня, запущенный интернет-провайдером интернет-провайдера. Этот процесс продолжается до тех пор , пока ударил корневые сервера имен, a.root-servers.netчерез m.root-servers.net. Большинство DNS-запросов разрешаются ДОЛГО, пока они не зашли так далеко, но иногда один или два делают это там. Но когда ответ найден, он передается обратно по цепочке в ваш браузер.

Но как ваш браузер узнает, какой тип записи запрашивать? Это зависит от настроек вашей системы. Если вы установили его в свой стек IPv4 как приоритет, то ваш браузер будет запрашивать только записи A в своих DNS-запросах. Если IPv6, он сначала запросит запись AAAA, а затем вернется к записи A.

Существуют и другие типы записей. Записи MX определяют, где находится почтовый сервер для домена. Записи NS определяют серверы имен для домена. Записи SRV сообщают вам, где находится конкретная служба (например, SSH или Web).

DNS действительно буквальная телефонная книга Интернета.

Кумба
источник
2

Поиск будет обрабатываться вашим DNS (и, возможно, вашим локальным файлом hosts). Разрешается ли конкретное имя как IPv6 или IPv4-адрес, зависит от настроек вашего браузера (поддерживает ли он IPv6 и отправляет ли он запросы IPv6 AAAA, вашу операционную систему (есть ли у вас даже стек IPv6 среди прочего) и ваш Поставщик DNS (поддерживают ли они запросы AAAA (IPv6) или нет).

Проблема с браузером усложняется еще и тем, что некоторые (более старые) браузеры никогда не отправляют запросы поиска AAAA, а некоторые могут быть настроены так, чтобы не отправлять их (Firefox имеет настройку для этого), но большинство современных браузеров сначала отправляют запрос AAAA и следят за запрос.

Helvick
источник
Где я могу найти свой локальный файл hosts в Windows Vista?
Лазер
Хорошо, нашел это здесь C:\Windows\System32\drivers\etc. Но это пусто.
Лазер
% SYSTEMROOT% \ System32 \ drivers \ etc - обычно это будет C: \ Windows \ System32 \ drivers \ etc
Helvick
2
Обычно он пуст - добавьте записи, если это абсолютно необходимо, вы действительно хотите оставить разрешение имен IPv6 для DNS.
Хелвик