Почему на одном компьютере в сети открывается ozon.ru, а на другом — страница ‘Welcome to nginx’, если компьютеры в одной подсети?

«Почему на одном компьютере в сети открывается ozon.ru, а на другом — страница ‘Welcome to nginx’, если компьютеры в одной подсети?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Такая ситуация указывает на проблему на уровне DNS или HTTP-маршрутизации. Вот основные причины с точки зрения DevOps:

1. Разное разрешение DNS (наиболее вероятно):

  • Кеширование DNS: На одном компьютере закеширован старый (возможно, некорректный) IP-адрес для ozon.ru.
  • Разные DNS-серверы: Компьютеры могут использовать разные DNS-резолверы (например, корпоративный DNS, 8.8.8.8, провайдерский). Один из них может возвращать неверный IP.
  • Локальный файл hosts: На проблемном компьютере есть запись, принудительно сопоставляющая ozon.ru с IP-адресом сервера, где крутится Nginx (например, 127.0.0.1 или адрес тестового стенда).

2. Проблемы с маршрутизацией HTTP/HTTPS:

  • Прокси-настройки: На одном из компьютеров в системе или браузере настроен прокси- или VPN-сервер, который перехватывает и перенаправляет трафик.
  • Перехват трафика на сетевом уровне: Возможно, в сети работает устройство (прокси, файрвол) с правилами перенаправления (SSL inspection, transparent proxy) для определенных IP-адресов или MAC-адресов.
  • Проблема с IPv6: Если ozon.ru имеет AAAA-запись (IPv6), один компьютер может успешно использовать IPv6, а другой — нет, и подключаться по IPv4, где маршрутизация отличается.

Диагностика для DevOps-инженера:

# 1. Проверить, какой IP-адрес резолвится на каждом хосте.
# На Linux/Mac:
dig ozon.ru +short
nslookup ozon.ru
# На Windows:
nslookup ozon.ru

# 2. Проверить локальный файл hosts.
# На Linux/Mac:
sudo cat /etc/hosts
# На Windows (PowerShell):
Get-Content C:WindowsSystem32driversetchosts

# 3. Проверить, куда идут пакеты (traceroute) и открыть сырой HTTP-запрос.
curl -v http://ozon.ru
# В выводе смотрим строку 'Host:' и IP-адрес, к которому произошло подключение.

# 4. Проверить настройки прокси в системе.
env | grep -i proxy  # Linux/Mac
[Environment]::GetEnvironmentVariable('HTTP_PROXY') # Windows PowerShell

Решение: Чаще всего помогает очистка DNS-кеша (sudo systemd-resolve --flush-caches или ipconfig /flushdns на Windows) и проверка файла hosts.