• [常见问题汇总帖] 在虚拟机中ebpf程序跟踪socket得到的源IP地址和目的ip地址一样
    在虚拟机上进行编译和执行,得到的结果源地址IP和目的地址IP是一样的,网络用的桥接模式。在user程序中进行对百度的ping操作。而且监控网口改成了我自己的网口。但是得到的就有我虚拟机的地址,socket源和目的地址都是。这是负责储存信息的结构体,在map中作为键key。这是给结构体中源和目标地址赋值的操作函数部分。这是map,值为包的数量和大小的结构体。这是user态的输出。像是端口,协议号,包数和数据大小都能正常输出,就是这个源地址和目的地址是一样的。然后我把源和目的地址改成定值1和2.输出就是1和2,感觉这是对的(没有ping百度,是连接的vscode,走22端口)然后我又去看了这个struct __sk_buff的偏移量,确实也是不一样的,源地址n1的偏移量26,目的地址n2的偏移量30,理应得到两个不同的内容才对。这俩load_word函数得到的理应是不同的值才对。但输出的确实是同一个值。但输出就是一样的,就怀疑是struct __sk_buff结构体里面填充的源和目的地址是一样的。这个程序就是源码目录下/samples/bpf/sockex3.我不能理解为什么,也许是我没理解到程序在做什么,求救大佬指导。
  • [问题求助] 如何用int _sockops(struct bpf_sock_ops *ctx)函数实现对tcp套接字状态的跟踪啊。
    使用c语言ebpf和int _sockops(struct bpf_sock_ops *ctx)函数,map随意我是初学者,死活写不出来,求教大佬们。