Запросы Arp с нечетным исходным IP остаются без ответа

У меня есть сервер с проблемами сетевого подключения, которые, как я полагаю, происходят из-за проблем с обработкой протокола arp.

Допустим, топология сети выглядит следующим образом:

  • сеть 192.168.106.0, маска сети 255.255.255.0
  • маршрутизатор на 192.168.106.1
  • "проблемный сервер" на 192.168.106.2
  • другой сервер на 192.168.106.3

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

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

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

Глядя на трафик arp в случае, когда "проблемный сервер" долгое время молчал, я вижу в сети запросы arp на адрес "проблемного сервера", но адрес "сказать" на них является сетевым адресом (192.168.106.0) вместо адреса маршрутизатора (192.168.106.1) - и это, как я предполагаю, и является причиной этой проблемы: по какой-то причине маршрутизатор имеет неправильный адрес ответа в своих запросах arp.

"Другой сервер" остается доступным, но я предполагаю, что причина в том, что он часто устанавливает соединения с внешними сетями и, таким образом, предотвращает истечение срока действия записи arp на маршрутизаторе.

Есть комментарии / предложения?

Рассматриваемые серверы работают под управлением Linux (CentOS 5.x?) И работают как виртуальные машины в VMWare ESXi (5.0?) (Я проверю / заполню детали версии, как только вернусь к работе в понедельник). Маркер / модель роутера для меня неизвестна.

Ответы на вопросы, дальнейшие выводы

Извиняюсь за медлительность, чтобы вернуть это.

К сожалению, моя видимость со стороны сети (что-либо кроме самой платформы VMWare) сильно ограничена.

Основанный на пакетах запроса arp от маршрутизатора, это продукт Juniper (угадывание по MAC-адресу запрашивающей стороны).

Это небольшая сеть, поэтому рассмотрим топологию как маршрутизатор, коммутатор и один сервер VMWare, на котором размещены несколько виртуальных машин.

Что касается инициатора нечетных запросов arp, это в значительной степени должен быть сетевой шлюз: они появляются только тогда, когда я пытаюсь подключиться к "проблемной" машине из-за пределов сети, и прекращаются, когда попытка прекращается или отменяется. Незначительная странность заключается в том, что MAC-адрес в этих запросах не совпадает с тем, который виден для маршрутизатора в таблице arp сервера после установления исходящего соединения. Однако как MAC-адрес, присутствующий в этих "нечетных" запросах, так и MAC-адрес, показанный в таблице arp сервера, имеют OUI Juniper-assigner.

Тогда один, возможно, связанный вывод; похоже, что Linux не будет отвечать на запросы arp, где "Tell" адрес - это сетевой адрес, в то время как Windows (по крайней мере, Vista) это делает. Это я не смог проверить в реальной проблемной среде, но с моими собственными игрушками дома.

Кроме того, похоже, я не полностью одинок в этом вопросе; похожий опыт можно найти здесь: alpacapowered.wordpress.com

2 ответа

Сегодня произошла интересная смена ситуации.

В конце концов, все сводилось к двум вещам:

Маршрутизатор Juniper или фактически кластерная система брандмауэра каким-то образом потеряли синхронизацию конфигурации между сторонами кластера. В результате не все части кластера FW имели современную конфигурацию, и это приводило к неправильным запросам arp (да, неверные запросы arp происходили из маршрутизатора / межсетевого экрана).

Приложение управления для брандмауэра также работало неправильно, пытаясь выдвинуть какую-то другую, чем текущая, правильную, конфигурацию, по крайней мере, к части кластера брандмауэра.

У меня нет подробной информации о том, что было сделано для самого брандмауэра или для приложения управления, но конечный результат заключается в том, что теперь адрес "Tell" в запросах arp является IP-адресом маршрутизатора (.1 из исходного описания) вместо сетевого адреса (.0).

И на эти ("кто-имеет... расскажет... .1") запросы arp сервер Linux отвечает так, как должен, а входящие соединения работают просто великолепно, даже после того, как какой-либо след адреса сервера был потерян из роутера arp кеш.

Я столкнулся с точно такой же проблемой. Оказалось, что кто-то установил значение manage-ip для адреса подсети:

Cluster:name(M)-> get config | inc aggregate10.200 set interface aggregate10.200 ip x.x.x.x.225/28 ... set interface aggregate10.200 manage-ip x.x.x.224 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Чинить:

unset interface aggregate10.200 manage-ip

Это была неправильная конфигурация в нашем случае.

Другие вопросы по тегам