1

У меня есть сеть точек беспроводного доступа (AP) в моей локальной сети (LAN).

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

Скажем, у нас есть компьютер Алиса, точка доступа Wi-Fi Боб и другая точка доступа Wi-Fi / устройство Чарли.

Алиса может пинговать Боба, Боб может пинговать Чарли, но Алиса не может пинговать Чарли. ("ping" означает возможность получать ответы на ping) Я уже отключил все брандмауэры и разрешил все ответы ICMP.

С помощью Wireshark и tcpdump я пришел к выводу, что пакет запроса ARP (код операции 1) от Алисы смог достичь назначенного пункта назначения, Чарли, и Чарли отправил обратно пакет ответа ARP (код операции 2), который не достиг Алисы.

Какие могут быть технические недостатки, приводящие к такой ошибке?

Как я могу отладить эту ситуацию?

Предполагая, что у меня есть некоторый программный контроль, потому что я использую OpenWRT, как я могу решить эту проблему?

Самое смешное, что когда я сменил имя своего компьютера с Windows 8, эта проблема была устранена. Не уверен, является ли это случаем post hoc ergo propter hoc.

Обновление: AP / устройства / ПК находятся в той же подсети, связанной в режиме моста.

2 ответа2

1

Что вызывает сброс пакетов ответа ARP в беспроводной сети?

Ничего такого. Если бы мы были свидетелями правильного отбрасывания пакетов, у них не было бы никаких причин, чтобы их отбрасывали преимущественно. При наличии неисправной линии связи пакеты ARP ничем не отличаются от UDP, TCP и так далее. Но, поскольку вы не утверждаете, что линия медленная, нет никаких реальных оснований подозревать фактическое отбрасывание пакетов.

Причина, по которой пакеты не достигают намеченной цели, заключается в том, что они неправильно маршрутизируются. Однако вы указали, что пакеты, которые магически исчезают, являются пакетами ARP, которые не нуждаются в правильной маршрутизации, поскольку они самопроизвольно заполняют всю подсеть, к которой они принадлежат.

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

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

Можете ли вы обойти эту проблему? Конечно вы можете. Вам нужно будет определить шлюз подсети, который недоступен (давайте назовем его G2), разрешить входящие соединения из большей локальной сети, а затем указать шлюз всей вашей локальной сети (G1, тот, который находится непосредственно за вашим модемом, или ваш маршрутизатор ADSL, в зависимости от того, что), что маршрут к этой подсети не через сам G1, а через G2.

1

Хотя я не очень знаком с расширенной конфигурацией в OpenWRT (она есть в моем списке дел для проектов гиков), мой первый совет - убедиться, что вы не используете NAT на "Бобе". Если бы Алиса была на стороне LAN WAP, а Чарли на стороне WAN, то Алиса могла бы пинговать Чарли, но не наоборот. Это встроенный межсетевой экран, который обеспечивает NAT.

Чтобы этого не произошло, все ваши точки доступа должны работать в той или иной форме в режиме "моста" или в режиме "точки доступа". Это означает, что устройство действует как более или менее средство пересылки пакетов - оно не выполняет свою собственную маршрутизацию или проверку пакетов. Самый простой способ добиться этого на более дешевых маршрутизаторах - отключить DHCP-сервер в маршрутизаторе и затем подключить один из портов локальной сети к вашей сети (а также убедиться, что IP-адрес локальной сети маршрутизатора не будет конфликтовать с вашим реальным шлюзом). Вы бы оставили порт WAN висящим. Если маршрутизатор жалуется (большинство не делают, но некоторые делают), установите для интернет-соединения статический IP-адрес и используйте что-то вроде 223.255.255.254 с маской подсети 255.255.255.252 для адреса и 223.255.255.253 для шлюза. (Общая информация: это последняя подсеть класса C наименьшего возможного размера.)

Другой возможностью может быть несоответствие маски подсети. Каждый компьютер в той же сети должен иметь одну и ту же маску подсети (вместе с тем, конечно, в той же самой сети). Компьютер использует маску подсети, чтобы определить не только широковещательный IP-адрес, но и определить, следует ли обрабатывать принятые широковещательные пакеты сетевым стеком (т. Е. Если широковещательные пакеты для IP-адресов выходят за пределы адреса и маски подсети, настроенных на устройстве, многие устройства будут игнорировать пакет.)

Надеюсь, это поможет, по крайней мере, несколько.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .