我一直在尝试解决这两个问题,但没有成功。
我想知道是否可以从使用 Gopacket 的接口中删除特定的数据包,还是只是为了在网络上监听?例如,当我将 UDP 数据包发送到错误的端口,然后使用 Gopacket 进行更正时,它将发送 2 个数据包,1 个到错误的端口,1 个到正确的端口。有没有办法用 Gopacket 丢弃/丢弃错误的数据包?
我要做的是获取客户端通过 IP 发送的所有数据包,然后将每个数据包封装为另一个协议 X 中的有效负载,然后发送到将在协议 X 上接收的远程主机,获取有效负载并在其接口上发送它以再次通过 IP 到达服务器。(IP(客户端)-> 协议 X(嗅探器 1)-> 协议 X(嗅探器 2)-> IP(服务器))
我已经验证了嗅探器 1 从客户端接口获取的数据包与到达嗅探器 2 的数据包相同,但问题是当嗅探器 2 将其注入服务器接口时。我无法使用 tcpdump 或任何其他工具查看该数据包。使用以下命令注入数据包:
if handle, err := pcap.OpenLive("enp0s8", 1600, true, 100); err != nil {
panic(err)
} else {
err = handle.WritePacketData(packet.Data())
}
如果避免使用协议 X 部分,则服务器将接收来自客户端的消息,但使用协议 X 则不可能。
提前致谢!