IPSec в ядре Linux — как выяснить, что происходит

#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) и правильно настроили правила брандмауэра.