Это настройка OpenVPN.
Для безопасной передачи пакетов IP либо Ethernet между сегментами корпоративной сети через сеть общего пользования.
OpenVPN — развитая кросс-платформенная система туннелирования 4 уровня (в терминах модели OSI). Как и STunnel, для аутентификации сторон и защиты трафика она опирается на TLS/SSL и сертификаты X.509. (Возможна также аутентификация на основе симметричного ключа, но это менее безопасно, особенно при неизвестном заранее IP-адресе одной из сторон.) В отличие от STunnel, работающего как TCP-прокси, OpenVPN создаёт полноценные виртуальные интерфейсы, которые могут использоваться либо как аналог порта Ethernet (2 уровня), либо как IP-интерфейс 3 уровня. В качестве протокола нижележащего уровня для пакетов туннеля может использоваться UDP либо TCP.
Реализация OpenVPN в NSG Linux основана на стандартном демоне openvpn и поддерживает все его возможности. Подробную документацию собственно по OpenVPN см. в man pages, а также на сайте разработчика.
Для добавления туннелей используйте команды +
, _new
или _insert
. Имя следует вводить в формате ovpnНомер
или только целочисленный номер. Данный список является именованным и не упорядочивается автоматически. Для удаления используйте команду -
или _remove
. Далее каждый из туннелей настраивается, включается/выключается и отлаживается индивидуально.
Для работы OpenVPN требуется ряд объектов, которые обычно хранятся в отдельных файлах в формате PEM: ключи, сертификаты, параметры Диффи-Хеллмана (на сервере) и проч. Но есть интересная возможность. Большинство этих объектов (но не все!) можно хранить прямо в теле конфигурационного файла, в XML-подобных тегах. Например:
<cert>
тело сертификата
</cert>
Где тело сертификата — это всё от строки
до строки-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
включительно. Между этими строками содержится только текст в Base64. (Если сертификат содержит ещё и текстовую информацию в читаемом виде, её можно не копировать.)
Это удобно, чтобы держать все настройки в одном файле вместо нескольких. Например, администратор сервера может генерировать один файл и отдавать его пользователю, а уж тот как-нибудь найдёт куда его вставить в единственное место в клиенте VPN, например, на мобильном устройстве.
С другой стороны, если система не настраивается раз и навсегда, а предполагается, что в будущем придётся периодически менять ключи и сертификаты — то удобнее хранить их в отдельных файлах.
Напрямую манипулировать файлами в NSG Linux возможно, но не очень удобно. Разработчики намеренно не дают пользователю nsg полный доступ к файловой системе — это противоречит безопасности. Особенно если пользователь неопытный или небрежный, или любит пароли типа qwerty. Необходимо работать с устройством как суперпользователь root — но это крайняя мера, которая не рекомендуется без настоятельной необходимости ни в одной системе (и даже в Windows).
В частности, если имеется готовый файл конфигурации, то можно вставить в него все настройки, ключи и проч. как описано выше, и указать его в узле config-file
. (Необходимо только исключить из него параметры dev
и writepid
, если они там есть — в NSG Linux они добавляются автоматически по имени туннеля ovpnNUM
.) Но этот единственный файл всё равно надо будет как-то перенести на устройство.
Однако в случае OpenVPN есть способ менять ключи и т.п. средствами исключительно Web- или CLI-интерфейса NSG. Это — поле extra
. Всё, что стоит в этом поле, дописывается в конец временного файла конфигурации без изменений. И это не обязательно должны быть именно строки "параметр значение" ! Там может быть любое содержимое, которое допускается openvpn.
Иначе говоря, в поле extra
можно вставить содержимое всех дополнительных файлов:
<ca> ................. </ca> <key> ................. </key> <cert> ................. </cert> <tls-auth> ................. </tls-auth> <tls-cert> ................. </tls-cert>
и т.п. Ограничений на длину этого поля нет. В итоге получится корректный файл конфигурации со всеми ключами и т.п. внутри него. Результат, после применения настроек, можно посмотреть командой actual-config
.
Такую настройку можно также сделать или изменить при работе в CLI под именем пользователя nsg. Заполнять любые ветви дерева (в т.ч. его конечные листья) можно с помощью команды _get
. Редактировать каждый конкретный параметр можно командами _edit
или _fullscreen
.
© Network Systems Group 2015–2024 | Отдел документации |