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

Я пишу реализацию IPsec для микроконтроллера и хочу протестировать ее на стандартной машине Linux с Debian Lenny. Оба устройства должны защищать связь между собой с помощью IPsec ESP в туннельном режиме. Ключи настраиваются вручную с помощью setkey. Нет (или, по крайней мере, не должно быть) программы пользовательского пространства, участвующей в обработке пакета IPsec. Теперь я хочу посмотреть, как мои созданные пакеты обрабатываются ядром Linux. Чтобы увидеть необработанные пакеты, я захватываю их с помощью tcpdump и анализирую с помощью wireshark.

  • Как лучше всего получить отладочную информацию об обработке IPsec?
  • Как узнать, принят ли пакет ядром?
  • Как просмотреть причину потери пакета?

person Scolytus    schedule 28.10.2011    source источник


Ответы (1)


Вы можете настроить код ядра XFRM (или, возможно, ipv4/esp.c) для вывода отладочных сообщений в нужных местах.

Например, в net/ipv4/esp.c существует функция esp_input(), в которой есть несколько случаев ошибок, но вы увидите, что самое интересное находится в коде xfrm/*.c.

Тем не менее, у меня не было проблем с взаимодействием пользовательского IPSec с Linux. Следование спецификациям 43xx и проверка правильности пакетов с помощью wireshark, казалось, преуспели. Если у вас возникли проблемы и вы не хотите инструментировать ядро, вы можете настроить правила iptables и подсчитать количество (различных типов) пакетов в каждой точке.

Наконец, убедитесь, что вы действительно добавили политику безопасности (SP), а также ассоциацию безопасности (SA) и правильно настроили правила брандмауэра.

person Thomas M. DuBuisson    schedule 28.10.2011