Ниже представлен полный арсенал команд PowerShell для настройки любого DNS из статьи.
Ниже представлен полный арсенал команд PowerShell для настройки любого DNS из статьи. 🧠 Полный справочник публичных DNS: выбираем и настраиваем в Windows ===================== Мой PowerShell-арсенал для DNS: никакого GUI, только хардкор ===================== Привет, подписчики! 👋 На связи команда DevGeek.IT , 2026. ==================== Я перестал лазить в сетевые настройки Windows ещё в 2022-м. Всё, что связано с DNS, теперь делаю через PowerShell. Но не просто через `Set-DnsClientServerAddress` я собрал пачку скриптов, которые экономят мне часы в месяц. Делюсь. Первое, что бесит в стандартных гайдах — ручной поиск имени интерфейса. У меня ноутбук постоянно переключается между Ethernet и Wi-Fi, и каждый раз вбивать название адаптера — это каменный век. Сделал простой шаблон, который сам определяет активное подключение: `$iface = (Get-NetAdapter | Where-Object Status -eq "Up").Name` Дальше просто подставляю эту переменную в `Set-DnsClientServerAddress -InterfaceAlias $iface -ServerAddresses ($dns1, $dns2)`. И всегда очищаю кэш: `Clear-DnsClientCache`. Без этого изменения могут не примениться мгновенно. ==================== Готовые блоки для популярных DNS — просто копируй и вставляй. Например, для Cloudflare с защитой от малвари: ``` $iface = (Get-NetAdapter | Where-Object Status -eq "Up").Name Set-DnsClientServerAddress -InterfaceAlias $iface -ServerAddresses ("1.1.1.2 ", "1.0.0.2 ") Clear-DnsClientCache Write-Host "Cloudflare (с блокировкой) установлен!" -ForegroundColor Green ``` Для AdGuard: ``` $iface = (Get-NetAdapter | Where-Object Status -eq "Up").Name Set-DnsClientServerAddress -InterfaceAlias $iface -ServerAddresses ("94.140.14.14 ", "94.140.15.15 ") Clear-DnsClientCache ``` Полную шпаргалку по Quad9, Mullvad, ControlD, OpenDNS и Google я зафиксировал у себя в заметках — меняю провайдера за 5 секунд. ==================== Но самое интересное — это DoH (DNS-over-HTTPS). Тут стандартный подход не работает. Windows 10/11 не даст просто так включить шифрование для кастомного сервера — нужно сначала добавить его в список известных через `Add-DnsClientDohServerAddress`. Без этого пункт "Предпочитаемое шифрование DNS" в GUI не появится. Мой скрипт для Comss.one (он же работает на инфраструктуре ControlD, кстати): ``` $dohUrl = 'https://dns.comss.one/dns-query' Add-DnsClientDohServerAddress -ServerAddress '94.140.14.14 ' -DohTemplate $dohUrl -AllowFallbackToUdp $False -AutoUpgrade $True Add-DnsClientDohServerAddress -ServerAddress '94.140.15.15 ' -DohTemplate $dohUrl -AllowFallbackToUdp $False -AutoUpgrade $True ``` Ключевой параметр — `-AllowFallbackToUdp $False`. Он запрещает системе скатываться к незашифрованному DNS, если DoH вдруг недоступен. Безопасность превыше всего. ==================== После этого назначаю адаптеру эти же IP с флагом `-DoH $true`: `Set-DnsClientServerAddress -InterfaceAlias $iface -ServerAddresses ("94.140.14.14 ", "94.140.15.15 ") -DoH $true` Всё. Система теперь ходит на `dns.comss.one ` по HTTPS, и никакой провайдер не увидит, какие сайты я открываю. ==================== Для проверки не использую старый `nslookup`. Беру `Resolve-DnsName ya.ru | Select-Object Name, IP4Address`. Если прилетает актуальный IP Яндекса — всё ок. Для более детальной диагностики можно глянуть кэш: `Get-DnsClientCache | Select-Object Entry, Data`. Или, если хочется хардкора, запустить Wireshark и убедиться, что пакеты на 53-й порт больше не уходят. ==================== Важный нюанс: `Resolve-DnsName` сам по себе не поддерживает параметр `-Server` для DoH. Это исключительно диагностический инструмент, который использует системные настройки. Так что не пытайтесь скормить ему URL — не сработает. Если нужна более тонкая настройка с логированием, присмотритесь к DNSCrypt-proxy. Но для 95% задач встроенного клиента Windows хватает за глаза. ===================== Оставайтесь с нами, подписывайтесь на канал © DevGeek.IT , 2026 Впереди ещё много полезных разборов! 🚀