Шлюз по умолчанию и путаница ARP
У меня есть следующая конфигурация (я бы выложил фото, но не хватило бы повторений более чем на 2):
ПК1 (10.0.2.10/24) и ПК2 (10.0.2.137/29) подключены к концентратору, который подключен к маршрутизатору по интерфейсу FastEthernet0/1 (10.0.2.138/24).
Я провел два теста с этой конфигурацией.
Первый тест: я отправил пинг с ПК1 на ПК2, не задав ни одного шлюза по умолчанию ни для одного хоста. ПК1 считает, что ПК2 находится в той же подсети, поэтому отправляет широковещательную рассылку ARP. Это не так, поэтому он не получает никаких ответов. Все идет нормально. Результат
Второй тест: я установил маршрутизатор в качестве шлюза по умолчанию в таблицах маршрутизации ПК1 и ПК2. Затем я снова отправил пинг с ПК1 на ПК2. На этот раз, по-видимому, ПК2 отвечает на прямую трансляцию ARP ПК1, а ПК1 отправляет ПК2 запрос ping. Затем ПК2 использует свою таблицу маршрутизации для ответа на ПК1 через шлюз по умолчанию, а затем получает перенаправление ICMP для обновления своего кэша маршрутизации для ответа непосредственно на ПК1. Результат
Мое замешательство: как PC2 отвечает на ARP-трансляцию PC1, когда он находится в другой подсети? Как наличие шлюза по умолчанию позволяет это? Сначала я подумал, что используется Proxy ARP, но, похоже, это не так, поскольку адреса источника и назначения пакетов ARP - это адреса ПК1 и ПК2, а не маршрутизатора.
1 ответ
Вы должны помнить, что запрос ARP является широковещательным, и он будет направлен на каждый хост в широковещательном домене. Оба компьютера, подключенные к концентратору, находятся в одном широковещательном домене.
Когда у ПК1 есть шлюз, и вы пытаетесь отправить что-то (ping) из своей сети (на ПК2), пинг будет идти к шлюзу; ПК1 будет ARP, чтобы найти адрес шлюза (не адрес ПК2) и отправить пинг к своему настроенному шлюзу.