Можешь порекомендовать надежный VPN-клиент в виде библиотеки?

У меня есть задача: необходимо туннелировать трафик с порта X публичного сервера на порт Y компьютера, который находится за провайдерским NATом. На этом компьютере работает реверс-прокси, который перенаправляет HTTP и WebSocket запросы на локальные устройства. Я не хочу использовать SSH по нескольким причинам, а также не могу прибегнуть к сторонним сервисам — нужно создать самодостаточное решение. 

Конечное программное обеспечение должно быть настолько простым в использовании, чтобы разобраться с ним смог даже человек, который впервые видит компьютер. Я пришел к выводу, что мне следует внедрить VPN-клиент непосредственно в проект с прокси, написанный на C#. Какой VPN-клиент лучше выбрать? Я рассматривал wireguard-go, но наткнулся на информацию о том, что его часто блокируют провайдеры. Возможно, стоит обратить внимание на Amneziawg-go? 

Я не смог найти ни одного примера использования этих клиентов в своем C# коде и у меня нет возможности перечитывать весь интернет. Можете подсказать, где можно прочитать что-то полезное на эту тему? Есть ли советы по выбору других VPN-клиентов? Будут ли доступны примеры использования упомянутых мною клиентов?
  • 19 февраля 2025 г. 19:14
Ответы на вопрос 2
Для вашей задачи, туннелирования трафика с публичного сервера на компьютер за NAT, можно рассмотреть несколько вариантов VPN-вариантов, которые могут быть интегрированы с проектом на C#. Вот некоторые из них:

### 1. **OpenVPN**
OpenVPN — это широко используемый и надежный VPN-решение. Существует библиотека `OpenVPN 3 for C#`, которая позволяет интегрировать OpenVPN в ваше приложение. Она достаточно документирована и поддерживает различные функции, такие как аутентификация и шифрование.
- **Документация**: [OpenVPN 3](https://openvpn.net/vpn-server-resources/)

### 2. **WireGuard**
Хотя вы упомянули, что WireGuard может блокироваться провайдерами, он все же является одним из самых простых и эффективных VPN-протоколов. Существует библиотека `WireGuard-go`, хотя и на C#, вам может понадобиться обертка или интеграция через вызовы командной строки. Преимущества WireGuard в его простоте и высокой производительности.
- **Документация**: [WireGuard](https://www.wireguard.com/)

### 3. **SoftEther VPN**
SoftEther — это многофункциональный VPN-программный продукт, который также поддерживает множество протоколов. Он пакетный и может быть интегрирован с вашей C# программой. SoftEther имеет бесплатную / открыту версию.
- **Документация**: [SoftEther VPN](https://www.softether.org/)

### 4. **Tailscale**
Tailscale использует WireGuard для создания простого P2P-соединения между устройствами, но предоставляется в виде сервиса с управлением идентификацией. Имейте в виду, что он может не быть "самодостаточным" решением, так как использует свой сервер для управления соединениями, но настройка может быть простой для пользователя.
- **Документация**: [Tailscale](https://tailscale.com/)

### Примеры использования

К сожалению, примеры использования перечисленных библиотек на C# могут быть не всегда легко доступны, но вот несколько ссылок, которые могут помочь:

- **OpenVPN в C#:** поищите библиотеки OpenVPN, которые обеспечивают интерфейс C#. Иногда разработчики создают свои реализации и примеры на GitHub.
- **WireGuard через командную строку:** вы также можете вызвать команды WireGuard из кода C# с помощью `System.Diagnostics.Process`, что позволит управлять настройками WireGuard через командную строку.
- **SoftEther:** SoftEther предоставляет API и CLI, которые вы можете использовать в C#.

### Важные советы

1. **Тестирование**: Прежде чем интегрировать VPN в ваше приложение, обязательно протестируйте его работу, чтобы удостовериться в надежности и скорости соединения.
2. **Конфигурация и управление**: Подумайте о том, как пользователи вашего приложения будут управлять VPN (настройка, подключение, отключение и т.д.).
3. **Документация и поддержка**: Выбирайте решения с хорошей документацией и поддержкой сообщества.

Надеюсь, эти рекомендации помогут вам выбрать подходящее решение для вашего проекта!
zerotier может быть... он как раз имеет sdi для встраивания
Похожие вопросы