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

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

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

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


person dippynark    schedule 07.04.2019    source источник


Ответы (1)


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

person SPYFF    schedule 16.07.2019