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

Почему я не получаю ответ ARP на этот запрос?

С помощью pcap_sendpacket в C я вручную отправляю следующий пакет на wlan0 (Я пропустил некоторые поля, но думаю, что они правильные):

(Ethernet layer)
eth src:  <wlan0 MAC address>
eth dest: <wireless router MAC address>
(ARP request layer)
opcode: 1 (Request)
sender_hw: <wlan0 MAC address>
sender_proto: 192.168.1.3 (IP of wlan0)
target_hw: 0 (per usual)
target_proto: 173.194.46.72 (Google.com)

Использование Wireshark для прослушивания wlan0, Я ожидаю увидеть ответ ARP с MAC-адресом сервера Google. Однако я не вижу любой Ответы ARP, содержащие IP-адрес Google.

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

Кто-нибудь знает, в чем может быть проблема? Одна вещь, которую я как бы замечаю, - это то, что у меня нет IP-адреса моего маршрутизатора (192.168.1.1) в этом пакете; не совсем уверен, нужно мне это или нет.

Вы _НЕ_ получение ARP-ответа, потому что в пределах вашего широковещательный домен [1] (также известный как ваш локальный сегмент [W] LAN) есть _НЕ_ хост, IP-адрес которого совпадает с тем, для которого вы запрашиваете ARP (173.194.46.72).

Чтобы быть более подробным, позвольте мне добавить, что:

  • ARP - это протокол уровня 2 [2] и как таковой, как уже упоминалось Zoredache: "... ARP не проходит через маршрутизатор ...". ARP-запрос обычно отправляется через" широковещательный "Ethernet-фрейм. Поэтому он не может пересекать локальный ... широковещательный домен;

  • даже если вы наверняка можете запросить ARP для любого IP-адреса, который вам нравится (включая Google 173.194.46.72), вы _НЕ_ получит любой ARP-ответ (кроме случаев, когда "... Google находится в вашей локальной сети ...", как указано в М. Хэмптон комментарий выше), потому что в таком случае:

    • Каждый хост в вашей локальной сети будет физически получать и обрабатывать широковещательный фрейм, сгенерированный вашим ARP-запросом. Следовательно ...
    • ... каждый хост обнаружит, что он содержит ARP-запрос для 173.194.46.72. Следовательно ...
    • ... поскольку каждый хост в вашей локальной сети настроен на разные IP-адрес (если, опять же, ваш "гугл");
    • ни один хост не отправит ARP-ответ!

К сожалению, мне не ясно, какую именно проблему вы пытаетесь решить. В любом случае, вам может быть полезно вкратце изучить:

  • "бесплатный ARP"[3], который следует обратной схеме по отношению к общему ARP-Request => Arp-Reply, который вы тестируете;

  • "Подмена / отравление ARP"[4], относительно"отказ в обслуживании"/"человек посередине"/"захват сеанса"атаки, которые вы можете перенести;

  • "ARPing"[5], как очень простой способ отправить ARP-запрос и проверить ARP-ответ. Это очень полезно, среди прочего:

    • для проверки сетевого соединения (для хостов, подключенных к локальной сети), даже если на удаленном хосте настроен IP-брандмауэр (другими словами: вы можете ARP-ping локально подключенного хоста Windows, даже если брандмауэр Windows активен);

    • чтобы получить MAC-адреса хостов-нарушителей, когда такие хосты настроены с одним и тем же IP-адресом (вы отправите ОДИН ARP-запрос и вернемся НЕСКОЛЬКО ARP-ответ);

  • "Ettercap"[6],"... комплексный набор для атак человека посередине. Он включает в себя обнюхивание живых соединений, фильтрацию контента на лету и множество других интересных трюков. Он поддерживает активное и пассивное рассечение многих протоколов и включает множество функций для анализа сети и хоста ..."


[1] http://en.wikipedia.org/wiki/Broadcast_domain

[2] http://en.wikipedia.org/wiki/Address_Resolution_Protocol

[3] http://en.wikipedia.org/wiki/Address_Resolution_Protocol#ARP_announcements

[4] http://en.wikipedia.org/wiki/ARP_spoofing

[5] http://en.wikipedia.org/wiki/Arping

[5] http://ettercap.github.io/ettercap/

Google отсутствует в вашей локальной сети, поэтому вы не можете получить ответ.
Вы должны использовать DNS, чтобы получить ip от адреса, и вы можете его пропинговать.