Архив: Программа на C++ для поднятия VPN туннеля на протоколе IKEv2 из стека IPseс.
Бюджет
833$
/ 50000
руб
в месяц
Создан: 6 лет назад
Закрыт
- Описание
- Требуется консольное приложение на C++ под Linux для организации VPN туннеля между двумя серверами. На одном сервере приложение запускается с ключом (/server) на втором сервере с ключом (/client). Серверное приложение открывает socket на портах 500/4500 (стандартные для IPsec) и ожидает входящий UDP трафик. Клиентское приложение подключается к серверному по сети с помощью UDP.
Поверх установленного UDP канала оба приложения поднимают протокол IKEv2 (из стека IPseс), т.е. обмениваются парой сообщений IKE_SA_INIT, затем тремя парами IKE_AUTH. Таким образом устанавливается VPN туннель. Должна быть использована аутентификация по протоколу EPA-AKA (rfc5448).
=============== Далее детали задания:
Поднимать виртуальные сетевые IP интерфейсы для использования полученного туннеля не требуется. Вместо этого должна быть реализована пара функций: отправить пакет / принять пакет, которые позволяют передавать сообщение через организованный VPN туннель.
Задача не предполагает изобретения колеса, т.е. написания стека протоколов с нуля. Вместо этого предлагается грамотно подключить и использовать opensource библиотеку strongSwan (возможно предложите другую?), в которой стек IPseс уже реализован. Самостоятельно (т.е. не внутри библиотеки) должны быть вызваны функции открытия UDP сокета, отправки и получения UDP сообщений (т.к. программа позже будет работать не через UDP), а также чтения конфигурационного файла и главный цикл программы (void main(void)). Библиотечным должно быть всё остальное, что можно по максимуму расчёт ключей, проверка авторизации, формирование пакетов и прочее.
Структура клиентской и серверной программы:
- строго однопоточное приложение
- содержит функцию обработки входящих пакетов, которая определяет тип (IKE_SA_INIT, IKE_AUTH, ESP, INFORMATION) и затем обрабатывает/проверяет пакет с помощью библиотечных функций.
- содержит функцию отправки подготовленного с помощью библиотеки UDP пакета.
Не допускается многопоточность (чтобы исполнительные потоки работали внутри библиотеки отдельно от нашей программы то есть библиотеку strongSwan можно использовать только как набор пассивных функций).
Например, сообщение IKE_SA_INIT должно быть сформировано примерно так:
- библ. Вызов "Создать скелет сообщения IKE_SA_INIT" ()
- библ. Вызов "Добавить Payload параметр" (IKEV2_FRAGMENTATION_SUPPORTED)
- библ. Вызов "Добавить Payload параметр" ( SIGNATURE_HASH_ALGORITHMS)
- далее наш вызов "Отправить" собранный ваше пакет в udp socket, нашей функцией sendudp() уже не использую strongSwan.
Затем в цикле while (1) {} ждём ответного IKE_SA_INIT сообщения, опрашивая socket.
Не допускается самодельная модификация протокола IPsec, т.е. реализация должна быть совместима со стандартном (совместимость проверяется подключением к тому-же strongSwan, но запущенному со своим конфигурационном файлом без каких-либо изменений в пакете strongSwan).
На вход клиентскому приложению передаются необходимые ключи (login и password), ip адрес сервера настройки виртуального сетевого интерфейса (который мы не поднимаем) и другие параметры.
На вход серверному приложению передаются необходимы ключи и другие параметры.
После установления соединения клиентское приложение автоматически генерирует текстовый файл, в который скидывает настройки виртуального сетевого интерфейса, полученные от серверной части, а так-же все ключи декодирования, которыми можно расшифровать трафик сторонним анализатором (например, WireShark).
Работа разбивается и оплачивается двумя этапами: первый это обмен парой IKE_SA_INIT со сбросом ключей в файл, второй это обмен тремя парами IKE_AUTH и прочее.
- Категория
Похожие проекты
0
2
Необходимо разработать систему, которая: Подключается к API Diagnocat и iDent (через токены доступа). Получает данные о пациенте, результатах диагностики, снимках и назначениях. Автоматически формирует структурированный отчет по шаблону (включая врачей, этапы лечения, стоимость и описание процедур).......
1 месяц назад
0
0
Необходимо связать БД 1C:ERP с БД Outlook, MS Access, Битрикс24. Например при вводе нового сотрудника в 1С:ERP он должен автоматически появляться в вышеперечисленных БД....
2 месяца назад
0
1
Требуется реализация отчёта на кастомизированной 1С:УПП 1. 2, ТЗ и контрольный пример во вложении, 80% кода должно быть покрыто модульными тестами....
2 месяца назад
$7
0
1
Мне нужно копировать мой текст и вставлять в одну группу ВК с открытой стеной для публикации рекламы. Задача скрипта/сервиса/программы - примерно каждые 10 секунд брать мой текст и вставлять в эту группу. Я пробовал через одну программу, которая записывает действия мышки и потом повторяет, но она как-то......
4 месяца назад
0
0
Написать прошивку для A94B114, используя 2 подобные рабочие прошивки. Все файлы есть....
4 месяца назад
$21
0
2
Нужно разархивировать файл архив. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы(скрины)....
6 месяцев назад
0
1
Входные: Имеется скрипт по обработке email писем и добавление их в систему Redmine Проблема: Система обработки этих писем написана некорректная и негибкая Задача: Переписать логику обработки входящих писем, чтобы исключить их потерю при незначительных отклонениях от ожидаемой структуры....
6 месяцев назад
$37
0
1
- В обязанности сотрудника входит поддержание мобильного приложения системы автоматизации бизнеса. - Работа сдельная: задачи выдаются на оценку, далее после согласования передаются на реализацию. - Заключаем договор и NDA (соглашение о неразглашении)....
6 месяцев назад
$71
0
0
Информация о проекте: Проект включает в себя React Native приложение с Expo внутри которого находится webview с сайтом На устройствах с ОС IOS проблема с воспроизведением видео....
7 месяцев назад
0
0
Разрабатываю десктопные программы на языке Java, а так же Java + SQL....
7 месяцев назад
0
0
0
6
1. Чтобы можно было писать описание события (без заголовка) - превью в списке берется N количества букв с начала. (в списке писать дату события и сколько осталось до него) . Выставление даты и времени напоминания и ИНТЕРВАЛА ПОВТОРА ОТ 1 МИНУТЫ! Выставлять количество повторов, далее напоминания прекращаются.......
8 месяцев назад
0
4
Сайт arg2028t. beget. tech/. Нужно сделать вот такой калькулятор. airprint. by/outdoor/wide-format. и еще некоторые доработки....
8 месяцев назад
$214
0
1
0
7
Краткое описание: Мы ищем исполнителя для тестирования функционала мобильного приложения на платформе Android. Задача включает проверку основных функций приложения, таких как работа комнаты, передача видео, звука и чата, а также создание подробной отчетности о найденных ошибках. Требования к исполнителю:......
9 месяцев назад
0
12
$143
0
0
Oпpocы (1008pyб/чaс) Заходитe на сaйт: gonsù....
10 месяцев назад
0
4
Требуется создать скрипт для premiere pro. Данная суть скрипта: в выделеном бине нужно что бы автоматически проставлялся in out ровно по серидине файла так что бы выделенная область была длиной 3 секунды. И требуется кнопка что бы работало через окно expressions. Проблема текущего в том что он не работает......
10 месяцев назад
0
2
Нужно создать приложения под гемблинг/беттинг, на котлин. Приложение должно работать Firebase. Детали вышлю при обсуждение....
10 месяцев назад
$21
0
4
Нужно разархивировать файл archive. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы ....
1 год назад
0
3
Разработать впн сервис ( Приложения на ios и android + сайт для оплаты подписки). Настройка Серверов. Оплата по договоренности. Работаем черед безопасную сделку....
1 год назад
Похожая удалённая работа
- Удаленная работа для веб-программиста
- Удаленная работа для разработчика баз данных
- Удаленная работа для прикладного программиста
- Удаленная работа для системного программиста
- Удаленная работа для разработчика игр
- Удаленная работа для разработчика мобильных приложений
- Удаленная работа для тестировщика ПО
- Удаленная работа для 1С программиста
- Удаленная работа для разработчика встраиваемых систем
- Удаленная работа для разработчика CRM и ERP