Подключение к VPN без установки клиентского программного обеспечения - PullRequest
12 голосов
/ 22 мая 2009

Иногда я должен написать программное обеспечение для установки сокета с конкретным сервером, находящимся в Cisco VPN. Я просто пишу свое программное обеспечение, как будто не было VPN (используя стандартную библиотеку сокетов). Когда приходит время запустить эту программу, я вручную подключаюсь к VPN с помощью клиентского программного обеспечения, установленного на моем компьютере, а затем запускаю саму программу.

Однако было бы желательно написать программное обеспечение, чтобы использовать преимущества специализированной библиотеки сокетов, способной обмениваться данными через VPN напрямую, без использования какого-либо установленного программного обеспечения клиента.

Вот код Java, иллюстрирующий функциональность, которую я хотел бы:

String vpnHost = ...;
String vpnUser = ...;
String vpnPassword = ...;
VPNConnection vpnConnection = new CiscoVPNConnection(vpnHost, vpnUser, vpnPassword);

String serverHost = ...;
int serverPort = ...;
Socket socket = vpnConnection.openSocket(serverHost, serverPort);

Можно ли установить такое подключение к VPN без установки какого-либо клиентского программного обеспечения?

Ответы [ 3 ]

10 голосов
/ 22 мая 2009

Это зависит от того, как настроен VPN-сервер.

Большинство продуктов VPN используют IPSEC, стандартный протокол для шифрования соединений TCP / IP. Большинство продуктов также используют ISAKMP, протокол управления ключами архитектуры Internet Security, также стандарт, для настройки сеанса. Исходный код для IPSEC и ISAKMP доступен и может быть уже установлен в вашей системе.

Теперь о плохих новостях: хотя все, что я уже упомянул, является стандартным, схемы аутентификации, которые можно использовать с ISAKMP, являются почти всеми проприетарными. Две "стандартные" схемы аутентификации - это предварительно выданные ключи и сертификаты X.509. Если VPN-сервер настроен на разрешение любого из них, у вас есть шанс. В противном случае вы не сможете по-настоящему использовать VPN, поскольку этот протокол действительно проприетарный, и его практически невозможно реконструировать, поскольку диалог аутентификации зашифрован.

Гораздо более простой путь: вам действительно нужен VPN, или есть способ, которым вы можете туннелировать через SSL? Я думаю, что Java поддерживает SSL; Вы можете просто создать нужное безопасное гнездо и перейти оттуда.

Если вы знаете, какую клиентскую систему вы используете, подумайте над тем, чтобы вызвать клиент Cisco VPN для этой системы.

В противном случае вам придется копировать действия VPN-клиента. VPN-клиент выполняет аутентификацию и настройку сеанса с ISAKMP и устанавливает результат в ядро ​​для создания VPN-соединения. Доступны реализации ISAKMP; вам нужно только выяснить, какая аутентификация используется, и попытаться настроить ее. В этот момент у вас будет собственный VPN-клиент.

2 голосов
/ 22 апреля 2013

Вы можете прочитать Официальный документ Cisco, а после этого вы можете создать bat-файл со следующими данными: vpnclient connect [Имя соединения] pwd [Пароль] и отключить. Включите его в вашу Java-программу: Runtime.getRuntime (). Exec ("запуск cmd / c [путь к файлу bat]");

2 голосов
/ 22 мая 2009

Я использую пакет vpnc в linux для подключения к Cisco VPN моей компании, поскольку у нас нет совместимого linux-клиента. Впрочем, vpnc написан на c, поэтому вам придется выполнить порт.

...