Подключение к VPN без установки клиентского программного обеспечения

Я должен иногда писать программное обеспечение для установки сокета с определенным сервером, находящимся в 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 ответов


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

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

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

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

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

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


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


вы можете прочитать официальный документ cisco, и после этого вы можете создать файл bat с этими данными: vpnclient connect [имя соединения] pwd [пароль] и отключиться. Включите его в свою программу java: Во время выполнения.getRuntime().exec ("cmd / c start [путь к файлу bat]");