
Fiz um programa de ingresso TC BPF e quero que ele processe pacotes específicos marcados apenas por NFTables. Aqui está minha tabela NFTables que marca os pacotes específicos:
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
}
}
Eu criei a qdisc
via:
tc qdisc add dev ens18 root handle 1: prio
Agora, estou tentando anexar o programa TC BPF e aplicá-lo apenas aos pacotes marcados (neste caso, marcados como 7
):
tc filter add dev ens18 parent 1:0 prio 1 handle 7 fw flowid 1:1 bpf obj testBPF_Prog.o section test
No entanto, recebo o seguinte:
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.
Se eu fizer:
tc filter add dev ens18 parent 1:0 bpf obj testBPF_Prog.o section test
O programa TC BPF se conecta bem, mas verifica todos os pacotes. Se eu fizer:
tc filter add dev ens18 parent 1:0 prio 1 handle 7 fw flowid 1:1
Isso não gera nenhum erro, mas o programa BPF não está anexado.
Parece-me que o programa TC não sabe quando o fw
parâmetro termina. Portanto, pensa que o bpf
parâmetro faz parte do fw
parâmetro.
Estou me perguntando se é possível separar essas declarações e, em caso afirmativo, isso alcançará o que estou tentando fazer? Estive pesquisando a documentação on-line, mas não encontrei nenhuma maneira de fazer isso.
Estou fazendo isso em uma VM Ubuntu 18.04 LTS com kernel 5.6.1-050601-generic
.
Sou relativamente novo no filtro TC. Portanto, peço desculpas se estou perdendo algo óbvio.
Qualquer ajuda é muito apreciada e obrigado pelo seu tempo!