[GH-ISSUE #3601] DNS Resolution Issues on Windows 11 Enterprise (Related to Issue #3332) #7550

Open
opened 2026-08-05 01:13:29 -04:00 by saavagebueno · 3 comments
Owner

Originally created by @OGDeguy on GitHub (Mar 28, 2025).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/3601

Describe the problem

DNS Resolution does not work on Windows 11 enterprise after GPOs have been applied. We have seen it work intermittently after previous updates have been applied, but generally it is not working correctly which is frustrating our users.

The patch performed by @lixmal does appear to have helped. But from what I can tell there is still a logic bug here. I can look at the code myself, but will not have the time to set aside for this for at least another month.

My apologies to the developers, work has been busy and I have not had the time to troubleshoot this issue and contribute as much as I wanted to.

To Reproduce

Steps to reproduce the behavior:

  1. Configure netbird on a Windows 11 Enterprise system
  2. Join the system to an Active Directory domain
  3. Configure netbird DNS resolution for your custom domain
  4. Ensure your Windows 11 has got its policy applied gpupdate /force
  5. Reboot the Windows 11 system.
  6. Connect to Netbird
  7. You might briefly see the DNS resolution work. However, in time it will stop working.
  8. When DNS resolution fails check your Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ registry key and find your netbird adapter. You will see something like the following:

Image
9. Manually filling in the missing values will resolve the DNS resolution issues:

Image

I suspect netbird needs to be much more aggressive when applying these settings on the interface. Ideally, periodically checking to ensure the desired configuration is still present.

Expected behavior

A clear and concise description of what you expected to happen.

DNS resolution should work as per the defined netbird configuration. In our environment, only Windows clients are affected by this issue.

Are you using NetBird Cloud?

Please specify whether you use NetBird Cloud or self-host NetBird's control plane. Self-hosted

NetBird version

v0.39.1

Is any other VPN software installed?

If yes, which one? No

Debug output

To help us resolve the problem, please attach the following debug output

netbird status -dA

As well as the file created by

netbird debug for 1m -AS

We advise reviewing the anonymized output for any remaining personal information.

Screenshots

If applicable, add screenshots to help explain your problem.

Additional context

Add any other context about the problem here.

Have you tried these troubleshooting steps?

  • Checked for newer NetBird versions
  • Searched for similar issues on GitHub (including closed ones)
  • Restarted the NetBird client
  • Disabled other VPN software
  • Checked firewall settings
Originally created by @OGDeguy on GitHub (Mar 28, 2025). Original GitHub issue: https://github.com/netbirdio/netbird/issues/3601 **Describe the problem** DNS Resolution does not work on Windows 11 enterprise after GPOs have been applied. We have seen it work intermittently after previous updates have been applied, but generally it is not working correctly which is frustrating our users. The patch performed by @lixmal does appear to have helped. But from what I can tell there is still a logic bug here. I can look at the code myself, but will not have the time to set aside for this for at least another month. > My apologies to the developers, work has been busy and I have not had the time to troubleshoot this issue and contribute as much as I wanted to. **To Reproduce** Steps to reproduce the behavior: 1. Configure `netbird` on a Windows 11 Enterprise system 2. Join the system to an Active Directory domain 3. Configure `netbird` DNS resolution for your custom domain 4. Ensure your Windows 11 has got its policy applied `gpupdate /force` 5. Reboot the Windows 11 system. 6. Connect to Netbird 7. You might briefly see the DNS resolution work. However, in time it will stop working. 8. When DNS resolution fails check your `Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\` registry key and find your `netbird` adapter. You will see something like the following: ![Image](https://github.com/user-attachments/assets/aadcbfcc-c9fa-4f27-94f7-029e8bc838ff) 9. Manually filling in the missing values will resolve the DNS resolution issues: ![Image](https://github.com/user-attachments/assets/d4401833-082c-43a9-9334-fdfc944256eb) > I suspect `netbird` needs to be much more aggressive when applying these settings on the interface. Ideally, periodically checking to ensure the desired configuration is still present. **Expected behavior** A clear and concise description of what you expected to happen. DNS resolution should work as per the defined `netbird` configuration. In our environment, only Windows clients are affected by this issue. **Are you using NetBird Cloud?** Please specify whether you use NetBird Cloud or self-host NetBird's control plane. **Self-hosted** **NetBird version** `v0.39.1` **Is any other VPN software installed?** If yes, which one? **No** **Debug output** To help us resolve the problem, please attach the following debug output netbird status -dA As well as the file created by netbird debug for 1m -AS We advise reviewing the anonymized output for any remaining personal information. **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. **Have you tried these troubleshooting steps?** - [ ] Checked for newer NetBird versions - [ ] Searched for similar issues on GitHub (including closed ones) - [ ] Restarted the NetBird client - [ ] Disabled other VPN software - [ ] Checked firewall settings
saavagebueno added the triage-needed label 2026-08-05 01:13:29 -04:00
Author
Owner

@OGDeguy commented on GitHub (Apr 17, 2025):

For those still struggling with this issue, you should be able to use a variant of the script below to fix the problem until the Netbird folks have a chance to patch it:

# Define the path to the interfaces in the registry
$interfacesPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces'

# Get all subkeys (interfaces) under the specified path
Get-ChildItem $interfacesPath | ForEach-Object {
    # Check if the interface has a SearchList value that starts with "example.wan"
    $searchList = Get-ItemProperty $_.PSPath -Name 'SearchList' -ErrorAction SilentlyContinue
    
    if ($searchList -ne $null -and $searchList.SearchList -like "*example.wan*") {
        # Update the SearchList value
        Set-ItemProperty $_.PSPath -Name 'SearchList' -Value 'example.wan,examplecorp.com,example.com,95.your_subnet.in-addr.arpa'
        
        # Set the NameServer to 
        Set-ItemProperty $_.PSPath -Name 'NameServer' -Value 'YOUR_DNS_SERVER'
        
        # Set domain 

        Set-ItemProperty $_.PSPath -Name 'Domain' -Value 'example.wan'

        Write-Host "Updated interface: $($_.Name)" -ForegroundColor Green
        # Exit after the first match is found
        Break
    }
}

# If no matching interface was found, display a message
if ($found -eq $false) {
    Write-Host "No interface with SearchList containing 'example.wan' was found." -ForegroundColor Red
}
<!-- gh-comment-id:2813676559 --> @OGDeguy commented on GitHub (Apr 17, 2025): For those still struggling with this issue, you should be able to use a variant of the script below to fix the problem until the `Netbird` folks have a chance to patch it: ```powershell # Define the path to the interfaces in the registry $interfacesPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces' # Get all subkeys (interfaces) under the specified path Get-ChildItem $interfacesPath | ForEach-Object { # Check if the interface has a SearchList value that starts with "example.wan" $searchList = Get-ItemProperty $_.PSPath -Name 'SearchList' -ErrorAction SilentlyContinue if ($searchList -ne $null -and $searchList.SearchList -like "*example.wan*") { # Update the SearchList value Set-ItemProperty $_.PSPath -Name 'SearchList' -Value 'example.wan,examplecorp.com,example.com,95.your_subnet.in-addr.arpa' # Set the NameServer to Set-ItemProperty $_.PSPath -Name 'NameServer' -Value 'YOUR_DNS_SERVER' # Set domain Set-ItemProperty $_.PSPath -Name 'Domain' -Value 'example.wan' Write-Host "Updated interface: $($_.Name)" -ForegroundColor Green # Exit after the first match is found Break } } # If no matching interface was found, display a message if ($found -eq $false) { Write-Host "No interface with SearchList containing 'example.wan' was found." -ForegroundColor Red } ```
Author
Owner

@InternetWorkAcct commented on GitHub (Feb 11, 2026):

The NetBird resolver does not feature a way to forward TCP DNS requests, only UDP.
Active Directory will often switch to TCP for larger queries. This will fail.

Configuring the Domain Controller address on your NetBird interface is a way around this, just as you did.
Instead of editing the registry, you can use the SetDnsClientServerAddress powershell command.

<!-- gh-comment-id:3884838316 --> @InternetWorkAcct commented on GitHub (Feb 11, 2026): The NetBird resolver does not feature a way to forward TCP DNS requests, only UDP. Active Directory will often switch to TCP for larger queries. This will fail. Configuring the Domain Controller address on your NetBird interface is a way around this, just as you did. Instead of editing the registry, you can use the `SetDnsClientServerAddress` powershell command.
Author
Owner

@OGDeguy commented on GitHub (Jun 17, 2026):

I have finally had a little more time to look at how Nebird configures the NRPT rules on Windows Enterprise, which is correct. However, the dnscache service on Windows does not reload the rules gracefully and I found in my testing that I needed to terminate the process and wait for svchost to restart dnscache before the policy would take effect.

The following PowerShell script demonstrates how to do this via a scheduled task:

<#
    Install-NetbirdNrptReload.ps1

    Installs (and re-installs cleanly each run) a scheduled task that fixes the
    ROOT problem we found: NetBird writes a correct NRPT rule, but the Windows
    DNS Client (Dnscache) doesn't reliably reload it after NetBird connects, so
    Get-DnsClientNrptPolicy -Effective stays empty and queries leak to public DNS.

    The task does ONE thing, only on drift:
      - If NetBird is up (a 100.95.x address is present)
      - AND its NRPT rule is NOT effective yet
      - THEN force Dnscache to reload by terminating its svchost-hosted process
        (Windows auto-respawns it; this is the only no-reboot way, since
         Restart-Service Dnscache is blocked).

    It does NOT touch interface DNS, SearchList, NameServer, or WARP. That
    interface-rewriting behaviour in the old task was the churn engine behind
    the WARP detection flap and the TunnelOnly DNS bug, so it is deliberately
    gone.

    Re-running this script deletes the prior version of THIS task and the old
    "Netbird DNS Fix" task, then recreates fresh. Idempotent by design.

    Run elevated.
#>

[CmdletBinding()]
param(
    [string]   $TaskName        = "Netbird NRPT Reload",
    [string]   $OldTaskName     = "Netbird DNS Fix",
    [string]   $ScriptPath      = "C:\Scripts\NetbirdNrptReload.ps1",
    [string]   $MatchNamespace  = ".sageisg.com",   # the zone we check for effectiveness
    [int]      $IntervalMinutes = 2,                 # drift check cadence
    [switch]   $Uninstall
)

# ---- elevation guard -------------------------------------------------------
$id = [Security.Principal.WindowsIdentity]::GetCurrent()
if (-not (New-Object Security.Principal.WindowsPrincipal($id)).IsInRole(
        [Security.Principal.WindowsBuiltinRole]::Administrator)) {
    Write-Host "NOT ELEVATED. Re-open PowerShell as Administrator and re-run." -ForegroundColor Red
    return
}

# ---- the worker script that the task will run ------------------------------
# (kept tiny; acts only on drift; never rewrites interface DNS)
$workerCode = @"
`$ErrorActionPreference = 'SilentlyContinue'

# NetBird up if a 100.95.x IPv4 address is present (adapter-name-agnostic)
`$netbirdUp = [bool](Get-NetIPAddress -AddressFamily IPv4 |
                     Where-Object { `$_.IPAddress -like '100.95.*' })
if (-not `$netbirdUp) { return }

# Is NetBird's NRPT rule actually EFFECTIVE for our zone?
`$effective = Get-DnsClientNrptPolicy -Effective |
             Where-Object { `$_.Namespace -eq '$MatchNamespace' }

if (-not `$effective) {
    # Force Dnscache to reload NRPT by terminating its hosted process.
    # Restart-Service Dnscache is blocked (protected service); svchost respawns it,
    # but we also explicitly start it as a safety net so DNS never stays down.
    `$svc = Get-CimInstance Win32_Service -Filter "Name='Dnscache'"
    if (`$svc -and `$svc.ProcessId) {
        Stop-Process -Id `$svc.ProcessId -Force
        Start-Sleep -Seconds 3
        Start-Service Dnscache -ErrorAction SilentlyContinue
        Start-Sleep -Seconds 2
        Clear-DnsClientCache
    }
}
"@

# ---- uninstall path --------------------------------------------------------
function Remove-Task([string]$name) {
    $t = Get-ScheduledTask -TaskName $name -ErrorAction SilentlyContinue
    if ($t) {
        Unregister-ScheduledTask -TaskName $name -Confirm:$false
        Write-Host "Removed task: $name" -ForegroundColor Yellow
    }
}

if ($Uninstall) {
    Remove-Task $TaskName
    Remove-Task $OldTaskName
    if (Test-Path $ScriptPath) { Remove-Item $ScriptPath -Force; Write-Host "Removed $ScriptPath" -ForegroundColor Yellow }
    Write-Host "Uninstall complete." -ForegroundColor Green
    return
}

# ---- write worker script ---------------------------------------------------
$dir = Split-Path $ScriptPath -Parent
if (-not (Test-Path $dir)) { New-Item -Path $dir -ItemType Directory -Force | Out-Null }
# ASCII to avoid BOM issues when invoked with -File
$workerCode | Out-File -FilePath $ScriptPath -Encoding ASCII -Force
Write-Host "Worker script written: $ScriptPath" -ForegroundColor Green

# ---- delete old + existing versions of this task (recreate fresh every run)-
Remove-Task $TaskName       # this task, prior version
Remove-Task $OldTaskName    # the legacy interface-DNS-stomping task

# ---- (re)create the task ---------------------------------------------------
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
    -Argument "-NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File `"$ScriptPath`""

# Trigger 1: at startup.  Trigger 2: repeating drift check.
$tStartup = New-ScheduledTaskTrigger -AtStartup
# Repeat indefinitely: build a repeating trigger, then null out the end boundary.
# (Passing [TimeSpan]::MaxValue serializes to an out-of-range XML duration and is rejected.)
$tRepeat  = New-ScheduledTaskTrigger -Once -At (Get-Date) `
    -RepetitionInterval (New-TimeSpan -Minutes $IntervalMinutes)
$tRepeat.Repetition.Duration = ""   # "" = run indefinitely

$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest

$settings = New-ScheduledTaskSettingsSet `
    -AllowStartIfOnBatteries `
    -DontStopIfGoingOnBatteries `
    -StartWhenAvailable `
    -MultipleInstances IgnoreNew `
    -ExecutionTimeLimit (New-TimeSpan -Minutes 2)

$reg = Register-ScheduledTask -TaskName $TaskName `
    -Action $action `
    -Trigger $tStartup, $tRepeat `
    -Principal $principal `
    -Settings $settings `
    -Description "Reloads Dnscache when NetBird is up but its NRPT rule isn't effective. No interface-DNS writes." `
    -ErrorAction SilentlyContinue

if (Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue) {
    Write-Host "Scheduled task '$TaskName' created (startup + every $IntervalMinutes min, runs as SYSTEM)." -ForegroundColor Green
} else {
    Write-Host "Task registration FAILED - will still run the worker once directly below." -ForegroundColor Red
}

# ---- run once now (SYNCHRONOUSLY) so the verification below is trustworthy --
# Start-ScheduledTask is async and races its own worker; run the worker inline
# and block until it finishes, then verify with a short retry loop.
Write-Host "`nRunning the worker once now (inline, synchronous)..." -ForegroundColor Cyan
& PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File $ScriptPath

Write-Host "`n=== Effective NRPT now ===" -ForegroundColor Cyan
$effective = $null
for ($i = 0; $i -lt 6; $i++) {
    Start-Sleep -Seconds 2
    $effective = Get-DnsClientNrptPolicy -Effective -ErrorAction SilentlyContinue |
                 Where-Object { $_.Namespace -match 'sageisg' }
    if ($effective) { break }   # Dnscache finished reloading
}
if ($effective) {
    $effective | Format-Table Namespace, NameServers -Auto
} else {
    Write-Host "(still empty - give it a few more seconds and re-run: Get-DnsClientNrptPolicy -Effective)" -ForegroundColor Yellow
}

Write-Host "=== Resolution test ===" -ForegroundColor Cyan
Clear-DnsClientCache
Resolve-DnsName ward1.sageisg.com -DnsOnly -ErrorAction SilentlyContinue |
    Where-Object QueryType -eq 'A' | Format-Table Name, IPAddress -Auto

Write-Host "`nDone. To remove everything:  .\Install-NetbirdNrptReload.ps1 -Uninstall" -ForegroundColor Gray

I believe all Netbird would need to do to resolve this issue is to find a way to get the dnscache service to reload the NRPT config reliably. The script above is still clumsy, but much less clumsy than setting the DNS resolution on the interface constantly. The previous approach I posted caused network change events every time the script ran and would interfere with solutions like CloudFlare One. Netbird likely could do the same thing and force a restart of the dnscache process, but I am not sure if that would result in a behaviour detection from some anti-malware products or not.

<!-- gh-comment-id:4732671126 --> @OGDeguy commented on GitHub (Jun 17, 2026): I have finally had a little more time to look at how Nebird configures the NRPT rules on Windows Enterprise, **which is correct.** However, the `dnscache` service on Windows does not reload the rules gracefully and I found in my testing that I needed to terminate the process and wait for `svchost` to restart `dnscache` before the policy would take effect. The following PowerShell script demonstrates how to do this via a scheduled task: ```PowerShell <# Install-NetbirdNrptReload.ps1 Installs (and re-installs cleanly each run) a scheduled task that fixes the ROOT problem we found: NetBird writes a correct NRPT rule, but the Windows DNS Client (Dnscache) doesn't reliably reload it after NetBird connects, so Get-DnsClientNrptPolicy -Effective stays empty and queries leak to public DNS. The task does ONE thing, only on drift: - If NetBird is up (a 100.95.x address is present) - AND its NRPT rule is NOT effective yet - THEN force Dnscache to reload by terminating its svchost-hosted process (Windows auto-respawns it; this is the only no-reboot way, since Restart-Service Dnscache is blocked). It does NOT touch interface DNS, SearchList, NameServer, or WARP. That interface-rewriting behaviour in the old task was the churn engine behind the WARP detection flap and the TunnelOnly DNS bug, so it is deliberately gone. Re-running this script deletes the prior version of THIS task and the old "Netbird DNS Fix" task, then recreates fresh. Idempotent by design. Run elevated. #> [CmdletBinding()] param( [string] $TaskName = "Netbird NRPT Reload", [string] $OldTaskName = "Netbird DNS Fix", [string] $ScriptPath = "C:\Scripts\NetbirdNrptReload.ps1", [string] $MatchNamespace = ".sageisg.com", # the zone we check for effectiveness [int] $IntervalMinutes = 2, # drift check cadence [switch] $Uninstall ) # ---- elevation guard ------------------------------------------------------- $id = [Security.Principal.WindowsIdentity]::GetCurrent() if (-not (New-Object Security.Principal.WindowsPrincipal($id)).IsInRole( [Security.Principal.WindowsBuiltinRole]::Administrator)) { Write-Host "NOT ELEVATED. Re-open PowerShell as Administrator and re-run." -ForegroundColor Red return } # ---- the worker script that the task will run ------------------------------ # (kept tiny; acts only on drift; never rewrites interface DNS) $workerCode = @" `$ErrorActionPreference = 'SilentlyContinue' # NetBird up if a 100.95.x IPv4 address is present (adapter-name-agnostic) `$netbirdUp = [bool](Get-NetIPAddress -AddressFamily IPv4 | Where-Object { `$_.IPAddress -like '100.95.*' }) if (-not `$netbirdUp) { return } # Is NetBird's NRPT rule actually EFFECTIVE for our zone? `$effective = Get-DnsClientNrptPolicy -Effective | Where-Object { `$_.Namespace -eq '$MatchNamespace' } if (-not `$effective) { # Force Dnscache to reload NRPT by terminating its hosted process. # Restart-Service Dnscache is blocked (protected service); svchost respawns it, # but we also explicitly start it as a safety net so DNS never stays down. `$svc = Get-CimInstance Win32_Service -Filter "Name='Dnscache'" if (`$svc -and `$svc.ProcessId) { Stop-Process -Id `$svc.ProcessId -Force Start-Sleep -Seconds 3 Start-Service Dnscache -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 Clear-DnsClientCache } } "@ # ---- uninstall path -------------------------------------------------------- function Remove-Task([string]$name) { $t = Get-ScheduledTask -TaskName $name -ErrorAction SilentlyContinue if ($t) { Unregister-ScheduledTask -TaskName $name -Confirm:$false Write-Host "Removed task: $name" -ForegroundColor Yellow } } if ($Uninstall) { Remove-Task $TaskName Remove-Task $OldTaskName if (Test-Path $ScriptPath) { Remove-Item $ScriptPath -Force; Write-Host "Removed $ScriptPath" -ForegroundColor Yellow } Write-Host "Uninstall complete." -ForegroundColor Green return } # ---- write worker script --------------------------------------------------- $dir = Split-Path $ScriptPath -Parent if (-not (Test-Path $dir)) { New-Item -Path $dir -ItemType Directory -Force | Out-Null } # ASCII to avoid BOM issues when invoked with -File $workerCode | Out-File -FilePath $ScriptPath -Encoding ASCII -Force Write-Host "Worker script written: $ScriptPath" -ForegroundColor Green # ---- delete old + existing versions of this task (recreate fresh every run)- Remove-Task $TaskName # this task, prior version Remove-Task $OldTaskName # the legacy interface-DNS-stomping task # ---- (re)create the task --------------------------------------------------- $action = New-ScheduledTaskAction -Execute "PowerShell.exe" ` -Argument "-NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File `"$ScriptPath`"" # Trigger 1: at startup. Trigger 2: repeating drift check. $tStartup = New-ScheduledTaskTrigger -AtStartup # Repeat indefinitely: build a repeating trigger, then null out the end boundary. # (Passing [TimeSpan]::MaxValue serializes to an out-of-range XML duration and is rejected.) $tRepeat = New-ScheduledTaskTrigger -Once -At (Get-Date) ` -RepetitionInterval (New-TimeSpan -Minutes $IntervalMinutes) $tRepeat.Repetition.Duration = "" # "" = run indefinitely $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest $settings = New-ScheduledTaskSettingsSet ` -AllowStartIfOnBatteries ` -DontStopIfGoingOnBatteries ` -StartWhenAvailable ` -MultipleInstances IgnoreNew ` -ExecutionTimeLimit (New-TimeSpan -Minutes 2) $reg = Register-ScheduledTask -TaskName $TaskName ` -Action $action ` -Trigger $tStartup, $tRepeat ` -Principal $principal ` -Settings $settings ` -Description "Reloads Dnscache when NetBird is up but its NRPT rule isn't effective. No interface-DNS writes." ` -ErrorAction SilentlyContinue if (Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue) { Write-Host "Scheduled task '$TaskName' created (startup + every $IntervalMinutes min, runs as SYSTEM)." -ForegroundColor Green } else { Write-Host "Task registration FAILED - will still run the worker once directly below." -ForegroundColor Red } # ---- run once now (SYNCHRONOUSLY) so the verification below is trustworthy -- # Start-ScheduledTask is async and races its own worker; run the worker inline # and block until it finishes, then verify with a short retry loop. Write-Host "`nRunning the worker once now (inline, synchronous)..." -ForegroundColor Cyan & PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File $ScriptPath Write-Host "`n=== Effective NRPT now ===" -ForegroundColor Cyan $effective = $null for ($i = 0; $i -lt 6; $i++) { Start-Sleep -Seconds 2 $effective = Get-DnsClientNrptPolicy -Effective -ErrorAction SilentlyContinue | Where-Object { $_.Namespace -match 'sageisg' } if ($effective) { break } # Dnscache finished reloading } if ($effective) { $effective | Format-Table Namespace, NameServers -Auto } else { Write-Host "(still empty - give it a few more seconds and re-run: Get-DnsClientNrptPolicy -Effective)" -ForegroundColor Yellow } Write-Host "=== Resolution test ===" -ForegroundColor Cyan Clear-DnsClientCache Resolve-DnsName ward1.sageisg.com -DnsOnly -ErrorAction SilentlyContinue | Where-Object QueryType -eq 'A' | Format-Table Name, IPAddress -Auto Write-Host "`nDone. To remove everything: .\Install-NetbirdNrptReload.ps1 -Uninstall" -ForegroundColor Gray ``` I believe all Netbird would need to do to resolve this issue is to find a way to get the `dnscache` service to reload the NRPT config reliably. The script above is still clumsy, but much less clumsy than setting the DNS resolution on the interface constantly. The previous approach I posted caused network change events every time the script ran and would interfere with solutions like CloudFlare One. Netbird likely could do the same thing and force a restart of the `dnscache` process, but I am not sure if that would result in a behaviour detection from some anti-malware products or not.
Sign in to join this conversation.
No Label triage-needed
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#7550