这里列出了一些ipset消息通信的格式,并且附加了ipset命令的debug版本。(•̀⌄•́)
—— By Jihan
先看之前的libipset源码分析
源码分析里讲解了ipset的通信机制,这里主要是列出一些示例。也就是ipset通信时的消息体部分。再挂一下这张图:
图片来源
示例
尝试运行命令ipset list test_net
得到:
1 | [root@localhost jihan]# ./ipset list test_net |
当然test_net是我之前就添加好了的。这里只是举例,是个ipset正确命令就行。
这里显示的就是正常ipset命令下的运行结果,我编译了一个ipset的debug版本(对应源码libipset7.6),并且加了一些打印,可以得到一下信息:
1 | Message header: received cmd LIST (7) |
其中单个属性的组成模式类似tlv结构(TLV数据传输协议及简单实现(C)),不过这里是ltv结构。比如0x05 0x00 0x01 0x00 0x06 0x00 0x00 0x00
中0x05 0x00
是指长度为5,0x01 0x00
是标志PROTOCOL(源码里有映射表),后面的就是值了,这里的实际传输长度为8,是因为进行了对齐操作。
如果你需要进行其他ipset通信的分析,执行上面提到的ipset的debug版本对应命令,进行解析即可。