Вход/Регистрация
UNIX: разработка сетевых приложений
вернуться

Стивенс Уильям Ричард

Шрифт:

или получателя */

};

Таблица 19.1. Типы сообщений

Тип сообщения К ядру От ядра Описание
SADB_ACQUIRE • • Запрос на создание записи в SADB
SADB_ADD • • Добавление записи в полную базу безопасности
SADB_DELETE • • Удаление записи
SADB_DUMP • • Дамп SADB (используется для отладки)
SADB_EXPIRE • Уведомление об истечении срока действия записи
SADB_FLUSH • • Очистка всей базы безопасности
SADB_GET • • Получение записи
SADB_GETSPI • • Выделение SPI для создания записи SADB
SADB_REGISTER • Регистрация для ответа на SADB_ACQUIRE
SADB_UPDATE • • Обновление записи в частичной SADB

Таблица 19.2. Типы соглашений о безопасности

Тип соглашения Описание
SADB_SATYPE_AH Аутентифицирующий заголовок IPSec
SADB_SATYPE_ESP ESP IPSec
SADB_SATYPE_MIP Идентификация мобильных пользователей (Mobile IP)
SADB_SATYPE_OSPFV2 Аутентификация OSPFv2
SADB_SATYPE_RIPV2 Аутентификация RIPv2
SADB_SATYPE_RSVP Аутентификация RSVP
SADB_SATYPE_UNSPECIFIED He определен

Таблица 19.3. Типы расширений PF_KEY

Тип заголовка расширения Описание Структура
SADB_EXT_ADDRESS_DST Адрес получателя SA sadb_address
SADB_EXT_ADDRESS_PROXY Адрес прокси-сервера SA sadb_address
SADB_EXT_ADDRESS_SRC Адрес отправителя SA sadb_address
SADB_EXT_IDENTITY_DST Личность получателя sadb_ident
SADB_EXT_IDENTITY_SRC Личность отправителя sadb_ident
SADB_EXT_KEY_AUTH Ключ аутентификации sadb_key
SADB_EXT_KEY_ENCRYPT Ключ шифрования sadb_key
SADB_EXT_LIFETIME_CURRENT Текущее время жизни SA sadb_lifetime
SADB_EXT_LIFETIME_HARD Жесткое ограничение на время жизни SA sadb_lifetime
SADB_EXT_LIFETIME_SOFT Гибкое ограничение на время жизни SA sadb_lifetime
SADB_EXT_PROPOSAL Предлагаемая ситуация sadb_prop
SADB_EXT_SA Соглашение о безопасности sadb_sa
SADB_EXT_SENSITIVITY Важность SA sadb_sens
SADB_EXT_SPIRANGE Диапазон допустимых значений SPI sadb_spirange
SADB_EXT_SUPPORTED_AUTH Поддерживаемые алгоритмы аутентификации sadb_supported
SADB_EXT_SUPPORTED_ENCRYPT Поддерживаемые алгоритмы шифрования sadb_supported

Рассмотрим несколько примеров сообщений и расширений, используемых в типичных операциях с сокетами управления ключами.

19.3. Дамп базы соглашений о безопасности

Для дампа текущей базы соглашений о безопасности используется сообщение

SADB_DUMP
. Это самое простое из сообщений, поскольку оно не требует никаких расширений, а состоит только из 16-байтового заголовка
sadb_msg
. Когда процесс отправляет сообщение
SADB_DUMP
ядру через сокет управления ключами, ядро отвечает последовательностью сообщений
SADB_DUMP
по тому же сокету. В каждом сообщении содержится одна запись базы SADB. Конец последовательности обозначается сообщением со значением 0 в поле
sadb_msg_seq
.

Поле

sadb_msg_satype
позволяет запросить только записи определенного типа. Значения этого поля следует брать из табл. 19.2. При указании значения
SADB_SATYPE_UNSPEC
возвращаются все записи базы. Не все типы соглашений о безопасности поддерживаются всеми реализациями. Реализация KAME поддерживает только соглашения, относящиеся к IPSec (
SADB_SATYPE_AH
и
SADB_SATYPE_ESP
), поэтому при попытке получить дамп записей
SADB_SATYPE_RIPV2
будет возвращена ошибка
EINVAL
. Если же записей, относящихся к запрошенному типу, в таблице нет (но они поддерживаются), функция возвращает ошибку
ENOENT
.

Программа, получающая записи из базы данных безопасности, приведена в листинге 19.2.

Листинг 19.2. Дамп базы соглашений о безопасности

//key/dump.c

1 void

2 sadb_dump(int type)

3 {

4 int s;

5 char buf[4096];

6 struct sadb_msg msg;

7 int goteof;

8 s = Socket(PF_KEY, SOCK_RAW, PF_KEY_V2);

9 /* формирование и отправка запроса SADB_DUMP */

10 bzero(&msg, sizeof(msg));

11 msg.sadb_msg_version = PF_KEY_V2;

12 msg.sadb_msg_type = SADB_DUMP;

13 msg.sadb_msg_satype = type;

14 msg.sadb_msg_len = sizeof(msg) / 8;

  • Читать дальше
  • 1
  • ...
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: