Туннелирование (инкапсуляция) и маршрутизация шифрованных пакетов, структура инкапсулированного IP-пакета
Для выполнения процедур преобразования IP-пакетов драйвер должен владеть информацией о ряде параметров взаимодействующих с данным узлом других узлов (идентификаторы, номера ключей, IP-адреса, порты и др.) Регистрация драйвером параметров о чужих узлах осуществляется: - при загрузке данных Монитором, которые он получил по технологии оповещения от соответствующего сервера IP-адресов, или из ЦУСа, или сохраненные от драйвера в предыдущем сеансе загрузки монитора, - путем регистрации драйвером информации из поступивших входящих пакетов, адресованных данному узлу. Монитор может загрузить драйверу информацию об узлах, с которыми данный узел и не имеет связи. О таких узлах грузится вся информация за исключением ключей. На координаторах – это информация об абонентских пунктах, а также координаторах, за которыми стоят другие узлы. На абонентских пунктах это информация только о координаторах, за которыми стоят другие узлы. Данная информация может быть получена Монитором только от сервера IP-адресов и необходима для обеспечения маршрутизации пакета. Драйвер узла по всем зашифрованным входящим UDP/2046 пакетам, предназначенным данному узлу, а также по бродкастам UDP/2048 и 2050 (это служебные пакеты, формируемые монитором, внутрь тела инкапсулированного ViPNet-пакета которых драйвер вставляет всю необходимую информацию), а в некоторых случаях по внешним параметрам любых пакетов (Source IP-адрес и Source порт ViPNet-пакета) на каждом из интерфейсов осуществляет регистрацию списков адресов узла другого узла и параметров доступа к нему через внешние устройства (NATSETTING). При наличии отличий драйвер формирует события 42 или 46 и передает новые зарегистрированные параметры монитору. При регистрации параметров определяет также тип протокола, который он должен использовать для инкапсуляции и тип адреса видимости узла (реальный или виртуальный). Вся полученная информация драйвером хранится в соответствующей таблице для каждого идентификатора узла. А также передается для хранения и монитору. Кроме того, драйвер формирует специальную ХЭШ таблицу: IP-адрес (реальный или виртуальный) – Идентификатор узла, по которой он при получении пакета для отправки в сеть быстро по IP-адресу назначения пакета определяет идентификатор нужного узла, а по нему ключи и всю необходимую информацию для его отправки этому узлу. В аналогичной таблице для каждого идентификатора координатора хранятся туннелируемые этими координаторами IP-адреса, по которым также определяется идентификатор координатора, на ключах связи с которым производится шифрование туннелируемых им пакетов
Выбор протоколов инкапсуляции, выбор типа адреса видимости узла (реальный или виртуальный)
Драйвер сетевой защиты ViPNet для всех типов исходящих или туннелируемых пакетов, IP-адреса которых сопоставлены для определенного идентификатора, производит упаковку (инкапсуляцию) этих пакетов в другой пакет протокола UDP или IP/241. Протокол UDP драйвер автоматически использует, если считает, что на пути следования IP-пакета присутствуют устройства, осуществляющие преобразование адресов (NAT). В ином случае используется более экономичный с точки зрения добавляемой избыточной информации протокол IP/241, в котором отсутствует UDP-заголовок. Критериями, по которым драйвер решает, что между данным и некоторым удаленным узлом есть устройство NAT и, соответственно следует использовать UDP-протокол, являются: - наличие у удаленного узла зарегистрированного адреса доступа через некоторое внешнее NAT-устройство (в, том числе, координатор), через который к нему возможен доступ, - сам этот узел установлен за такое устройство. Исключениями из этих правил являются: - свой собственный внешний адрес доступа и адрес доступа к другому узлу совпадают, то есть оба узла расположены в одной маршрутизируемой сети за одним устройством NAT, - другой узел доступен по широковещательным пакетам, то есть находится в этой же локальной сети. В этих случаях, а также всех остальных случаях драйвер применяет протокол IP/241. Как уже указывалось Выше, исходящий пакет от приложения может поступить с реальным или виртуальным адресом назначения. А также при получении входящего пакета драйвер должен подменить IP-адрес источника пакета на адрес, соответствующий адресу видимости. Реальный адрес автоматически используется, если используется протокол IP-241, а также в случае, если другой узел не имеет никаких внешних адресов доступа. Во всех остальных случаях по умолчанию используется виртуальный адрес, но пользователь может вручную в программе Монитор, управляющей работой драйвера, определить, что следует использовать реальные адреса. И если Монитор не обнаружит конфликтов с имеющимися адресами, то это позволено ему будет сделать.
|