У меня есть 3 хоста (ПК1, ПК2 и ПК3). Я установил IP-адреса для ПК2 и ПК3 на 10.0.0.2
и ПК3 на 10.0.0.1
. Я телнет от ПК1 до 10.0.0.2. Затем я вошел в ПК3. В Wireshark я вижу, что ПК3 сначала отвечает своим MAC-адресом, а затем ПК2 отвечает, но он рассматривается как дублирующий IP-адрес и не учитывается. Почему это? Почему ПК3 не перезаписывается ПК2?
2 ответа
Ответ, ранее помеченный как правильный, на самом деле неверен (в определенной степени). Полученный пакет будет отправлен в кадре с определенным MAC-адресом назначения. MAC-адрес назначения будет основан на таблице ARP отправителей.
Ответ ARP кэшируется автоматически независимо от того, истек ли он. Поэтому ответ LAST будет кэшироваться с перезаписью первого полученного ответа (именно так и работает ARP Poisoning). Вы можете узнать больше о ARP Poisoning для более подробной информации об этом.
Результирующее соединение с вашим "telnet" будет последним устройством, которое ответило на последний запрос ARP, который был передан в широковещательный домен.
Упрощенное объяснение того, что должно происходить, приведено ниже:
- У отправителя нет записи таблицы ARP для IP:X.
- Отправитель выполняет запрос ARP для IP:X.
- Все устройства в широковещательном домене отправляются ARP Request.
- Все устройства, настроенные с IP:X, отвечают на запрос ARP.
- Отправитель получает каждый ответ ARP 1 за раз. а. Ответ ARP # 1 получен, и пара MAC/IP добавлена в таблицу ARP. б. Ответ ARP # 2 получен, и пара MAC/IP перезаписывает первый ответ. ... (повторите "b" для каждого ответа)
- Отправитель отправляет пакет с MAC-адресом назначения, который содержится в последнем принятом ответе ARP.
Однако, если отвечающее устройство видит противоречивые ответы, у него есть несколько вариантов, основанных на RFC 5227. 1 из тех, кто отвечает агенту конфигурации, что его IP неверен. Не видя захвата пакета, трудно сказать вам точно, что вы видите.
* пожалуйста, обратитесь к Гоблинлордам, ответьте более точно, объясните, что я пытался донести.
Если я не ошибаюсь, потому что PC2 медленнее реагирует. Когда вы делаете сеанс telnet, вы создаете сеанс TCP. Это начинается с трехстороннего TCP-рукопожатия. Поскольку вы отправили только один запрос на подключение telnet, ваш клиент видит, что он уже подключен к ip 10.0.0.2, поэтому он отбрасывает ответ от ПК2 как дубликат.
В основном ваш компьютер считает, что ответ от более медленного устройства не запрошен. Если вы очистите таблицу arp, а затем повторите попытку много раз, вы увидите, что то же самое происходит, когда ПК2 отвечает первым и данные с ПК3 должны быть сброшены.
Не уверен, что вы пытаетесь достичь, но я бы посоветовал дать PC2 и PC3 уникальные ips.