Как написать VPN-сервер [закрыто]

Я решил написать свой собственный легкий VPN-сервер на Java. С точки зрения программирования мне кажется, что VPN-сервер - это просто сквозной прокси, который шифрует трафик от клиента и расшифровывает его на сервере. Может ли кто-нибудь указать мне на скелет написания такого рода сервера?

Я знаю, что есть много готовых программ и даже программ с открытым исходным кодом, но, к сожалению, хотя я знаю несколько языков веб-программирования, примеры кода C, которые я видел, не документированы / не структурированы таким образом, чтобы я мог их понять.

Я представляю, что мне нужны следующие части:

  • Фабрика потоков для клиентских объектов
  • Соединитель сокетов для клиентов
  • Метод создания заголовка аутентификации IPSec (AH)
  • Метод создания безопасности инкапсуляции IPSec Полезная нагрузка (ESP)
  • Что-то для протокола ассоциации безопасности Интернета и управления ключами (ISAKMP)
  • Обмен ключами в Интернете (IKE)
  • Модули аутентификации сертификатов PKI
  • Репозиторий сертификатов (SQLLite)
  • Ключ Oakley генерация (для IKE и ISAKMP)
  • Некоторая защита пакетов от повторного воспроизведения

Части, которые я планирую использовать для общих модулей (и создать адаптеры для), - это криптографические алгоритмы (предпочтительно AES, хотя кажется, что окна, подобные DES / 3DES - Noobs)

Если кто можете добавить более подробную информацию о частях, которые необходимы для сервера IPSec vpn, пожалуйста, не стесняйтесь вносить свой вклад. Поскольку, насколько я могу судить, это необходимо запускать на старом оборудовании Linux, сервер должен быть IPSec, а не SSLVPN. Целевая платформа - это старый процессор Intel с частотой 1,5 ГГц, который я накачал 2 ГБ оперативной памяти DDR2, зеркальным жестким диском на 100 ГБ и 2-гигабитными дисками Nic.

С другой стороны, существует очень много типов клиентских VPN I Я почти уверен, что мне не нужно делать такой для моих нужд.

26
задан Bart 11 October 2012 в 14:54
поделиться