[GH-ISSUE #5278] Feature Request: Trusted Network Detection / Auto-Disable on Local Networks #11101

Open
opened 2026-08-05 01:28:28 -04:00 by saavagebueno · 10 comments
Owner

Originally created by @Miki84 on GitHub (Feb 9, 2026).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/5278

Is your feature request related to a problem? Please describe.
When users are physically present in their corporate network, NetBird establishes peer-to-peer connections to internal servers even though direct LAN connectivity is available. This causes performance issues because traffic is unnecessarily routed through NetBird tunnels instead of using the local network infrastructure.

Current behavior:
• Client in office (LAN: 10.17.92.0/24) → Connects to file server via NetBird peer connection
• Same client remotely → Connects to file server via NetBird peer connection (desired)

Problem:
• Users report slower access to internal resources when in the office
• Unnecessary bandwidth consumption through peer connections
• Additional latency and overhead when direct LAN access would be faster
While ACL rules can control which network routes are accessible, peer-to-peer connections are still established regardless of the client's physical location.

Describe the solution you'd like
Add a "Trusted Networks" or "Network Detection" feature that automatically disables NetBird when the client is connected to specified local networks.

Proposed implementation:

  1. Configuration option in NetBird client settings:
    trusted_networks: - cidr: "10.17.92.0/24" name: "Corporate Office Network" - cidr: "10.17.20.0/24" name: "Branch Office Network" - gateway: "192.168.1.1" name: "Home Network"

  2. Behavior:
    • When client detects it's connected to a trusted network → automatically disconnect NetBird
    • When client leaves trusted network → automatically reconnect NetBird
    • Optional: User notification/tray icon update showing "Disabled (Trusted Network)"

  3. Detection methods:
    • CIDR-based: Check if local IP address is within specified subnet
    • Gateway-based: Check default gateway IP
    • DNS-based: Check if specific internal DNS servers are reachable
    • SSID-based (for Wi-Fi): Detect specific network names

Describe alternatives you've considered

Current workarounds:
• Manual control - Users manually disable/enable NetBird (inconvenient, often forgotten)
• Custom scripts - Platform-specific PowerShell/Bash scripts with scheduled tasks (complex to deploy and maintain)
• ACL rules - Only control routes, not peer connections themselves
• Split-DNS - Helps but doesn't prevent peer connections from being established

Why these aren't sufficient:
• Require manual intervention or complex IT infrastructure
• Don't prevent unnecessary peer connections in local networks
• Difficult to scale across large organizations (we have 220+ clients across 8 locations)

Originally created by @Miki84 on GitHub (Feb 9, 2026). Original GitHub issue: https://github.com/netbirdio/netbird/issues/5278 **Is your feature request related to a problem? Please describe.** When users are physically present in their corporate network, NetBird establishes peer-to-peer connections to internal servers even though direct LAN connectivity is available. This causes performance issues because traffic is unnecessarily routed through NetBird tunnels instead of using the local network infrastructure. Current behavior: • Client in office (LAN: 10.17.92.0/24) → Connects to file server via NetBird peer connection • Same client remotely → Connects to file server via NetBird peer connection (desired) Problem: • Users report slower access to internal resources when in the office • Unnecessary bandwidth consumption through peer connections • Additional latency and overhead when direct LAN access would be faster While ACL rules can control which network routes are accessible, peer-to-peer connections are still established regardless of the client's physical location. **Describe the solution you'd like** Add a "Trusted Networks" or "Network Detection" feature that automatically disables NetBird when the client is connected to specified local networks. Proposed implementation: 1. Configuration option in NetBird client settings: trusted_networks: - cidr: "10.17.92.0/24" name: "Corporate Office Network" - cidr: "10.17.20.0/24" name: "Branch Office Network" - gateway: "192.168.1.1" name: "Home Network" 2. Behavior: • When client detects it's connected to a trusted network → automatically disconnect NetBird • When client leaves trusted network → automatically reconnect NetBird • Optional: User notification/tray icon update showing "Disabled (Trusted Network)" 3. Detection methods: • CIDR-based: Check if local IP address is within specified subnet • Gateway-based: Check default gateway IP • DNS-based: Check if specific internal DNS servers are reachable • SSID-based (for Wi-Fi): Detect specific network names **Describe alternatives you've considered** Current workarounds: • Manual control - Users manually disable/enable NetBird (inconvenient, often forgotten) • Custom scripts - Platform-specific PowerShell/Bash scripts with scheduled tasks (complex to deploy and maintain) • ACL rules - Only control routes, not peer connections themselves • Split-DNS - Helps but doesn't prevent peer connections from being established Why these aren't sufficient: • Require manual intervention or complex IT infrastructure • Don't prevent unnecessary peer connections in local networks • Difficult to scale across large organizations (we have 220+ clients across 8 locations)
saavagebueno added the feature-request label 2026-08-05 01:28:28 -04:00
Author
Owner

@lixmal commented on GitHub (Feb 9, 2026):

Is this covered by https://docs.netbird.io/manage/access-control/posture-checks#peer-network-range?

<!-- gh-comment-id:3872047323 --> @lixmal commented on GitHub (Feb 9, 2026): Is this covered by https://docs.netbird.io/manage/access-control/posture-checks#peer-network-range?
Author
Owner

@Miki84 commented on GitHub (Feb 9, 2026):

Thank you for the quick response! I appreciate you looking into this.

However, I believe there might be a misunderstanding about what we're trying to achieve. The "Peer Network Range" posture check doesn't solve our problem because it only controls route access, not the establishment of peer connections themselves.

The Core Issue

What Posture Checks do:

  • Control ACCESS to specific network routes and resources
  • Block traffic to certain destinations based on policies

What Posture Checks DON'T do:

  • Prevent WireGuard peer connections from being established
  • Stop NetBird from maintaining active tunnels
  • Reduce network overhead when routes are blocked

Current Behavior (with Posture Checks)

When a client is in our office network (10.17.20.0/24):

  1. Posture check correctly blocks access to network routes
  2. User cannot reach resources through NetBird
  3. BUT: WireGuard tunnels to all peers are still established
  4. Peer connections remain active and consume resources

This means:

  • Active WireGuard tunnels maintained to file servers, application servers, etc.
  • Continuous keep-alive packets
  • Bandwidth consumption
  • CPU/memory overhead
  • Battery drain on laptops

What We Actually Need

Complete disconnection from NetBird when in trusted networks:

Scenario 1: User in office network (10.17.20.0/24)
Expected behavior:
- NetBird detects trusted network
- Runs "netbird down" automatically
- ALL peer connections terminated
- No WireGuard tunnels active
- Client UI shows: "Disconnected (Trusted Network)"
- User accesses resources via direct LAN (1 Gbps, no overhead)

Scenario 2: User leaves office (mobile, home, coffee shop)
Expected behavior:
- NetBird detects untrusted network
- Runs "netbird up" automatically
- Peer connections established
- User accesses resources via NetBird tunnels
- Client UI shows: "Connected (Remote Access)"

Current Workaround

We've implemented PowerShell scripts (Windows) that:

  1. Detect if client IP is in office subnets
  2. Run netbird down when in office
  3. Run netbird up when outside office
  4. Deployed via Group Policy with scheduled tasks

Problems with this approach:

  • Complex to maintain across Windows/macOS/Linux
  • Platform-specific implementations required
  • Requires IT team to write and maintain custom scripts
  • Not user-friendly (no UI integration)
  • Delays in detection (polling-based)
<!-- gh-comment-id:3872209806 --> @Miki84 commented on GitHub (Feb 9, 2026): Thank you for the quick response! I appreciate you looking into this. However, I believe there might be a misunderstanding about what we're trying to achieve. The **"Peer Network Range" posture check doesn't solve our problem** because it only controls route access, not the establishment of peer connections themselves. ## The Core Issue **What Posture Checks do:** - ✅ Control ACCESS to specific network routes and resources - ✅ Block traffic to certain destinations based on policies **What Posture Checks DON'T do:** - ❌ Prevent WireGuard peer connections from being established - ❌ Stop NetBird from maintaining active tunnels - ❌ Reduce network overhead when routes are blocked ## Current Behavior (with Posture Checks) When a client is in our office network (10.17.20.0/24): 1. Posture check correctly blocks access to network routes ✅ 2. User cannot reach resources through NetBird ✅ 3. **BUT: WireGuard tunnels to all peers are still established** ❌ 4. **Peer connections remain active and consume resources** ❌ This means: - Active WireGuard tunnels maintained to file servers, application servers, etc. - Continuous keep-alive packets - Bandwidth consumption - CPU/memory overhead - Battery drain on laptops ## What We Actually Need **Complete disconnection from NetBird when in trusted networks:** ``` Scenario 1: User in office network (10.17.20.0/24) Expected behavior: - NetBird detects trusted network - Runs "netbird down" automatically - ALL peer connections terminated - No WireGuard tunnels active - Client UI shows: "Disconnected (Trusted Network)" - User accesses resources via direct LAN (1 Gbps, no overhead) Scenario 2: User leaves office (mobile, home, coffee shop) Expected behavior: - NetBird detects untrusted network - Runs "netbird up" automatically - Peer connections established - User accesses resources via NetBird tunnels - Client UI shows: "Connected (Remote Access)" ``` ## Current Workaround We've implemented PowerShell scripts (Windows) that: 1. Detect if client IP is in office subnets 2. Run `netbird down` when in office 3. Run `netbird up` when outside office 4. Deployed via Group Policy with scheduled tasks **Problems with this approach:** - Complex to maintain across Windows/macOS/Linux - Platform-specific implementations required - Requires IT team to write and maintain custom scripts - Not user-friendly (no UI integration) - Delays in detection (polling-based)
Author
Owner

@spider-yamet commented on GitHub (Feb 9, 2026):

@Miki84 @lixmal @diegocn May I pick up this issue?

<!-- gh-comment-id:3873578337 --> @spider-yamet commented on GitHub (Feb 9, 2026): @Miki84 @lixmal @diegocn May I pick up this issue?
Author
Owner

@1nerdyguy commented on GitHub (Feb 9, 2026):

See, I sorta want the opposite.

I'd like a way to have P2P sessions be created if possible, even if a client is in a routed subnet.

Currently, we have issues where I'd prefer to make a p2p connection to a client that has an ip of 10.10.10.10/24, but I'm already publishing a network for 10.10.10.0/24 , so it doesn't even try.

I want best of both worlds, as our goal would be utilize Netbird as the primary method of communication both on and offsite as much as possible, but also need to support clients in those subnets that cannot have the netbird client installed (such as printers, etc).

I understand I could spread my IP space out a bit and have netbird enabled clients in 10.10.10.0/24 and non-netbird clients in 10.10.11.0/24 and only route 10.10.11.0/24, but that's quite a lift for the numerous sites we're talking about.

<!-- gh-comment-id:3873836811 --> @1nerdyguy commented on GitHub (Feb 9, 2026): See, I sorta want the opposite. I'd like a way to have P2P sessions be created if possible, even if a client is in a routed subnet. Currently, we have issues where I'd prefer to make a p2p connection to a client that has an ip of 10.10.10.10/24, but I'm already publishing a network for 10.10.10.0/24 , so it doesn't even try. I want best of both worlds, as our goal would be utilize Netbird as the primary method of communication both on and offsite as much as possible, but also need to support clients in those subnets that cannot have the netbird client installed (such as printers, etc). I understand I could spread my IP space out a bit and have netbird enabled clients in 10.10.10.0/24 and non-netbird clients in 10.10.11.0/24 and only route 10.10.11.0/24, but that's quite a lift for the numerous sites we're talking about.
Author
Owner

@1nerdyguy commented on GitHub (Feb 9, 2026):

We've implemented PowerShell scripts (Windows) that:

  1. Detect if client IP is in office subnets
  2. Run netbird down when in office
  3. Run netbird up when outside office
  4. Deployed via Group Policy with scheduled tasks

I'd also love to see these

<!-- gh-comment-id:3873855826 --> @1nerdyguy commented on GitHub (Feb 9, 2026): > We've implemented PowerShell scripts (Windows) that: > > 1. Detect if client IP is in office subnets > 2. Run `netbird down` when in office > 3. Run `netbird up` when outside office > 4. Deployed via Group Policy with scheduled tasks I'd also love to see these
Author
Owner

@Miki84 commented on GitHub (Feb 10, 2026):

Hi @1nerdyguy

here is our Code:

# NetBird-Auto-Connect.ps1

# ========== CONFIGURATION ==========
$firmSubnets = @(
    "10.17.92.0/24",
    "10.17.93.0/24"
)

$logFile = "C:\Windows\Temp\netbird-autoconnect.log"

# ========== FUNCTIONS ==========

function Write-Log {
    param($Message)
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    try {
        "$timestamp - $Message" | Out-File -FilePath $logFile -Append -ErrorAction SilentlyContinue
    } catch {}
}

function Test-IPInSubnet {
    param(
        [string]$IPAddress,
        [string]$Subnet
    )
    
    $ip = [System.Net.IPAddress]::Parse($IPAddress).GetAddressBytes()
    $cidr = $Subnet.Split('/')
    $subnetIP = [System.Net.IPAddress]::Parse($cidr[0]).GetAddressBytes()
    $bits = [int]$cidr[1]
    
    $mask = [byte[]]@(0,0,0,0)
    for ($i = 0; $i -lt $bits; $i++) {
        $mask[[Math]::Floor($i/8)] = $mask[[Math]::Floor($i/8)] -bor (1 -shl (7 - ($i % 8)))
    }
    
    for ($i = 0; $i -lt 4; $i++) {
        if (($ip[$i] -band $mask[$i]) -ne ($subnetIP[$i] -band $mask[$i])) {
            return $false
        }
    }
    return $true
}

function Test-InCorporateNetwork {
    try {
        # Get all IPv4 addresses of the client (excluding Loopback and APIPA)
        $localIPs = Get-NetIPAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | 
                    Where-Object {
                        $_.IPAddress -notlike "169.254.*" -and 
                        $_.IPAddress -ne "127.0.0.1" -and
                        $_.PrefixOrigin -in @('Dhcp','Manual')
                    } | Select-Object -ExpandProperty IPAddress
        
        foreach ($ip in $localIPs) {
            foreach ($subnet in $firmSubnets) {
                if (Test-IPInSubnet -IPAddress $ip -Subnet $subnet) {
                    Write-Log "Client IP $ip is in corporate network $subnet"
                    return $true
                }
            }
        }
        
        Write-Log "Client not in corporate network. IPs: $($localIPs -join ', ')"
        return $false
        
    } catch {
        Write-Log "Error during network detection: $_"
        return $false
    }
}

function Get-NetBirdStatus {
    try {
        # Try to run netbird status and capture output
        $output = & netbird status 2>&1 | Out-String
        
        Write-Log "NetBird status output: $($output.Trim())"
        
        # Check for various possible status formats
        if ($output -match "Status:\s*Connected" -or 
            $output -match "Daemon status:\s*Connected" -or
            $output -match "Connected" -or
            $output -match "Online" -or
            $output -match "Management:\s*Connected") {
            Write-Log "NetBird is CONNECTED"
            return $true
        }
        
        Write-Log "NetBird is NOT connected"
        return $false
        
    } catch {
        Write-Log "Error retrieving NetBird status: $_"
        # On error, check if the NetBird process is running as fallback
        $process = Get-Process -Name "netbird" -ErrorAction SilentlyContinue
        if ($process) {
            Write-Log "NetBird process is running (fallback detection)"
            return $true
        }
        return $false
    }
}

# ========== MAIN LOGIC ==========

Write-Log "=== NetBird Auto-Connect started ==="

$isInCorporateNetwork = Test-InCorporateNetwork
$isNetBirdConnected = Get-NetBirdStatus

Write-Log "Status: In corporate network=$isInCorporateNetwork, NetBird connected=$isNetBirdConnected"

if ($isInCorporateNetwork) {
    # In corporate network - stop NetBird
    if ($isNetBirdConnected) {
        Write-Log "ACTION: In corporate network - stopping NetBird"
        try {
            $result = & netbird down 2>&1 | Out-String
            Write-Log "NetBird down output: $result"
            Write-Log "NetBird stopped"
        } catch {
            Write-Log "Error stopping NetBird: $_"
        }
    } else {
        Write-Log "In corporate network - NetBird already stopped (OK)"
    }
} else {
    # External - start NetBird
    if (-not $isNetBirdConnected) {
        Write-Log "ACTION: External - starting NetBird"
        try {
            $result = & netbird up 2>&1 | Out-String
            Write-Log "NetBird up output: $result"
            Write-Log "NetBird started"
        } catch {
            Write-Log "Error starting NetBird: $_"
        }
    } else {
        Write-Log "External - NetBird already connected (OK)"
    }
}

Write-Log "=== Done ===`n"

Deployment

The script is executed via Windows Task Scheduler with the following triggers:

Triggers

  1. On user logon – Ensures NetBird is in the correct state when a user signs in.
  2. On network state change (Event Trigger) – Listens for Microsoft-Windows-NetworkProfile/Operational Event ID 10000 (network connected) and 10001 (network disconnected), so the script reacts immediately whenever the network connectivity changes.

Task Scheduler Configuration

  • Run whether user is logged on or not: Yes
  • Run with highest privileges: Yes
  • Action: powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\NetBird-Auto-Connect.ps1"
<!-- gh-comment-id:3875881743 --> @Miki84 commented on GitHub (Feb 10, 2026): Hi @1nerdyguy here is our Code: ```powershell # NetBird-Auto-Connect.ps1 # ========== CONFIGURATION ========== $firmSubnets = @( "10.17.92.0/24", "10.17.93.0/24" ) $logFile = "C:\Windows\Temp\netbird-autoconnect.log" # ========== FUNCTIONS ========== function Write-Log { param($Message) $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" try { "$timestamp - $Message" | Out-File -FilePath $logFile -Append -ErrorAction SilentlyContinue } catch {} } function Test-IPInSubnet { param( [string]$IPAddress, [string]$Subnet ) $ip = [System.Net.IPAddress]::Parse($IPAddress).GetAddressBytes() $cidr = $Subnet.Split('/') $subnetIP = [System.Net.IPAddress]::Parse($cidr[0]).GetAddressBytes() $bits = [int]$cidr[1] $mask = [byte[]]@(0,0,0,0) for ($i = 0; $i -lt $bits; $i++) { $mask[[Math]::Floor($i/8)] = $mask[[Math]::Floor($i/8)] -bor (1 -shl (7 - ($i % 8))) } for ($i = 0; $i -lt 4; $i++) { if (($ip[$i] -band $mask[$i]) -ne ($subnetIP[$i] -band $mask[$i])) { return $false } } return $true } function Test-InCorporateNetwork { try { # Get all IPv4 addresses of the client (excluding Loopback and APIPA) $localIPs = Get-NetIPAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | Where-Object { $_.IPAddress -notlike "169.254.*" -and $_.IPAddress -ne "127.0.0.1" -and $_.PrefixOrigin -in @('Dhcp','Manual') } | Select-Object -ExpandProperty IPAddress foreach ($ip in $localIPs) { foreach ($subnet in $firmSubnets) { if (Test-IPInSubnet -IPAddress $ip -Subnet $subnet) { Write-Log "Client IP $ip is in corporate network $subnet" return $true } } } Write-Log "Client not in corporate network. IPs: $($localIPs -join ', ')" return $false } catch { Write-Log "Error during network detection: $_" return $false } } function Get-NetBirdStatus { try { # Try to run netbird status and capture output $output = & netbird status 2>&1 | Out-String Write-Log "NetBird status output: $($output.Trim())" # Check for various possible status formats if ($output -match "Status:\s*Connected" -or $output -match "Daemon status:\s*Connected" -or $output -match "Connected" -or $output -match "Online" -or $output -match "Management:\s*Connected") { Write-Log "NetBird is CONNECTED" return $true } Write-Log "NetBird is NOT connected" return $false } catch { Write-Log "Error retrieving NetBird status: $_" # On error, check if the NetBird process is running as fallback $process = Get-Process -Name "netbird" -ErrorAction SilentlyContinue if ($process) { Write-Log "NetBird process is running (fallback detection)" return $true } return $false } } # ========== MAIN LOGIC ========== Write-Log "=== NetBird Auto-Connect started ===" $isInCorporateNetwork = Test-InCorporateNetwork $isNetBirdConnected = Get-NetBirdStatus Write-Log "Status: In corporate network=$isInCorporateNetwork, NetBird connected=$isNetBirdConnected" if ($isInCorporateNetwork) { # In corporate network - stop NetBird if ($isNetBirdConnected) { Write-Log "ACTION: In corporate network - stopping NetBird" try { $result = & netbird down 2>&1 | Out-String Write-Log "NetBird down output: $result" Write-Log "NetBird stopped" } catch { Write-Log "Error stopping NetBird: $_" } } else { Write-Log "In corporate network - NetBird already stopped (OK)" } } else { # External - start NetBird if (-not $isNetBirdConnected) { Write-Log "ACTION: External - starting NetBird" try { $result = & netbird up 2>&1 | Out-String Write-Log "NetBird up output: $result" Write-Log "NetBird started" } catch { Write-Log "Error starting NetBird: $_" } } else { Write-Log "External - NetBird already connected (OK)" } } Write-Log "=== Done ===`n" ``` ## Deployment The script is executed via **Windows Task Scheduler** with the following triggers: ### Triggers 1. **On user logon** – Ensures NetBird is in the correct state when a user signs in. 2. **On network state change (Event Trigger)** – Listens for `Microsoft-Windows-NetworkProfile/Operational` Event ID **10000** (network connected) and **10001** (network disconnected), so the script reacts immediately whenever the network connectivity changes. ### Task Scheduler Configuration - **Run whether user is logged on or not**: Yes - **Run with highest privileges**: Yes - **Action**: `powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\NetBird-Auto-Connect.ps1"`
Author
Owner

@matthiasmast commented on GitHub (Feb 10, 2026):

seems related to https://github.com/netbirdio/netbird/issues/3799

<!-- gh-comment-id:3878472854 --> @matthiasmast commented on GitHub (Feb 10, 2026): seems related to https://github.com/netbirdio/netbird/issues/3799
Author
Owner

@ryanswj commented on GitHub (Mar 15, 2026):

Yes, I would love for this to be implemented too. My networks are segregated into different subnets at home and NetBird keeps trying to push the connections over the tunnel (+ relay) which makes it really slow…

I’ve tried to block access to the relays from my firewalls, but Netbird still installs the route upon contacting the management server. So this means traffic is being forced down a route which doesn’t work (because the relays are blocked).

The only way out is to block the management server on the firewall, but then I can’t reach the Netbird control panel to configure anything 😂

<!-- gh-comment-id:4062303412 --> @ryanswj commented on GitHub (Mar 15, 2026): Yes, I would love for this to be implemented too. My networks are segregated into different subnets at home and NetBird keeps trying to push the connections over the tunnel (+ relay) which makes it really slow… I’ve tried to block access to the relays from my firewalls, but Netbird still installs the route upon contacting the management server. So this means traffic is being forced down a route which doesn’t work (because the relays are blocked). The only way out is to block the management server on the firewall, but then I can’t reach the Netbird control panel to configure anything 😂
Author
Owner

@Optic00 commented on GitHub (Jul 17, 2026):

For the specific case of "I am physically on the LAN, so do not route local traffic through the tunnel", I have posted a detailed design proposal on #4950, which is the more precise technical issue (a subnet route not bypassing the local LAN when the client sits inside that subnet).

It proposes an opt-in, per-route "prefer local" behavior gated by an authenticated site-presence trigger, as a complement to the peer-level ICE fix in #6142, rather than an auto netbird down that tears down all tunnels.

Anyone following this thread who mainly wants the local-network case may want to weigh in there.

<!-- gh-comment-id:5001537189 --> @Optic00 commented on GitHub (Jul 17, 2026): For the specific case of "I am physically on the LAN, so do not route local traffic through the tunnel", I have posted a detailed design proposal on #4950, which is the more precise technical issue (a subnet route not bypassing the local LAN when the client sits inside that subnet). It proposes an opt-in, per-route "prefer local" behavior gated by an authenticated site-presence trigger, as a complement to the peer-level ICE fix in #6142, rather than an auto `netbird down` that tears down all tunnels. Anyone following this thread who mainly wants the local-network case may want to weigh in there.
Author
Owner

@DriedPlumber commented on GitHub (Jul 17, 2026):

I have 6 laptops that work great when they are outside the local network. However, when I connect them to the LAN, NetBird routes the traffic through a tunnel and a relay, which makes the connection really slow. Today I was asked why the connection is so slow....now I know! Thx Miki84 for the Current workarounds list....but problem stays with us....

<!-- gh-comment-id:5006288919 --> @DriedPlumber commented on GitHub (Jul 17, 2026): I have 6 laptops that work great when they are outside the local network. However, when I connect them to the LAN, NetBird routes the traffic through a tunnel and a relay, which makes the connection really slow. Today I was asked why the connection is so slow....now I know! Thx Miki84 for the Current workarounds list....but problem stays with us....
Sign in to join this conversation.
No Label feature-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#11101