我如何使用BPF定位TCP数据包中的MSS值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何使用BPF定位TCP数据包中的MSS值相关的知识,希望对你有一定的参考价值。
我正在学习BPF,并将一些iptables规则转换为BPF字节码。我主要是使用nfbpf_compile应用程序来执行此操作,而不是尝试编写C或汇编程序。我很幸运,但是一条规则的语法在逃避我。
我想丢弃的同步标记集丢失了MSS值的数据包。在iptables中,MSS的目标是--tcp-option 2
。我知道MSS在TCP选项中,该选项从TCP数据包的字节22开始,并且MSS是'种类'2。我可以使用BPF语法中的tcp[22:2]==$NUMBER
来过滤MSS。但是,我想做的是目标SYN数据包,其中MSS完全丢失。我已经尝试过可以想到的所有“ null”变体,但是没有运气。
有人知道BPF语法中的iptables ! --tcp-option 2
的等效性吗?
我尝试过的例子:
$ ./nfbpf_compile RAW 'tcp[22:2]==0x0' (I know this won't work..it's an example)
12,48 0 0 0,84 0 0 240,21 0 8 64,48 0 0 9,21 0 6 6,40 0 0 6,69 4 0 8191,177 0 0 0,72 0 0 22,21 0 1 0,6 0 0 65535,6 0 0 0
# iptables -I INPUT -m bpf --bytecode '12,48 0 0 0,84 0 0 240,21 0 8 64,48 0 0 9,21 0 6 6,40 0 0 6,69 4 0 8191,177 0 0 0,72 0 0 22,21 0 1 0,6 0 0 65535,6 0 0 0
' -j DROP
我正在学习BPF,并将一些iptables规则转换为BPF字节码。我主要是使用nfbpf_compile应用程序来执行此操作,而不是尝试编写C或汇编程序。我有很多...
TL; DR
以上是关于我如何使用BPF定位TCP数据包中的MSS值的主要内容,如果未能解决你的问题,请参考以下文章