Как подключиться к VPN-серверу с помощью Delphi?

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

Я протестировал некоторые компоненты с помощью RAS Api, они работают! но с помощью подключения Windows .

Как я могу сделать это без какой-либо зависимости от подключений Windows?

1 ответ

Проблема с этим вопросом

"VPN" означает "Виртуальная частная сеть". Это способ сделать частную сеть доступной для вашего компьютера, возможно, безопасным способом, чтобы ваш компьютер мог использовать стандартные протоколы IP, как если бы он был физически подключен к частной сети.

Операционная система должна знать об этой сети, поэтому, конечно, все реализации VPN используют "соединения Windows". С другой точки зрения: когда вы подключены к VPN, вы можете открыть TCP-соединение с IP-адресом в частной сети, как если бы он был в вашей локальной сети. Поскольку задачей операционной системы является настройка вашего TCP-соединения и маршрутизация ваших пакетов TCP/IP, конечно, она должна знать о VPN! Если этого не произойдет, он просто перенаправит все ваши запросы на данный IP-адрес на маршрутизатор по умолчанию и завершится с ошибкой "no route to destination" сообщение (или "time out", если ваш маршрутизатор недостаточно любезен, чтобы сообщить вашей системе, он не знает, что такое частный IP).

Это можно сделать?

С теоретической точки зрения, конечно, вы можете полностью обойти Windows, но тогда вам придется "катить все". Вы не можете использовать службы Windows IP, вам придется реализовать свой собственный TCP. Я уверен, что есть около миллиона других мелочей, которые нуждаются в повторной реализации.

Для начала я бы посмотрел на Open VPN: он с открытым исходным кодом и доступен для Windows. Он использует протокол UDP в качестве основы для реализации VPN, в отличие от Windows VPN (который использует GRE - General Routing Encapsulation, протокол 47). Open VPN, конечно же, использует "подключение к Windows" для выполнения своей работы, поскольку оно направлено на предоставление полезного сервиса, но вы можете использовать исходный код в качестве основы для своей собственной реализации.

Лично я бы даже не подумал об этом, я просто показываю вам путь и доказываю, что это возможно.

Что нужно сделать

Я предполагаю, что вы хотите какой-то безопасный канал связи с вашим собственным сервисом. Изучите простые безопасные соединения, протоколы туннелирования и прокси.

Если это нужно сделать для одного сервиса на одном сервере, я бы рассмотрел простую реализацию SSL. Еще лучше, посмотрите на использование HTTPS.

Если вам нужно получить доступ ко многим различным сервисам на возможно разных серверах в данной частной сети, я бы посмотрел прокси.

Другие вопросы по тегам