Go 如何拾取IP数据包并在不同的VM和接口上注入
我一直试图解决这两个问题,但都没有成功Go 如何拾取IP数据包并在不同的VM和接口上注入,go,networking,tcp,udp,gopacket,Go,Networking,Tcp,Udp,Gopacket,我一直试图解决这两个问题,但都没有成功 我想知道是否有可能从带有Gopacket的接口中删除特定的数据包,或者仅仅是为了监听线路?例如,当我将一个UDP数据包发送到一个错误的端口,然后使用Gopacket纠正它时,它将发送两个数据包,一个发送到错误的端口,一个发送到正确的端口。有没有办法用Gopacket丢弃/丢弃错误的数据包 我试图做的是,提取客户端通过IP发送的所有数据包,然后将每个数据包封装为另一个协议X中的有效负载,并发送到远程主机,该主机将在协议X上接收数据,获取有效负载,并在其接口上
if handle, err := pcap.OpenLive("enp0s8", 1600, true, 100); err != nil {
panic(err)
} else {
err = handle.WritePacketData(packet.Data())
}
如果避免使用协议X部分,则服务器将从客户端接收消息,但使用协议X则不可能
提前谢谢 根据
Package pcap允许gopacket的用户从线路上或网络上读取数据包
从pcap文件
要丢弃包,您需要能够拦截它们。根据解决这个问题的通用性,您可能需要挂接到内核中。我建议研究iptables和netfilter
我发现了一些用go编写的VPN,也许可以看看它们是如何构建的,因为您想做一些类似的事情(数据包隧道)