как создать и отправить пакет vxlan с помощью gopacket?

#go #networking #gopacket

#Вперед #сеть #gopacket

Вопрос:

Я видел несколько примеров создания и отправки TCP / UDP-пакета с помощью gopacket.Теперь мне нужно перехватить и переслать многоадресный пакет udp vxlan, и я не знаю, как создать слой vxlan и его полезную нагрузку.как создать и отправить пакет vxlan с помощью gopacket?

Ответ №1:

gopacket принимает пакетные данные в виде [] байта и декодирует их в пакет с ненулевым числом «слоев». Каждый уровень соответствует протоколу в пределах байтов.

Поскольку здесь не так много контекста, и вы не предоставили базовый код, который вы написали, я могу только переслать вас к документации.

Итак,

Чтение пакета из источника: https://godoc.org/github.com/google/gopacket#hdr-Reading_Packets_From_A_Source

Используйте тип слоя, который вы хотите использовать при декодировании :

Для vxlan: https://godoc.org/github.com/google/gopacket/layers#VXLAN

Комментарии:

1. спасибо, это мне очень помогает. Я создаю UDP-пакет, подобный link , и использую layers. VXLAN.Содержимое и слои. VXLAN.Payload в качестве полезной нагрузки UDP-пакета. Затем отправьте UDP-пакет с помощью unix raw socket. Это работает хорошо.

2. Рад, что смог помочь @consteven, Всего наилучшего.