# Diagnose VPN interface while connected # Run this WHILE VPN IS CONNECTED Write-Host "=== VPN Interface Diagnostic ===" -ForegroundColor Cyan Write-Host "" # Check VPN connection status Write-Host "[1] VPN Connection Status:" -ForegroundColor Yellow $rasStatus = rasdial Write-Host $rasStatus -ForegroundColor Gray Write-Host "" # Show ALL network adapters (including disconnected, hidden, etc.) Write-Host "[2] ALL Network Adapters (including disconnected):" -ForegroundColor Yellow Get-NetAdapter | Select-Object Name, InterfaceDescription, Status, InterfaceIndex | Format-Table -AutoSize Write-Host "" # Show adapters with "WAN" in the name Write-Host "[3] WAN Miniport Adapters:" -ForegroundColor Yellow Get-NetAdapter | Where-Object { $_.InterfaceDescription -like "*WAN*" } | Select-Object Name, InterfaceDescription, Status, InterfaceIndex | Format-Table -AutoSize Write-Host "" # Show RAS connections (another way to see VPN) Write-Host "[4] RAS Connections:" -ForegroundColor Yellow try { Get-VpnConnection | Select-Object Name, ConnectionStatus, ServerAddress | Format-Table -AutoSize } catch { Write-Host "Could not query VPN connections" -ForegroundColor Gray } Write-Host "" # Show IP configuration for all interfaces Write-Host "[5] IP Configuration:" -ForegroundColor Yellow Get-NetIPAddress | Where-Object { $_.AddressFamily -eq "IPv4" } | Select-Object InterfaceAlias, IPAddress, InterfaceIndex | Format-Table -AutoSize Write-Host "" # Show routing table Write-Host "[6] Routing Table (looking for VPN routes):" -ForegroundColor Yellow Write-Host "Full routing table:" -ForegroundColor Gray route print Write-Host "" # Check if we can reach remote network WITHOUT explicit route Write-Host "[7] Testing connectivity to remote network:" -ForegroundColor Yellow Write-Host "Testing DNS server (192.168.0.2)..." -ForegroundColor Gray $pingDNS = Test-Connection -ComputerName 192.168.0.2 -Count 2 -ErrorAction SilentlyContinue if ($pingDNS) { Write-Host "[OK] DNS server 192.168.0.2 IS reachable!" -ForegroundColor Green Write-Host "Average response time: $([math]::Round(($pingDNS | Measure-Object -Property ResponseTime -Average).Average, 2))ms" -ForegroundColor Green } else { Write-Host "[INFO] DNS server 192.168.0.2 not reachable" -ForegroundColor Yellow } Write-Host "Testing router (192.168.0.10)..." -ForegroundColor Gray $pingRouter = Test-Connection -ComputerName 192.168.0.10 -Count 2 -ErrorAction SilentlyContinue if ($pingRouter) { Write-Host "[OK] Router 192.168.0.10 IS reachable!" -ForegroundColor Green Write-Host "Average response time: $([math]::Round(($pingRouter | Measure-Object -Property ResponseTime -Average).Average, 2))ms" -ForegroundColor Green } else { Write-Host "[INFO] Router 192.168.0.10 not reachable" -ForegroundColor Yellow } if ($pingDNS -or $pingRouter) { Write-Host "`n[IMPORTANT] Remote network IS accessible!" -ForegroundColor Green Write-Host "This means routes might be automatically configured by UniFi!" -ForegroundColor Green } else { Write-Host "`n[INFO] Remote network not reachable" -ForegroundColor Gray Write-Host "This is expected if routes aren't configured" -ForegroundColor Gray } Write-Host "" # Try traceroute to see the path Write-Host "[8] Traceroute to 192.168.0.2 (first 5 hops):" -ForegroundColor Yellow try { $trace = Test-NetConnection -ComputerName 192.168.0.2 -TraceRoute -Hops 5 -WarningAction SilentlyContinue if ($trace.TraceRoute) { Write-Host "Path:" -ForegroundColor Gray $trace.TraceRoute | ForEach-Object { Write-Host " $_" -ForegroundColor DarkGray } } } catch { Write-Host "Traceroute not available or failed" -ForegroundColor Gray } Write-Host "" Write-Host "=== Analysis ===" -ForegroundColor Cyan Write-Host "Look at the output above to identify:" -ForegroundColor White Write-Host " 1. Any adapter with 'WAN', 'PPP', 'L2TP', or 'RAS' in the description" -ForegroundColor Gray Write-Host " 2. Any new IP addresses that appeared after VPN connection" -ForegroundColor Gray Write-Host " 3. Routes to 192.168.0.0 or 10.x.x.x in the routing table" -ForegroundColor Gray Write-Host ""