Руководство по IP-геолокации и DNS-запросам: полный путь диагностики от домена до расположения сервера
Принципы IP-геолокации
IP-локализация — это не GPS — она основана на базах данных распределения IP-адресов, точность зависит от качества базы данных.
| Уровень точности | Диапазон | Источник данных |
|---|---|---|
| Уровень страны | Страна | Записи распределения WHOIS |
| Уровень города | Город/регион | Отчёты ISP + магистральная маршрутизация |
| Уровень района | 10-50 км | Коммерческие базы данных (MaxMind) |
| Уровень улицы | 1-5 км | Привязка по WiFi/сотовым сетям |
IP-локализация не может точно определить конкретный адрес, только приблизительную область.
Использование ToolsKu для запроса IP-информации
DNS-запрос
- Откройте Инструмент DNS-запроса
- Введите домен (напр.,
example.com) - Выберите тип записи (A/AAAA/CNAME/MX/TXT/NS)
- Нажмите запрос, просмотрите результаты
Запрос Whois
- Откройте Инструмент запроса Whois
- Введите домен
- Просмотрите регистрационную информацию (регистратор, дата регистрации, дата истечения, регистрант)
Типы DNS-записей подробно
| Тип | Название | Назначение | Пример |
|---|---|---|---|
| A | Адресная запись | Домен → IPv4 | example.com → 93.184.216.34 |
| AAAA | IPv6-адрес | Домен → IPv6 | example.com → 2606:2800:220:1:... |
| CNAME | Запись псевдонима | Домен → другой домен | www.example.com → example.com |
| MX | Обмен почтой | Почтовый сервер | example.com → mail.example.com (приоритет 10) |
| TXT | Текстовая запись | SPF/DKIM/верификация | "v=spf1 include:_spf.google.com" |
| NS | Сервер имён | Сервер имён домена | example.com → ns1.example.com |
| SOA | Начало полномочий | Информация управления зоной | Основной NS + email администратора + серийный номер |
| SRV | Сервисная запись | Обнаружение сервисов | _http._tcp.example.com → target:port |
| CAA | Авторизация сертификатов | Ограничение выдачи сертификатов | 0 issue "letsencrypt.org" |
Типичные сценарии DNS-запросов
Узнать IP сайта
# Командная строка
dig example.com A
nslookup example.com
# Результат
example.com. 3600 IN A 93.184.216.34
Узнать почтовый сервер
dig example.com MX
# Результат
example.com. 3600 IN MX 10 mail.example.com.
example.com. 3600 IN MX 20 mail2.example.com.
Узнать SPF-запись (антиспам)
dig example.com TXT
# Результат
example.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"
Процесс разрешения DNS
Пользователь вводит example.com
↓
1. DNS-кэш браузера → Найдено? Вернуть
↓
2. DNS-кэш ОС → Найдено? Вернуть
↓
3. DNS-кэш маршрутизатора → Найдено? Вернуть
↓
4. Рекурсивный резолвер ISP → Найдено? Вернуть
↓
5. Корневой сервер (.) → Возвращает NS .com
↓
6. TLD-сервер .com → Возвращает NS example.com
↓
7. Авторитетный сервер example.com → Возвращает A-запись
↓
Результат: 93.184.216.34
Время кэширования DNS (TTL)
dig example.com
# ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
# ↑ TTL (секунды) = 1 час
| Значение TTL | Применимый сценарий |
|---|---|
| 300 (5 минут) | Частые изменения (CDN, blue-green развёртывание) |
| 3600 (1 час) | Обычные веб-сайты |
| 86400 (1 день) | Стабильные сервисы (почта, NS) |
Интерпретация информации Whois
Ключевые поля результата запроса
Domain Name: EXAMPLE.COM
Registrar: Google Domains LLC
Registrar URL: https://domains.google
Creation Date: 1995-08-14
Expiration Date: 2028-08-13
Name Server: NS1.GOOGLE.COM
Name Server: NS2.GOOGLE.COM
Registrant Organization: Example Inc.
DNSSEC: unsigned
| Поле | Значение | Назначение |
|---|---|---|
| Registrar | Регистратор | Точка управления доменом |
| Creation Date | Дата регистрации | Определить возраст домена |
| Expiration Date | Дата истечения | Предотвратить истечение домена |
| Name Server | DNS-сервер | Точка разрешения домена |
| Registrant | Регистрант | Информация о принадлежности (может быть скрыта) |
| DNSSEC | Расширение безопасности DNS | Верификация DNS-ответов |
Защита конфиденциальности
# Без защиты конфиденциальности
Registrant Name: John Doe
Registrant Email: john@example.com
# С защитой конфиденциальности
Registrant Name: REDACTED FOR PRIVACY
Registrant Email: Please contact registrar
Диагностика сети на практике
Сценарий 1: Сайт не открывается
1. DNS-запрос → Можно ли разрешить домен?
❌ Невозможно разрешить → Ошибка конфигурации DNS или домен истёк
✅ Можно разрешить → Продолжить
2. Ping IP → Доступен ли сервер?
❌ Тайм-аут → Сервер не работает или файрвол
✅ Доступен → Продолжить
3. curl -I → Код ответа HTTP?
301/302 → Проблема перенаправления
403 → Проблема прав доступа
500 → Ошибка сервера
200 → Возможная проблема фронтенда
Сценарий 2: Ошибка отправки почты
1. Запрос MX-записи → Правильно ли настроен почтовый сервер?
2. Запрос SPF-записи → Находится ли отправляющий сервер в белом списке SPF?
3. Запрос DKIM-записи → Правильна ли подпись?
4. Запрос DMARC-записи → Правильна ли почтовая политика?
# Единый запрос почтовых записей
dig example.com MX
dig example.com TXT # SPF + DKIM + DMARC находятся в TXT
Сценарий 3: Проверка конфигурации CDN
1. Запрос CNAME → Указывает ли домен на CDN?
www.example.com → cdn.example.com.cdn77.org
2. Запрос A-записи → IP edge-узла CDN
3. DNS-запрос из нескольких мест → Проверка ближайшего разрешения CDN
Использование JavaScript для DNS-запросов
На стороне браузера (DoH)
// DNS over HTTPS (Cloudflare)
async function dnsLookup(domain, type = 'A') {
const url = `https://cloudflare-dns.com/dns-query?name=${domain}&type=${type}`;
const response = await fetch(url, {
headers: { 'Accept': 'application/dns-json' },
});
const data = await response.json();
return data.Answer;
}
// Использование
const records = await dnsLookup('example.com', 'A');
// [{ name: "example.com", type: 1, TTL: 3600, data: "93.184.216.34" }]
На стороне Node.js
import { resolve } from 'node:dns/promises';
// Запрос A-записи
const addresses = await resolve('example.com', 'A');
// ["93.184.216.34"]
// Запрос MX-записи
const mxRecords = await resolve('example.com', 'MX');
// [{ exchange: "mail.example.com", priority: 10 }]
// Запрос всех записей
const anyRecords = await resolve('example.com', 'ANY');
Частые вопросы
Сколько времени занимает вступление в силу изменения DNS?
Зависит от TTL. Если старый TTL был 3600 секунд, в худшем случае потребуется 1 час. Перед изменением DNS сначала снизьте TTL до 300 секунд, дождитесь истечения старого TTL и затем вносите изменения.
Почему результаты DNS отличаются в разных местах?
CDN и Anycast возвращают разные IP в зависимости от местоположения пользователя. Это нормальное поведение, а не проблема DNS.
Для чего нужен DNSSEC?
DNSSEC проверяет подлинность DNS-ответов с помощью цифровых подписей, предотвращая атаки перехвата DNS. Если проверка DNSSEC не проходит, браузер отклонит подключение.
Итоги
IP-локализация и DNS-запросы — фундаментальные навыки диагностики сети. Освоив типы DNS-записей, процесс разрешения и интерпретацию информации Whois, вы сможете быстро определять проблемы веб-сайтов. ToolsKu предоставляет DNS-запрос и Запрос Whois как онлайн-инструменты — без установки инструментов командной строки, диагностика сети прямо в браузере.