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

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

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

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

1 Ответ

4 голосов
/ 11 апреля 2011

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

«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.

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

...