Update check-dns-server.ps1

This commit is contained in:
Markus Fleschutz 2023-02-15 11:02:53 +01:00
parent 5f4d05f349
commit 73cdf18b94

View File

@ -2,7 +2,7 @@
.SYNOPSIS .SYNOPSIS
Check DNS servers Check DNS servers
.DESCRIPTION .DESCRIPTION
This PowerShell script checks the speed of public DNS server. This PowerShell script measures the availability and latency of public DNS servers and lists it.
.EXAMPLE .EXAMPLE
PS> ./check-dns-server PS> ./check-dns-server
.LINK .LINK
@ -11,42 +11,46 @@
Author: Markus Fleschutz | License: CC0 Author: Markus Fleschutz | License: CC0
#> #>
function CheckDNS { param($Name, $PriIPv4, $SecIPv4) function CheckDNS { param($Name, $IPv4Pri, $IPv4Sec)
$StopWatch = [system.diagnostics.stopwatch]::startNew() $StopWatch = [system.diagnostics.stopwatch]::startNew()
$null = (nslookup fleschutz.de $PriIPv4 2>$null) $null = (nslookup fleschutz.de $IPv4Pri 2>$null)
[int]$Elapsed1 = $StopWatch.Elapsed.TotalMilliseconds [int]$Elapsed1 = $StopWatch.Elapsed.TotalMilliseconds
$StopWatch = [system.diagnostics.stopwatch]::startNew() $StopWatch = [system.diagnostics.stopwatch]::startNew()
$null = (nslookup fleschutz.de $SecIPv4 2>$null) $null = (nslookup fleschutz.de $IPv4Sec 2>$null)
[int]$Elapsed2 = $StopWatch.Elapsed.TotalMilliseconds [int]$Elapsed2 = $StopWatch.Elapsed.TotalMilliseconds
" `"$Name`"; `"$PriIPv4`"; `"$SecIPv4`"; `"$Elapsed1 ms / $Elapsed2 ms`"; " New-Object PSObject -Property @{ DNS_server=$Name; IPv4="$IPv4Pri / $IPv4Sec"; Latency="$Elapsed1 / $Elapsed2 ms" }
}
function ListDNSServerSpeed {
Write-Progress "Measuring latency of public DNS servers..."
CheckDNS "Cloudflare (standard)" 1.1.1.1 1.0.0.1
CheckDNS "Cloudflare (with malware blocklist)" 1.1.1.2 1.0.0.2
CheckDNS "Cloudflare (with malware+adult blocklist)" 1.1.1.3 1.0.0.3
CheckDNS "DNS0.eu (standard)" 193.110.81.0 185.253.5.0
CheckDNS "DNS0.eu (for kids)" 193.110.81.1 185.253.5.1
CheckDNS "DNS0.eu (zero)" 193.110.81.9 185.253.5.9
CheckDNS "Google Public DNS" 8.8.8.8 8.8.4.4
CheckDNS "Level3 one" 4.2.2.1 4.2.2.1
CheckDNS "Level3 two" 4.2.2.2 4.2.2.2
CheckDNS "Level3 three" 4.2.2.3 4.2.2.3
CheckDNS "Level3 four" 4.2.2.4 4.2.2.4
CheckDNS "Level3 five" 4.2.2.5 4.2.2.5
CheckDNS "Level3 six" 4.2.2.6 4.2.2.6
CheckDNS "OpenDNS Basic" 208.67.222.222 208.67.220.220
CheckDNS "OpenDNS Family Shield" 208.67.222.123 208.67.220.123
CheckDNS "OpenNIC" 94.247.43.254 94.247.43.254
CheckDNS "Quad9 (with malware blocklist, with DNSSEC)" 9.9.9.9 9.9.9.9
CheckDNS "Quad9 (no malware blocklist, no DNSSEC)" 9.9.9.10 9.9.9.10
CheckDNS "Quad9 (with malware blocklist, with DNSSEC, with EDNS)" 9.9.9.11 9.9.9.11
CheckDNS "Quad9 (with malware blocklist, with DNSSEC, NXDOMAIN only)" 9.9.9.12 9.9.9.12
CheckDNS "Verisign Public DNS" 64.6.64.6 64.6.65.6
Write-Progress -completed " "
} }
try { try {
Write-Progress "Measuring speed of public DNS servers..." ListDNSServerSpeed | Format-Table -property @{e='DNS_server';width=50},@{e='IPv4';width=32},@{e='Latency';width=15}
" `"DNS SERVER`"; `"PRIMARY IPv4`"; `"SECONDARY IPv4`"; `"LATENCY`"; "
CheckDNS "Cloudflare (standard)" 1.1.1.1 1.0.0.1
CheckDNS "Cloudflare (with malware blocklist)" 1.1.1.2 1.0.0.2
CheckDNS "Cloudflare (with malware+adult blocklist)" 1.1.1.3 1.0.0.3
CheckDNS "DNS0.eu (standard)" 193.110.81.0 185.253.5.0
CheckDNS "DNS0.eu (kids)" 193.110.81.1 185.253.5.1
CheckDNS "DNS0.eu (zero)" 193.110.81.9 185.253.5.9
CheckDNS "Google Public DNS" 8.8.8.8 8.8.4.4
CheckDNS "Level3 one" 4.2.2.1 4.2.2.1
CheckDNS "Level3 two" 4.2.2.2 4.2.2.2
CheckDNS "Level3 three" 4.2.2.3 4.2.2.3
CheckDNS "Level3 four" 4.2.2.4 4.2.2.4
CheckDNS "Level3 five" 4.2.2.5 4.2.2.5
CheckDNS "Level3 six" 4.2.2.6 4.2.2.6
CheckDNS "OpenDNS Basic" 208.67.222.222 208.67.220.220
CheckDNS "OpenDNS Family Shield" 208.67.222.123 208.67.220.123
CheckDNS "OpenNIC" 94.247.43.254 94.247.43.254
CheckDNS "Quad9 (with malware blocklist, with DNSSEC)" 9.9.9.9 9.9.9.9
CheckDNS "Quad9 (no malware blocklist, no DNSSEC)" 9.9.9.10 9.9.9.10
CheckDNS "Quad9 (with malware blocklist, with DNSSEC, with EDNS)" 9.9.9.11 9.9.9.11
CheckDNS "Quad9 (with malware blocklist, with DNSSEC, NXDOMAIN only)" 9.9.9.12 9.9.9.12
CheckDNS "Verisign Public DNS" 64.6.64.6 64.6.65.6
exit 0 # success exit 0 # success
} catch { } catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"