TLDR: Почему инъекция пакета уровня 2 запроса PING не будет работать на компьютере, если пакет является идентично структурированным пакетом из успешного запроса PING инъекции пакета с компьютера "pinging"?(по сути, почему подделанный запрос проверки связи не будет выполнен?)
Настройка теста / выпуск:
У меня есть два компьютера, A (192.168.0.36) и B (192.168.0.36), подключенный напрямую через Ethernet.
Я вручную создаю и отправляю запрос PING от A до ping B (т. Е. Как если бы он запускал «ping 192.168.0.37» из терминала на A).Это работает, и я вижу, как B получает и отвечает на запрос ping с помощью Wireshark на компьютере B.
Затем я вручную создаю и вводим идентичный PING-запрос (из теста выше) на B на пинг B (т. Е. Как если бы он запускал «ping 192.168.037» на A, за исключением того, что вводился напрямую в интерфейс Ethernet B из программного обеспечения, запускаемого локально на B).Инъекция работает, и Wireshark показывает пакет, идентичный исходному тесту от A до B, ожидайте, что он не получен без ответа.
Мой вопрос, почему?
Я предполагаю, что мне не хватает чего-то фундаментального в безопасности сетевого интерфейса или настройках безопасности ОС или что-то в этом роде.
Я использую Ubuntu 16.04.Я внедряю пакеты с созданными вручную заголовками уровня 2.Я устанавливаю cap_net_raw, cap_net_admin + eip в моем исполняемом файле.Следующий код / руководство с этого сайта: http://www.pdbuchan.com/rawsock/rawsock.html
В основном изображении Wireshark, записи первого пинга показывают успешную транзакцию из моих собственных внедренных пакетов на компьютер A. Последняя запись - это поддельный пакет, введенный мной напрямую.на компьютере B. Пакеты идентичны.Второй Wireshark показывает пакеты рядом. Wireshark Главный вид Пакеты бок о бок