
Я сделал программу входа TC BPF и хочу, чтобы она обрабатывала только определенные пакеты, отмеченные NFTables. Вот моя таблица NFTables, которая отмечает определенные пакеты:
table ip compressor_tc {
chain prerouting {
type nat hook prerouting priority -99; policy accept;
ip daddr 10.50.0.3 tcp dport != ssh mark set 0x00000007
ip saddr 10.50.0.4 udp dport 1337 mark set 0x00000008
}
}
Я создал qdisc
переход:
tc qdisc add dev ens18 root handle 1: prio
Теперь я пытаюсь прикрепить программу TC BPF и применить ее только к помеченным пакетам (в данном случае помеченным как 7
):
tc filter add dev ens18 parent 1:0 prio 1 handle 7 fw flowid 1:1 bpf obj testBPF_Prog.o section test
Однако я получаю следующее:
root@test02:/home/dev/CompressorV2_TC/src# tc filter add dev ens18 parent 1:0 prio 1 handle 7 fw flowid 1:1 bpf obj testBPF_Prog.o section test
What is "bpf"?
Usage: ... fw [ classid CLASSID ] [ indev DEV ] [ action ACTION_SPEC ]
CLASSID := Push matching packets to the class identified by CLASSID with format X:Y
CLASSID is parsed as hexadecimal input.
DEV := specify device for incoming device classification.
ACTION_SPEC := Apply an action on matching packets.
NOTE: handle is represented as HANDLE[/FWMASK].
FWMASK is 0xffffffff by default.
Если я сделаю:
tc filter add dev ens18 parent 1:0 bpf obj testBPF_Prog.o section test
Программа TC BPF подключается нормально, но сканирует все пакеты. Если я это сделаю:
tc filter add dev ens18 parent 1:0 prio 1 handle 7 fw flowid 1:1
Никаких ошибок не выводится, но программа BPF не подключается.
Мне кажется, что программа TC не знает, когда fw
заканчивается параметр. Поэтому она думает, что bpf
параметр является частью параметра fw
.
Мне интересно, возможно ли разделить эти операторы, и если да, то достигнет ли это того, чего я пытаюсь добиться? Я просматривал документацию в Интернете, но не нашел способа сделать это.
Я делаю это на виртуальной машине Ubuntu 18.04 LTS с ядром 5.6.1-050601-generic
.
Я новичок в TC filter. Поэтому прошу прощения, если я упускаю что-то очевидное.
Любая помощь будет высоко оценена, и спасибо за ваше время!