捕获流将 netflow v5 转储添加到服务器,当从 GO 读取它时,要么根本无法读取,因为前两个字节不是 netflow 的版本,要么如果我将数据包传输到 11 个数组,它会给出数据包完全或者如果它尝试应该是示例输出的示例输出也会给出错误,示例输出:
0.0.0.10
157.121.64.85
138.166.72.38
107.207.29.71
108.177.99.171
243.117.126.147
但是 netflow 将地址写入 NAT 后面的转储中。使用 flow-tools 时,一切都正确显示,使用各种库解组到结构中,但输出在任何地方都是相同的,如上所示。
go func() {
for f := range fileNamesCatalog{
file, err := ioutil.ReadFile(f)
if err != nil{
fmt.Errorf("Failed open file %v", f)
continue
}
decoder := netflow.NewDecoder(session.New())
body, err := decoder.Read(bytes.NewReader(file[11:]))
switch packet := body.(type) {
case *netflow5.Packet:
filter(packet,net.ParseIP("157.121.64.85"),packetsChannel)
}
}
}()
我正在使用两个包: https://github.com/tehmaze/netflow https://github.com/VerizonDigital/vflow