REGSTAR
← Все проекты
Иконка DnsSwitcherСтабильная версия · v1.5.0

> windows / управление dns

DnsSwitcher

Быстрое переключение DNS-профилей в Windows: приложение, системный трей, CLI, диагностика, автоматическое переключение при сбоях и Split DNS.

DnsSwitcher хранит переиспользуемые DNS-профили, применяет или сбрасывает их на выбранных сетевых адаптерах Windows, выполняет диагностику DNS, сайтов и производительности и добавляет необязательные DNS Health Failover и Split DNS на базе NRPT. Привилегированные операции можно передать Windows Agent через Named Pipes.

Windows x64C#.NET 10WPFNRPTMIT
Главное окно DnsSwitcher
v1.5.0Главное окно · без обрезки · открыть ↗
ПлатформаWindows x64
Релизv1.5.0
Опубликован19 августа 2026
ДоставкаSelf-contained
ЛицензияMIT

> контекст

Управление DNS без постоянного похода в свойства адаптера

Проект объединяет повседневное переключение, диагностику, привилегированные системные операции и сценарии восстановления в одном Windows-инструменте, сохраняя общую модель профилей для приложения, системного трея и CLI.

01 / проблема

Настройки DNS разбросаны по Windows

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

02 / подход

Одна модель профилей, несколько интерфейсов

WPF-приложение, системный трей и CLI используют общее ядро и Windows-инфраструктуру. Привилегированные изменения могут выполняться отдельной службой Agent, поэтому пользовательский интерфейс не обязан постоянно работать с повышенными правами.

> возможности

Основные возможности

Стабильный релиз покрывает полный рабочий сценарий приложения и системного трея, проверенный для v1.5.0.

01DNS

DNS-профили

Создание, редактирование, импорт, экспорт, применение и возврат к автоматическому DNS для выбранных сетевых адаптеров.

02UI

Приложение, Tray и CLI

WPF-приложение, настраиваемое меню системного трея и CLI для автоматизации и диагностики.

03TEST

Диагностика

Проверка DNS, доступности сайтов и тесты производительности для сравнения поведения и производительности резолверов.

04HLTH

DNS Health Failover

Необязательный мониторинг с порогами ошибок и восстановления, задержкой между переключениями и упорядоченной цепочкой резервных профилей и резервными профилями.

05SPLIT

Split DNS

Реальные правила Windows NRPT для направления выбранных пространств имён через конкретные DNS-профили.

06AGNT

Windows Agent

Привилегированная служба Windows, доступная через Named Pipes, чтобы UI и Tray не работали постоянно от администратора.

07THEME

Локализованный UI

Русский и английский интерфейс, темы System / Light / Dark и проверка масштабирования Windows.

08UPD

Проверенные обновления

Поиск стабильных GitHub Releases, строгий выбор установщика и проверка SHA-256 перед запуском.

09PKG

Installer и portable

Самодостаточный установщик Inno Setup и portable ZIP без отдельной установки .NET Desktop Runtime.

$ поток

Архитектура выполнения

UI, системный трей и CLI используют общую прикладную логику. Windows-реализации и привилегированные операции вынесены в отдельные слои.

01 / клиентыUI · Tray · CLIПрофили, диагностика, Health, Split DNS
02 / приложениеCore + Windows-инфраструктураВалидация, координация операций, хранилище, обновления
03 / привилегииWindows AgentNamed Pipes → DNS / NRPT / системные операции
SPLIT DNSSplit DNS использует Windows NRPT. Приложения со своим DNS/DoH stack могут обходить системную DNS-политику.

> интерфейс

Экраны приложения

Реальные скриншоты запущенной версии v1.5.0 из репозитория. Изображения показываются без принудительной обрезки.

$ архитектура

Архитектура решения

Решение отделяет общую прикладную логику от Windows-реализаций, привилегированных операций и пользовательских интерфейсов.

DnsSwitcher.Core

Модели, абстракции, валидация, orchestration DNS/профилей, SemVer и контракты обновлений.

Contracts

Протокол запросов и ответов для взаимодействия с привилегированным Agent.

Infrastructure.Windows

Windows DNS и NRPT, локальное JSON-хранилище, клиент Agent, загрузка обновлений, проверка контрольной суммы и запуск установщика.

WPF UI

Главное приложение, настройки, разделы «О программе» и «Помощь», диагностика, ручная проверка обновлений, редакторы Health и Split DNS.

Tray

Быстрые действия с профилями/системой и ограниченная по частоте автоматическая проверка обновлений и применение настроек меню без перезапуска.

Agent.Windows

Windows Service + Named Pipe server для привилегированных DNS/NRPT/service операций.

> инженерные решения

Инженерные решения

Архитектура делает состояние явным, упрощает восстановление и предпочитает штатные механизмы Windows скрытым фоновым обходам.

Разделение прав

Не держать UI постоянно повышенным

Agent выполняет привилегированные операции как Windows Service, а UI/Tray/CLI общаются с ним через версионируемый протокол Named Pipes.

Failover

Не допускать постоянных переключений профиля

DNS Health Failover переключает профиль только после заданного порога ошибок, выдерживает заданный интервал между переключениями и требует успешных проверок для возврата в исправное состояние.

Split DNS

NRPT вместо локального DNS-прокси на порту 53

NRPT даёт штатную маршрутизацию пространств имён Windows без перенастройки системного DNS на localhost и без отдельного DNS-демона.

Обновления

Проверять перед выполнением

Клиент принимает только ожидаемые файлы релиза GitHub по HTTPS и не запускает установщик, пока SHA-256 не совпадёт с SHA256SUMS.txt.

Поставка

Self-contained релизы

Установщик и portable ZIP включают необходимую среду выполнения .NET и уменьшают зависимости от состояния целевой машины.

Данные

Хранить пользовательскую конфигурацию локально

Профили, UI/Tray-настройки, состояние Health, правила Split DNS и состояние проверки обновлений находятся в data/config и сохраняются при обычном обновлении.

> технологии

Технологический стек

C# / .NET 10язык и среда выполнения
WPFнастольный интерфейс
Windows Formsсистемный трей
Named PipesAgent IPC
Windows NRPTSplit DNS
JSON-файлылокальные настройки и состояние
xUnitтесты
Inno Setup 6установщик
PowerShell + dotnetсборка и выпуск

> приватность

ЛОКАЛЬНЫЕ ДАННЫЕ

Конфигурация остаётся на компьютере.

DnsSwitcher не требует облачного аккаунта. Профили, настройки, служебное состояние и логи хранятся локально. Автоматическая проверка обновлений обращается только к настроенному публичному источнику GitHub Releases и может быть отключена.

  • Облачный аккаунт не нужен
  • DNS-профили хранятся локально
  • Автоматическую проверку обновлений можно отключить
  • Рабочая конфигурация и логи исключены из Git
  • Установленное обновление сохраняет data/config

> безопасность

ЯВНЫЕ ГРАНИЦЫ

Обновления и повышение прав имеют явные границы.

Клиент обновлений не содержит встроенного PAT/OAuth-учётных данных. Привилегированные DNS/NRPT-операции можно изолировать в службе Agent, а скачанный установщик проверяется до запуска.

  • Нет встроенного GitHub-токена
  • Проверяются ожидаемый репозиторий и HTTPS-путь релиза
  • Строго проверяется имя файла установщика
  • SHA-256 должен совпасть до запуска
  • Стабильный канал игнорирует черновики и предварительные релизы

> ограничения

Ограничения Windows-модели

Проект предназначен только для Windows x64. Split DNS зависит от NRPT и не гарантирует контроль приложений, которые используют собственный DNS/DoH. Точная минимальная версия Windows отдельно не зафиксирована в метаданных проекта.

$ стабильный_релиз

DnsSwitcher v1.5.0

v1.5.0 — текущий стабильный релиз для Windows x64. Финальная проверка охватила UI, Tray, CLI, Agent, DNS Health, Split DNS, установщика и portable-пакета, локализацию, масштабирование и обновление поверх v1.4.1 с сохранением данных.

Installer SHA-256B58E03CB8CAA75F43068A920FCC3163E1E13A5D8B62639162E861A4DC6EAC90E
Portable SHA-2565AD5D8D0626E82203F61CD88F53D58C7C4CC5D6F9F01F40AB50C22AC679139F2
Версия1.5.0
ПлатформаWindows x64
Установщик134 354 705 байт
Portable193 337 740 байт
RuntimeSelf-contained
КаналСтабильный

> ссылки проекта

Разработка и документация

GitHub остаётся источником истины для кода, релизов, задач, архитектуры, результатов тестирования и описаний релизов.