Кажется, что пакеты, отправленные с использованием gopacket / gopcap, каким-то образом «отправляются», поскольку они видны в трассировке tshark:
444 143.613451037 127.0.0.1 → 127.0.0.1 UDP 66 6000 → 8888 Len=22
, но эти пакеты никогда не поступают в процесс на той же машине, прослушивая127.0.0.1:8888 (например, netcat -ul 8888
).
Есть ли у кого-нибудь какие-либо намеки на то, почему это или какие вещи стоит попробовать?Как уже упоминалось, пакеты фактически видны в следе tshark ... после этого они просто кажутся полностью исчезающими.
... irrelevant
out , err := pcap.OpenLive(*iface, 65535, true, -1 * time.Second)
out.WritePacketData(buf.Bytes())
... irrevelant
Идея состоит в том, чтобы создать пакеты и отправить их в lo
, чтобыпроцесс прослушивания на 127.0.0.1:<some port>
действительно может видеть эти пакеты.
IP src / dst равны 127.0.0.1, а ethernet src / dst оба равны 00: 00: 00: 00: 00: 00.
Редактировать:
Что касается дальнейших исследований, то представляется, что отправка пакетов с помощью pcap обходит стеки IP-сети таким образом, что пакеты могутне видно по процессам.Обходной путь - удалить нижние уровни пакетов в трассировке, открыть обычный сокет udp / tcp и отправить полезную нагрузку через этот сокет.