Вопрос или проблема
Каждый день я получаю доступ к стороннему веб-сайту либо напрямую через браузер, либо запрашивая файлы через созданное мной javascript-приложение. Сегодня утром подключение к этому сайту было настолько медленным, что большинство моих запросов завершались по таймауту.
Я провел тестирование и могу получить доступ к сайту через свою WiFi-сеть, но он не работает через LAN. Моя WiFi-сеть представляет собой просто точку доступа WiFi, подключенную к моей LAN, так что обе используют одну и ту же подсеть и шлюз. У меня были такие же проблемы на нескольких компьютерах, и они, по-видимому, связаны только с этим сайтом. Все остальные сайты работают без проблем.
Я совершенно озадачен. Мы звонили в техническую поддержку сайта, и они сказали, что это, должно быть, проблема на нашей стороне, так как все их диагностики показывают, что у них все в порядке.
Есть идеи, почему определенный домен работает только на точке доступа WiFi, но не на самой LAN?
Если точка доступа Wi-Fi действует как NAT-шлюз (предполагается, что ее WAN-порт подключен к LAN-порту вышестоящего маршрутизатора), она может по-другому осуществлять DNS, или она может лучше выполнять TCP MSS Clamping, чем ваш вышестоящий NAT-шлюз.
Что касается DNS, предположим, ваш вышестоящий NAT-шлюз, выдавая DHCP-аренды для проводных Ethernet-клиентов, говорит клиентам использовать DNS-сервер A. Предположим, ваша точка доступа Wi-Fi, выдавая DHCP-аренды для Wi-Fi клиентов, говорит клиентам использовать DNS-сервер B. Теперь предположим, что DNS-сервер A имеет ошибку, из-за которой он не может обработать DNS-ответы для доменного имени одного веб-сайта. Все ваши Ethernet-клиенты не смогут найти IP-адрес, который им нужно использовать для подключения к этому сайту, и все не смогут подключиться. Но ваши Wi-Fi-клиенты будут обращаться к DNS-серверу B, у которого нет этой ошибки, и они получат нужные ответы и смогут подключиться.
Чтобы проверить, является ли DNS проблемой, убедитесь, что ваши Ethernet и Wi-Fi клиенты получают одни и те же DNS-адреса.
TCP MSS Clamping — это метод, при котором NAT-шлюз считает, что он лучше знает о вышестоящих MTU (MTU = Максимальная единица передачи; можно считать это максимальным размером IP-пакета), чем его клиенты, поэтому если он увидит, что клиент пытается согласовать TCP MSS (MSS — это максимальный размер сегмента на уровне TCP, который является аналогом IP-уровневого “MTU”), который больше, чем может уместиться в вышестоящем канале, NAT-шлюз переписывает эти поля переговоров TCP MSS в TCP SYN пакетах, чтобы обмануть конечные точки TCP, заставив их согласовать меньший MSS, который на самом деле будет работать, учитывая что NAT-шлюз знает об ограничениях MTU на других сетевых переходах.
Чтобы проверить, является ли MTU проблемой, попробуйте пинговать проблемный сайт, сначала обычным ~64-байтовым ICMP-запросом эха, а затем снова с ICMP-запросом эха, который заполняет весь 1500-байтовый кадр:
# Сначала обычные маленькие пинги, чтобы посмотреть, работают ли пинги
ping badwebsite.example.com
# Теперь дополните пинги до 1472, чтобы после добавления заголовков это был полный 1500-байтовый кадр.
ping -s 1472 badwebsite.example.com
(Думаю, мне не следует это говорить, но на всякий случай, убедитесь, что вы выполняли эти пинг-тесты с Ethernet-клиента, а не с Wi-Fi клиента.)
Если маленькие пинги работают, а большие — нет, это указывает на проблему с MTU. Пробуйте разные значения после -s
, чтобы увидеть, какое максимальное значение работает для вас. Добавьте 28 к нему, чтобы узнать, какой MTU вы можете безопасно установить на своих Ethernet-клиентах. На самом деле, лучше ручной настройки меньшего MTU на своих Ethernet-клиентах, исправьте свой вышестоящий NAT, чтобы он выполнял правильный MSS clamping или что-то в этом роде.
Я не эксперт, но у меня была та же проблема, поэтому я включил и отключил адаптер LAN, затем проверил свой IP-адрес v4, и он показал, что IP-адрес был заполнен другой сетевой IP-адрес, чем у моего роутера, поэтому я выбрал “получить IP-адрес автоматически”.
Это решило проблему.
Я установил один и тот же IP-адрес для своих сетевых карт Wi-Fi и Ethernet на своем роутере.
Установка разных адресов для Wi-Fi и Ethernet решила проблему.
Ответ или решение
Теория
Проблема, с которой вы столкнулись, когда веб-сайт доступен через Wi-Fi, но не через проводное LAN-соединение, может быть вызвана несколькими факторами. Среди наиболее распространенных причин могут быть различия в работе DNS-серверов для Wi-Fi и LAN, а также проблемы с MTU (максимальная передаваемая единица) и TCP MSS Clamping. Рассмотрим каждую из этих причин подробно.
1. DNS-серверы
DNS-серверы обеспечивают преобразование доменных имен в IP-адреса. Если Wi-Fi и LAN-соединения используют разные DNS-серверы, возможно, один из серверов работает неправильно или вообще недоступен. Например, если DNS-сервер, используемый для проводного соединения, возвращает некорректные данные, это может привести к сбою доступа к конкретному сайту. Между тем, DNS-сервер, используемый для Wi-Fi, может функционировать должным образом, что объясняет различие в доступности сайта.
2. TCP MSS Clamping и MTU
TCP MSS Clamping касается настройки размера сегмента TCP, которая могла бы стать причиной возможных проблем, если маршрутизатор или NAT (рангадресный перевод сети) неправильно обрабатывает MSS при функционировании через проводной интернет. Это может привести к проблемам фрагментации пакетов, особенно если MTU настроено неправильно на устройстве клиента или маршрутизаторе.
3. Конфигурация IP-адресов
Если ваше устройство имеет статическую IP-конфигурацию, возможно конфликт IP-адресов. Если на одну и ту же IP-адресацию настроены несколько интерфейсов (Wi-Fi и LAN), это может привести к проблемам с маршрутизацией трафика.
Пример
Допустим, ваша сеть настроена так, что Wi-Fi точка доступа действует как собственный NAT-шлюз и сама предоставляет DNS-сервер. В этом случае возникает потенциальная возможность разницы в DNS-серверах между Wi-Fi и LAN подключениями. Если в проводном соединении у вас есть проблема с настройками DNS, это может привести к тому, что проводное соединение не сможет разрешить конкретное доменное имя, тогда как Wi-Fi будет работать без проблем.
Пример с MTU может быть проиллюстрирован следующим образом: предположим, что MTU вашего маршрутизатора неправильно сконфигурирован для проводного подключения и вызывает фрагментацию пакетов. Это также может объяснить, почему сайт недоступен через LAN, так как TCP пакеты не доходят до конечной точки.
Применение
-
Диагностика DNS:
- Проверьте, какие DNS-серверы используются для Wi-Fi и LAN. Для решения проблемы убедитесь, что обоим соединениям назначены одинаковые наборы DNS, без ошибок. Это делается через сетевые настройки на устройствах.
-
MTU и TCP MSS Clamping:
- Настройте правильное значение MTU, проверив, пропускаются ли пакеты максимальной длины. Для этого выполните команду
ping
с увеличенным размером пакета через беспроводное соединение, чтобы убедиться, что фрагментация не происходит.
ping -s 1472 <домен-сайта>
- Настройте правильное значение MTU, проверив, пропускаются ли пакеты максимальной длины. Для этого выполните команду
-
Автоматический IP:
- Убедитесь, что на всех устройствах, как на проводном, так и на беспроводном соединении, установлено получение IP-адресов и DNS-серверов автоматически через DHCP вместо статических значений.
-
Проверка сетеобразующего оборудования:
- Перепроверьте настройки обоих маршрутизаторов и коммутаторов. Убедитесь, что маршрутизация не пересекается, и записи ARP таблиц не содержат противоречий.
Итак, путем исключения каждой возможной причины и глубокого анализа сети, вы сможете определить и устранить основную проблему, связанную с недоступностью веб-сайта через проводное соединение. Подходите к диагностике систематически и следите за тем, чтобы все ваши сетевые устройства были правильно настроены и обновлены.