Как я могу определить направление пакета в программе вердикта BPF_PROG_TYPE_SK_SKB?

#linux #linux-kernel #bpf #ebpf

#linux #linux-ядро #bpf #ebpf

Вопрос:

Я пишу программу вердикта BPF_PROG_TYPE_SK_SKB для принятия решений о перенаправлении. Как я могу определить направление пакета (вход / выход)?

У меня есть доступ к локальному и удаленному порту каждого пакета, но я не могу определить, какой из них является исходным или целевым портом, и поэтому не могу определить направление. Должно ли это быть возможным? И если нет, то почему нет?

uname -a : Linux ubuntu-bionic 4.18.0-16-generic #17 ~ 18.04.1-Ubuntu SMP Вт 12 февраля 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux

Ответ №1:

Вероятно, есть какое-то очень элегантное решение. Я решил это, используя sockmap всего с 2 элементами: таким образом, вам не нужно иметь дело с указаниями, потому что это тривиально. К сожалению, с помощью этого метода вам нужно создать sockmap для каждой пары сокетов.