IPsec в ядре Linux - как понять, что происходит - PullRequest
3 голосов
/ 29 октября 2011

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

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

1 Ответ

2 голосов
/ 29 октября 2011

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

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

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

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

...