Как я могу реализовать функции туннелирования, подобные 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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