Назад | Перейти на главную страницу

Очень странная проблема с домашним маршрутизатором

Уже давно у меня дома очень странная проблема с Wi-Fi сетью. у меня есть ADSL-модем BT Voyager 2100 iMac, устаревший PowerBook и компьютер, который подключается к нему по беспроводной сети. Проблема в том, что я никогда не могу получить доступ к небольшому количеству определенных веб-сайтов, потому что они всегда выходят из строя.

Нет ничего очевидного, что каким-либо образом связывает эти веб-сайты. Вот несколько примеров, с которыми я столкнулся: www.adobe.com, www.microsoft.com, www.portsmouthguildhall.co.uk (местное заведение) и subtraction.com (блог). Я могу без проблем пинговать некоторые сайты; таймаутов нет. Фактически, раньше у меня был доступ к subtraction.com, но я все еще могу получить его RSS-канал. Я просто не могу больше просматривать сайт в браузере. Это очень изолированная проблема - в большинстве случаев, когда я пользуюсь Интернетом, все работает нормально.

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

Как я могу даже определить причину проблемы? Я не понимаю, с чего начать! Могу ли я использовать какие-либо сетевые команды UNIX (у меня Mac OS X)?

Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: Следуя предложению Альнитака, я попробовал трассировку и пинг с помощью adobe.com. Как видите, трассировка никогда не достигает цели:

$ traceroute adobe.com
traceroute to adobe.com (192.150.18.117), 64 hops max, 40 byte packets
 1  voyager.home (192.168.1.1)  1.975 ms  1.505 ms  1.574 ms
 2  lo0-plusnet.ptn-ag2.plus.net (195.166.128.53)  28.476 ms  47.139 ms  28.036 ms
 3  ge0-0-0-204.ptn-gw02.plus.net (84.92.3.93)  28.520 ms  37.297 ms  33.186 ms
 4  te2-2.pte-gw2.plus.net (212.159.1.106)  35.670 ms  36.262 ms  34.995 ms
 5  80.239.193.141 (80.239.193.141)  33.932 ms  28.600 ms  28.764 ms
 6  ldn-bb1-link.telia.net (80.91.248.90)  29.649 ms  28.149 ms  30.857 ms
 7  ldn-b5-link.telia.net (80.91.249.178)  27.991 ms  28.014 ms  28.490 ms
 8  verio-129583-ldn-b5.telia.net (213.248.100.50)  28.468 ms  29.286 ms  31.702 ms
 9  ae-1.r23.londen03.uk.bb.gin.ntt.net (129.250.5.237)  30.871 ms  29.295 ms ae-1.r22.londen03.uk.bb.gin.ntt.net (129.250.5.233)  28.614 ms
10  ae-0.r22.londen03.uk.bb.gin.ntt.net (129.250.4.85)  29.732 ms as-0.r20.nycmny01.us.bb.gin.ntt.net (129.250.3.254)  108.909 ms ae-0.r22.londen03.uk.bb.gin.ntt.net (129.250.4.85)  28.505 ms
11  ae-0.r21.nycmny01.us.bb.gin.ntt.net (129.250.2.26)  109.164 ms as-0.r20.nycmny01.us.bb.gin.ntt.net (129.250.3.254)  104.860 ms ae-0.r21.nycmny01.us.bb.gin.ntt.net (129.250.2.26)  111.253 ms
12  as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9)  104.777 ms ae-0.r21.nycmny01.us.bb.gin.ntt.net (129.250.2.26)  109.973 ms as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9)  108.774 ms
13  as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9)  103.691 ms ae-3.r21.asbnva01.us.bb.gin.ntt.net (129.250.2.128)  104.958 ms as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9)  104.455 ms
14  as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167)  197.595 ms ae-3.r21.asbnva01.us.bb.gin.ntt.net (129.250.2.128)  105.027 ms  106.565 ms
15  * as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167)  179.946 ms *
16  * te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86)  176.374 ms *
17  * * te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86)  189.724 ms
18  * * *
19  * * *
20  * * *
^C

—Теперь попробуйте пинг с 14-го шага и далее. Как видите, последний пинг имеет потерю пакетов 20%:

$ ping -s 1492 as-3.r20.snjsca04.us.bb.gin.ntt.net
PING as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167): 1492 data bytes
1500 bytes from 129.250.2.167: icmp_seq=0 ttl=55 time=214.555 ms
1500 bytes from 129.250.2.167: icmp_seq=1 ttl=55 time=215.339 ms
1500 bytes from 129.250.2.167: icmp_seq=2 ttl=55 time=221.211 ms
1500 bytes from 129.250.2.167: icmp_seq=3 ttl=55 time=224.296 ms
^C
--- as-3.r20.snjsca04.us.bb.gin.ntt.net ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 214.555/218.850/224.296/4.062 ms

$ ping -s 1492 as-3.r20.snjsca04.us.bb.gin.ntt.net
PING as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167): 1492 data bytes
1500 bytes from 129.250.2.167: icmp_seq=0 ttl=55 time=299.852 ms
1500 bytes from 129.250.2.167: icmp_seq=1 ttl=55 time=326.598 ms
1500 bytes from 129.250.2.167: icmp_seq=2 ttl=55 time=243.278 ms
1500 bytes from 129.250.2.167: icmp_seq=3 ttl=55 time=214.610 ms
1500 bytes from 129.250.2.167: icmp_seq=4 ttl=55 time=232.900 ms
^C
--- as-3.r20.snjsca04.us.bb.gin.ntt.net ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 214.610/263.448/326.598/42.517 ms

$ ping -s 1492 te-5-3.r02.snjsca04.us.ce.gin.ntt.net
PING te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86): 1492 data bytes
1500 bytes from 128.241.219.86: icmp_seq=0 ttl=245 time=349.851 ms
1500 bytes from 128.241.219.86: icmp_seq=1 ttl=245 time=270.748 ms
1500 bytes from 128.241.219.86: icmp_seq=2 ttl=245 time=334.406 ms
1500 bytes from 128.241.219.86: icmp_seq=3 ttl=245 time=220.046 ms
^C
--- te-5-3.r02.snjsca04.us.ce.gin.ntt.net ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 220.046/293.763/349.851/51.869 ms

$ ping -s 1492 te-5-3.r02.snjsca04.us.ce.gin.ntt.net
PING te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86): 1492 data bytes
1500 bytes from 128.241.219.86: icmp_seq=0 ttl=245 time=472.908 ms
1500 bytes from 128.241.219.86: icmp_seq=1 ttl=245 time=228.290 ms
1500 bytes from 128.241.219.86: icmp_seq=2 ttl=245 time=231.048 ms
1500 bytes from 128.241.219.86: icmp_seq=3 ttl=245 time=229.906 ms
^C
--- te-5-3.r02.snjsca04.us.ce.gin.ntt.net ping statistics ---
5 packets transmitted, 4 packets received, 20% packet loss
round-trip min/avg/max/stddev = 228.290/290.538/472.908/105.296 ms

Это похоже на проблему с MTU.

Скорее всего, между вами и этими сайтами есть что-то, что не поддерживает типичный 1500-байтовый MTU, и, кроме того, возможно, брандмауэр блокирует пакеты ICMP, которые используются для "Обнаружения MTU пути", поэтому ваша сторона не может сказать, что нормальный MTU использовать нельзя.

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

РЕДАКТИРОВАТЬ - ваш tcpdump вывод показывает, что ваша сторона все еще пытается инициировать «трехстороннее рукопожатие» TCP, потому что SYN бит отправляется в пакетах с вашего конца. Однако пакеты, возвращаемые от Adobe, кажутся усеченными или искаженными. Это довольно странно, потому что в пакетах не должно быть никакой полезной нагрузки, только ответ SYN на дальнем конце. Мне нужно было бы увидеть полный дамп (включая параметр -X) только этих первых 4 или около того пакетов, чтобы узнать больше.

EDIT2 - на основе ваших подробных tcpdumps я считаю, что ваш маршрутизатор портит ответ TCP с некоторых сайтов. Лучший способ проверить это - взять маршрутизатор другой марки.

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

Я определенно согласен с мнением, что основные симптомы этой проблемы звучат так, как будто они связаны с проблемой PATH MTU. Есть и другие возможности, но это наиболее подходящее место для начала.

Учитывая известность упомянутых вами сайтов и, предположительно, продолжительный период времени, в течение которого это происходило, кажется маловероятным, что это проблема в сети интернет-провайдера ... хотя с учетом результата трассировки, показанного в вопросе , глубина пути и общая задержка не очень хорошо подходят вашему интернет-провайдеру. Вообще говоря, любой приличный интернет-провайдер должен доставить вас к любому крупному / известному веб-ресурсу (в США) примерно за 120 мсек ... но я отвлекся.

С помощью трассировка и пинг диагностика проблемы, как упоминали другие, очень полезна, но это далеко не однозначное инструментальное решение, учитывая возможность / вероятность блокировки / фильтрации ICMP в различных местах. И из-за этого, если не в руках опытного аналитика, довольно сложно определить разницу между конкретными проблемами и межсетевыми экранами, которые вмешиваются в ICMP.

Лучший способ исключить проблему MTU - начать с уменьшения MTU интерфейса Ethernet на одном из компьютеров, на котором возникла проблема. См. Процедуру, расположенную здесь для систем MAC поскольку вы упомянули, что у вас есть компьютер MAC.

Если вы начнете снижать MTU интерфейса, поскольку процесс описывается шагами, скажем, по 100 байтов за раз и проверяя функциональность, начиная с 1400 до 500 байтов ... если проблема внезапно исчезает на одном из шагов, вы определенно есть проблема с MTU пути. Если снижение как минимум до 500 не решает проблему, то это не проблема MTU пути, и вы можете перейти к исследованию других возможностей (после того, как вы снова переключите свой MTU туда, где он был ... который, вероятно, составлял 1500 байтов).

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

Читая ваш вопрос еще раз, вы говорите, что можете успешно пропинговать серверы, поэтому вы можете не увидеть ничего ненормального в трассировке ...

Я решил проблему сейчас, и в конце концов исправить это оказалось очень просто. Я позвонил в службу поддержки своему интернет-провайдеру (PlusNet), и они прислали мне ссылку на сообщение на форуме объясняя, что эта проблема - ошибка в прошивке моего роутера. Исправление состояло в том, чтобы просто установить MTU для подключения к Интернету маршрутизатора равным 1500 (по умолчанию 1400), чтобы он соответствовал MTU на стороне LAN маршрутизатора.

Спасибо всем, кто предложил помощь и совет. Я собираюсь принять ответ Альнитака просто потому, что он / она оставались со мной в этом вопросе и возвращались с новыми советами и вещами, которые можно было бы попробовать.

Вы не упомянули, используете ли вы прокси-сервер. Было бы интересно посмотреть, потенциально ли ваш провайдер прозрачно проксирует вас - практика, которую я считаю очень злой, но я думаю, что она довольно распространена. Может ты мог бы попробовать http://tracetcp.sourceforge.net/usage_proxy.html и выполните трассировку tcp для хостов, которые не работают, это может быть интересно.

Между тем, использование прокси-сервера должно позволить вам получить доступ к сайтам, так что у вас, по крайней мере, есть обходной путь.

Вы пытались связаться с вашим интернет-провайдером по этому поводу?

Для меня результаты трассировки и пинга совершенно нормальны. Отсутствие ответа в конце является нормальным явлением, это последний HOP, который отправляет ответы ICMP о достижении максимального количества прыжков. tracepath - это утилита, которую можно использовать для диагностики проблем с mtu, которая может вам помочь.

Я согласен с тем, что это звучит как сбой в обнаружении MTU пути.

Решением этой проблемы для меня (в Linux) было включение расширенной поддержки маршрутизатора в ядре и поддержки цели TCPMSS в разделе netfilter / core netfilter конфигурации ядра. А затем указать iptables, чтобы уменьшить максимальный размер сегмента:

iptables -t nat -A PREROUTING -p tcp --tcp-flags SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu

Альтернативой может быть выбор очень маленького mtu (и, возможно, работа оттуда), и хотя это может вызвать свои собственные проблемы, он должен сделать эти сайты доступными.

Теперь я отправил аналогичный пакет запроса TCP-соединения на www.adobe.com со своего локального компьютера (единственное отличие состоит в исходном IP-адресе) и сравнил полученный ответ с пакетом из вашего последнего tcpdump.

Я обнаружил 3 отличия в заголовках IP / TCP:

  • поле "Differentiated Services" в IP-адресе установлено на 0x80 в вашем случае и 0x00 в моем случае - я почти уверен, что это вызвано PlusNet приоритезация трафика.
  • 4 байта по смещению 0x20 равны "0000 5012"в вашем случае и"5012 0000"в моем случае - это поля смещения данных, флагов и размера окна в заголовке TCP. Похоже, что-то меняет местами эти 2-байтовые слова в вашем случае. И это определенно то, что приводит к недопустимому пакету TCP
  • в запросе ответа на подключение есть опция TCP MSS (со значением 1460), добавленная в вашем случае, но в моем случае нет опций TCP

Я предполагаю, что ваш маршрутизатор пытается быть умным, добавляя опцию MSS TCP, но в некоторых случаях портит заголовок TCP. Есть ли у вашего роутера какие-либо настройки «MSS фиксирования» - если да, я бы попытался отключить эти настройки. В противном случае я бы посоветовал обратиться в службу поддержки PlusNet (показать им вывод tcpdump).

У меня была аналогичная проблема с блокировкой маршрутизатора при доступе к определенным потоковым аудио / видео ресурсам. Обновление сетевых настроек WMP решил эту конкретную проблему; не уверен, что это может быть актуально в вашем случае.

Собираюсь рискнуть и сказать, что это проблема с маской подсети, либо с вашей локальной LAN (должно быть 255.255.255.0), либо со стороной WAN.

Я предложил это, потому что, если маска подсети была неправильно установлена ​​на что-то вроде 255.254.255.0, вы могли бы получить странные результаты - для больших сайтов (с несколькими записями A), казалось бы, случайная доступность.