Как подобрать IP-пакеты и внедрить их на разные виртуальные машины и интерфейс - PullRequest
0 голосов
/ 27 мая 2018

Я пытался решить эти 2 проблемы, но безуспешно.

  1. Интересно, возможно ли удалить определенные пакеты из интерфейса с Gopacket или это только для прослушивания по проводам?Например, когда я отправляю пакет UDP на неправильный порт, а затем с помощью Gopacket исправляю его, он отправляет 2 пакета, 1 на неправильный порт и 1 на правильный.Есть ли способ отбросить / отбросить неправильный пакет с помощью Gopacket?

  2. Что я пытаюсь сделать, это подобрать все пакеты, отправленные клиентом по IP, а затем инкапсулироватькаждый пакет в качестве полезной нагрузки в другом протоколе X и отправить на удаленный хост, который будет получать по протоколу X, получить полезную нагрузку и отправить его по своему интерфейсу, чтобы снова достичь сервера через IP.(IP (Клиент) -> Протокол X (Sniffer 1) -> Протокол X (Sniffer 2) -> IP (Сервер))

Я проверил, что пакет, который Sniffer 1 выбираетиз интерфейса клиента то же самое, что и в Sniffer 2, но проблема в том, что Sniffer 2 внедряет его в интерфейс сервера.Я не вижу этот пакет с tcpdump или любым другим инструментом.Пакет вводится с помощью этой команды:

if handle, err := pcap.OpenLive("enp0s8", 1600, true, 100); err != nil {
    panic(err)
} else {
   err = handle.WritePacketData(packet.Data())
}

Если избежать части протокола X, сервер получит сообщения от клиента, но с протоколом X это невозможно.

Спасибозаранее!

1 Ответ

0 голосов
/ 28 мая 2018

Согласно документации

Пакет pcap позволяет пользователям gopacket считывать пакеты по проводам или из файлов pcap.

Отбрасыватьпакеты, вы должны быть в состоянии перехватить их.В зависимости от того, насколько универсальным вы хотите решить эту проблему, вам, вероятно, нужно подключиться к ядру.Я рекомендую изучить iptables и netfilters.

Я нашел несколько VPN, написанных на go, возможно, посмотрите, как они построены, поскольку вы хотите сделать что-то подобное (туннелирование пакетов).

...