Для вашей задачи, туннелирования трафика с публичного сервера на компьютер за 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. **Документация и поддержка**: Выбирайте решения с хорошей документацией и поддержкой сообщества.
Надеюсь, эти рекомендации помогут вам выбрать подходящее решение для вашего проекта!