#linux-kernel #ipsec
#linux-ядро #ipsec
Вопрос:
Я пишу реализацию IPSec для микроконтроллера и хочу протестировать ее, используя стандартный Linux-блок под управлением Debian Lenny. Оба устройства должны обеспечивать связь между ними с использованием IPSec ESP в туннельном режиме. Ключи настраиваются вручную с помощью setkey
. Нет (или, по крайней мере, не должно быть) программы пользовательского пространства, участвующей в обработке пакета IPSec. Теперь я хочу посмотреть, как мои созданные пакеты обрабатываются ядром Linux. Чтобы увидеть необработанные пакеты, я их собираю tcpdump
и анализирую wireshark
.
- Каков наилучший способ получения отладочной информации об обработке IPSec?
- Как я могу выяснить, принят ли пакет ядром?
- Как я могу просмотреть причину удаления пакета?
Ответ №1:
Вы можете использовать XFRM (или, возможно ipv4/esp.c
,) код ядра для распечатки отладочных сообщений в нужных местах.
Например, net/ipv4/esp.c
существует функция esp_input()
, в которой есть несколько ошибок, но вы увидите, что самое интересное содержится в xfrm/*.c
коде.
Тем не менее, у меня не было проблем с взаимодействием пользовательского IPSec с Linux. Соблюдение спецификаций 43xx и проверка правильности отправки пакетов через wireshark, похоже, прошли успешно. Если у вас возникли проблемы и вы не хотите настраивать ядро, вы можете настроить правила iptables и подсчитать количество пакетов (различного типа) в каждой точке.
Наконец, убедитесь, что вы действительно добавили политику безопасности (SP), а также ассоциацию безопасности (SA) и правильно настроили правила брандмауэра.