Добавить в корзинуПозвонить
Найти в Дзене
Настройки Windows

🕵️ DNS-диагностика: авторский скрипт для подписчиков. Проверяет, не обманывает ли вас роутер, провайдер и даже браузер.

Я создал авторский PowerShell-скрипт для вас. Без сторонних программ, установок и подписок. Один файл в терминале — и полная картина: что прописано в системе, куда реально стучатся приложения, не подменяет ли провайдер DNS. Недавно была тема про DNS и были вопросы где проверить поэтому решил помочь. Тестировал на себе несколько дней. Делюсь эксклюзивно. На моём канале все скрипты проверены и безопасны. Не используйте скрипты с неизвестных ресурсов!!! 🛡️ ВЗНОС В РАЗВИТИЕ КАНАЛА И СОЗДАНИЕ ПОЛЕЗНЫХ СКРИПТОВ 🛡️ 1️⃣ Показывает DNS-настройки всех адаптеров 2️⃣ Ловит активные подключения (включая зашифрованные DoH/DoT) 3️⃣ Проверяет реальный IP DNS-резолвера через Google, OpenDNS, Akamai, UltraDNS 4️⃣ Показывает кэш DNS 5️⃣ Сравнивает внешний IP с DNS IP для выявления утечек Всё — под красивой полоской загрузки. Шаг 1. Откройте PowerShell 7 от имени администратора (чёрная иконка pwsh). 📥 Скачать: https://github.com/PowerShell/PowerShell/releases Шаг 2. Разрешите запуск скриптов (один раз
Оглавление

Я создал авторский PowerShell-скрипт для вас. Без сторонних программ, установок и подписок. Один файл в терминале — и полная картина: что прописано в системе, куда реально стучатся приложения, не подменяет ли провайдер DNS. Недавно была тема про DNS и были вопросы где проверить поэтому решил помочь.

Тестировал на себе несколько дней. Делюсь эксклюзивно.

На моём канале все скрипты проверены и безопасны. Не используйте скрипты с неизвестных ресурсов!!!

🛡️ ВЗНОС В РАЗВИТИЕ КАНАЛА И СОЗДАНИЕ ПОЛЕЗНЫХ СКРИПТОВ 🛡️

🎯 Что умеет скрипт

1️⃣ Показывает DNS-настройки всех адаптеров

2️⃣ Ловит активные подключения (включая зашифрованные DoH/DoT)

3️⃣ Проверяет реальный IP DNS-резолвера через Google, OpenDNS, Akamai, UltraDNS

4️⃣ Показывает кэш DNS

5️⃣ Сравнивает внешний IP с DNS IP для выявления утечек

Всё — под красивой полоской загрузки.

🚀 Запуск (3 шага)

Шаг 1. Откройте PowerShell 7 от имени администратора (чёрная иконка pwsh).

📥 Скачать: https://github.com/PowerShell/PowerShell/releases

Шаг 2. Разрешите запуск скриптов (один раз):

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

Шаг 3. Сохраните код ниже в файл DNS-Check.ps1 и запустите:

.\DNS-Check.ps1

📜 Скрипт

#Requires -Version 7.0
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$Host.UI.RawUI.WindowTitle = "DNS Diagnostic Tool"

function Show-Progress {
param([int]$Percent, [string]$Activity)
$barWidth = 40
$filled = [math]::Floor($barWidth * $Percent / 100)
$empty = $barWidth - $filled
$bar = "[" + ("█" * $filled) + ("░" * $empty) + "]"
Write-Host "`r $bar $Percent% $Activity" -NoNewline -ForegroundColor Yellow
}

function Clear-Progress { Write-Host "`r" + (" " * 80) + "`r" -NoNewline }

function Test-DnsResolver {
param([string]$Name, [string]$Type, [string]$Query)
try {
$res = Resolve-DnsName -Name $Query -Type $Type -ErrorAction Stop
if ($Type -eq "TXT") { $ip = ($res.Strings -join "").Split(' ')[0] } else { $ip = $res.IPAddress }
return @{Name=$Name; IP=$ip; Status="OK"}
} catch { return @{Name=$Name; IP="N/A"; Status="Failed"} }
}

function Get-ExternalIP {
param([string]$Url, [string]$Name)
try {
$response = Invoke-RestMethod -Uri $Url -TimeoutSec 5 -ErrorAction Stop
if ($Url -match "ipify") { return @{Name=$Name; IP=$response.ip; Status="OK"} }
elseif ($Url -match "db-ip") { return @{Name=$Name; IP=$response.ipAddress; Status="OK"} }
elseif ($Url -match "cloudflare") {
$ip = ($response -split "`n" | Where-Object { $_ -match "^ip=" }) -replace "ip=", ""
return @{Name=$Name; IP=$ip; Status="OK"}
}
} catch { return @{Name=$Name; IP="N/A"; Status="Failed"} }
}

Show-Progress -Percent 10 -Activity "Опрос сетевых интерфейсов..."
$adapters = Get-NetAdapter | Where-Object Status -eq 'Up'
$adaptersData = foreach ($adapter in $adapters) {
$ipv4Dns = (Get-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -AddressFamily IPv4 -ErrorAction SilentlyContinue).ServerAddresses
$ipv6Dns = (Get-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -AddressFamily IPv6 -ErrorAction SilentlyContinue).ServerAddresses
[PSCustomObject]@{
Name = $adapter.Name; Desc = $adapter.InterfaceDescription
IPv4 = if($ipv4Dns){$ipv4Dns -join ', '}else{'Не задано (DHCP)'}
IPv6 = if($ipv6Dns){$ipv6Dns -join ', '}else{'Не задано (DHCP)'}
}
}

Show-Progress -Percent 20 -Activity "Анализ активных подключений..."
$connectionsData = @()
try {
$connections = Get-NetTCPConnection -State Established -ErrorAction Stop | Where-Object { $_.RemotePort -in @(53, 853, 443) }
if ($connections) {
$processed = $connections | ForEach-Object {
$proc = (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName
[PSCustomObject]@{
RemoteIP = $_.RemoteAddress; RemotePort = $_.RemotePort
Process = if($proc) { $proc } else { "System (PID: $($_.OwningProcess))" }
}
}
foreach ($group in ($processed | Group-Object RemoteIP, Process)) {
$port = ($group.Group | Select-Object -First 1).RemotePort
$proto = switch ($port) { 53 {"Standard DNS"} 853 {"DNS over TLS (DoT)"} 443 {"DNS over HTTPS (DoH)"} }
$parts = $group.Name -split ','
$connectionsData += [PSCustomObject]@{ IP=$parts[0].Trim(); Process=$parts[1].Trim(); Protocol=$proto }
}
}
} catch {}

$tests = @(
@{Name="Google"; Type="TXT"; Query="o-o.myaddr.l.google.com"},
@{Name="OpenDNS"; Type="A"; Query="myip.opendns.com"},
@{Name="Akamai"; Type="A"; Query="whoami.akamai.net"},
@{Name="UltraDNS"; Type="TXT"; Query="whoami.ultradns.net"}
)
$dnsTestsData = @(); $step = 10
foreach ($test in $tests) {
Show-Progress -Percent (30 + $step) -Activity "Тест DNS: $($test.Name)..."
$dnsTestsData += Test-DnsResolver -Name $test.Name -Type $test.Type -Query $test.Query
$step += 10
}

Show-Progress -Percent 75 -Activity "Чтение кэша DNS..."
$cacheData = try { Get-DnsClientCache -ErrorAction Stop | Select-Object -First 10 } catch { @() }

$urls = @(
@{Url="https://api.ipify.org?format=json"; Name="ipify.org"},
@{Url="https://api.db-ip.com/v2/free/self"; Name="db-ip.com"},
@{Url="https://cloudflare.com/cdn-cgi/trace"; Name="cloudflare.com"}
)
$httpApiData = @(); $step = 5
foreach ($u in $urls) {
Show-Progress -Percent (80 + $step) -Activity "HTTP API: $($u.Name)..."
$httpApiData += Get-ExternalIP -Url $u.Url -Name $u.Name
$step += 5
}

Show-Progress -Percent 100 -Activity "Завершение..."
Start-Sleep -Milliseconds 500
Clear-Progress

Write-Host "======================================================================" -ForegroundColor DarkGray
Write-Host " 1. Сетевые интерфейсы и прописанные DNS-серверы" -ForegroundColor Cyan
Write-Host "======================================================================" -ForegroundColor DarkGray
foreach ($a in $adaptersData) {
Write-Host "`nИнтерфейс: $($a.Name) ($($a.Desc))" -ForegroundColor Yellow
Write-Host " IPv4 DNS: $($a.IPv4)"; Write-Host " IPv6 DNS: $($a.IPv6)"
}

Write-Host "`n======================================================================" -ForegroundColor DarkGray
Write-Host " 2. Активные DNS-подключения (TCP 53, 853, 443)" -ForegroundColor Cyan
Write-Host "======================================================================" -ForegroundColor DarkGray
if (-not $connectionsData) { Write-Host " Активных TCP-подключений к DNS не обнаружено." -ForegroundColor DarkYellow }
else { foreach ($c in $connectionsData) { Write-Host " -> IP: $($c.IP) | Процесс: $($c.Process) | Протокол: $($c.Protocol)" -ForegroundColor Green } }

Write-Host "`n======================================================================" -ForegroundColor DarkGray
Write-Host " 3. Тест реального IP DNS-резолвера" -ForegroundColor Cyan
Write-Host "======================================================================" -ForegroundColor DarkGray
foreach ($t in $dnsTestsData) {
if ($t.Status -eq "OK") { Write-Host " [$($t.Name)] DNS обрабатывает IP: $($t.IP)" -ForegroundColor Green }
else { Write-Host " [$($t.Name)] Не удалось получить ответ." -ForegroundColor Red }
}

Write-Host "`n======================================================================" -ForegroundColor DarkGray
Write-Host " 4. Недавний кэш DNS-клиента" -ForegroundColor Cyan
Write-Host "======================================================================" -ForegroundColor DarkGray
if (-not $cacheData) { Write-Host " Кэш DNS пуст." -ForegroundColor DarkYellow }
else { $cacheData | ForEach-Object { Write-Host " $($_.Name) | TTL: $($_.TimeToLive)" } }

Write-Host "`n======================================================================" -ForegroundColor DarkGray
Write-Host " 5. Внешний IP через HTTP API" -ForegroundColor Cyan
Write-Host "======================================================================" -ForegroundColor DarkGray
foreach ($h in $httpApiData) {
if ($h.Status -eq "OK") { Write-Host " [$($h.Name)] Внешний IP: $($h.IP)" -ForegroundColor Green }
else { Write-Host " [$($h.Name)] Не удалось получить ответ." -ForegroundColor Red }
}

Write-Host "`n" -NoNewline
Write-Host "Диагностика завершена!" -ForegroundColor Magenta
Write-Host "Для проверки утечек браузера посетите:" -ForegroundColor Magenta
Write-Host " - https://dnscheck.tools" -ForegroundColor Magenta
Write-Host " - https://controld.com/tools/dns-leak-test" -ForegroundColor Magenta

Write-Host "`n" -NoNewline
Write-Host "Нажмите 'q' для закрытия окна..." -ForegroundColor Yellow
while ([System.Console]::KeyAvailable) { [System.Console]::ReadKey($true) | Out-Null }
while ($true) {
$key = [System.Console]::ReadKey($true)
if ($key.Key -eq 'Q' -or $key.Key -eq 'q') { break }
}
-2

📖 Как читать результат

🔹 Раздел 1 — что прописано в Windows. IP роутера (192.168.x.x) — это нормально, он работает как прокси.

🔹 Раздел 2 — кто стучится в DNS. Порт 443 (DoH) = шифрованный DNS, провайдер ничего не видит.

🔹 Раздел 3детектор лжи. IP от Google/OpenDNS/Akamai — это реальный резолвер. Не совпадает с настройками? Вас обманывают.

🔹 Раздел 5 — внешний IP. Сравните с разделом 3: DNS IP — Cloudflare, внешний IP — домашний? DNS зашифрован, всё ок.

💬 Итог

DNS — фундамент вашей приватности. Сохраните скрипт — пригодится не раз.

👇 Поставьте палец вверх, сохраните в закладки и подпишитесь на «Настройки Windows» — впереди ещё много полезного.

В комментариях напишите: какой DNS используете и проверяли ли, не подменяет ли его провайдер?

-3

💳 Донат через Ozon (от 10 ₽. Получатель: Александр Г.)

Спасибо всем, кто поддерживает меня финансово ! Очень приятно осознавать, что мой контент полезен, а труд не остаётся без внимания ❤️

#DNS #PowerShell #Windows11 #Windows10 #настройкиWindows #безопасность #приватность #роутер #провайдер #DNSoverHTTPS #утечкиDNS #скрипт #диагностика #сеть #интернет #Cloudflare #GoogleDNS #OpenDNS #DoH #DoT #кибербезопасность #Windows #администрирование #ИТ #технологии #цифроваягигиена

✴️ Дорогие друзья. Если статья оказалась полезна, одна СТЕЛЛА от вас = мощная реклама для сотен людей. Поддержите контент, чтобы проблемы и решения находились быстрее! ✴️

С уважением. Александр, канал "Настройки Windows" на Яндекс.Дзен