Как я могу реализовать функции туннелирования, подобные NetMod (введение полезной нагрузки, ротатор IP, режим DNS, раздеC#

Место общения программистов C#
Anonymous
Как я могу реализовать функции туннелирования, подобные NetMod (введение полезной нагрузки, ротатор IP, режим DNS, разде

Сообщение Anonymous »

Я разрабатываю клиент Windows VPN/туннелирования на C# (.NET 10, Windows Forms), который использует Wintun + tun2socks для создания общесистемного туннеля. Я хочу реализовать раздельное туннелирование, чтобы выбранные приложения (исполняемые файлы процесса) отправляли свой трафик через адаптер Wintun, в то время как другие приложения использовали обычный интерфейс.
Что я пробовал
  • Изменение таблицы системных маршрутов (RouteAdd/RouteDelete) до/после запуска: работает, но работает грубо и влияет на весь трафик, соответствующий маршруту.
  • Перехват и повторное внедрение на основе WinDivert для каждого процесса: многообещающе, но сложно создать пару сокетов для надежной обработки идентификаторов, и возникают проблемы с производительностью.
  • Драйвер выноски платформы фильтрации Windows (WFP): найдены ссылки, но я не хочу писать драйвер ядра, если это возможно.
Цель/вопрос
Каковы стандартные и надежные подходы Windows для маршрутизации трафика от конкретного процесса через определенный интерфейс (Wintun) из пользовательский режим C #? В частности:
  • Существует ли поддерживаемый API или шаблон пользовательского режима для привязки исходящих сокетов процесса к определенному интерфейсу или маршруту без драйвера ядра?
  • Если нет, то рекомендуемый подход:
    • изменить IP-маршруты (грубо) или
    • использовать WinDivert в пользовательском режиме (и каковы предостережения) или
    • реализовать драйвер WFP (насколько распространено/необходимо)?
  • Практические соображения: производительность, надежность, требуемые повышенные привилегии, подводные камни, которые нарушают работу приложений (игры/VoIP).
Пожалуйста, включите ссылки или короткие примеры библиотек/API для изучения на C# (.NET). Я стараюсь, если возможно, избегать написания драйвера ядра; если драйвер необходим, полезно четкое обоснование.
Среда:
  • Windows 11
  • .NET 10
  • Wintun + tun2socks (процесс пользовательского режима)
  • Цель: разделенный туннель для каждого процесса как для TCP, так и для UDP (игры)
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... -ip-rotato

Вернуться в «C#»