Created comprehensive VPN setup tooling for Peaceful Spirit L2TP/IPsec connection and enhanced agent documentation framework. VPN Configuration (PST-NW-VPN): - Setup-PST-L2TP-VPN.ps1: Automated L2TP/IPsec setup with split-tunnel and DNS - Connect-PST-VPN.ps1: Connection helper with PPP adapter detection, DNS (192.168.0.2), and route config (192.168.0.0/24) - Connect-PST-VPN-Standalone.ps1: Self-contained connection script for remote deployment - Fix-PST-VPN-Auth.ps1: Authentication troubleshooting for CHAP/MSChapv2 - Diagnose-VPN-Interface.ps1: Comprehensive VPN interface and routing diagnostic - Quick-Test-VPN.ps1: Fast connectivity verification (DNS/router/routes) - Add-PST-VPN-Route-Manual.ps1: Manual route configuration helper - vpn-connect.bat, vpn-disconnect.bat: Simple batch file shortcuts - OpenVPN config files (Windows-compatible, abandoned for L2TP) Key VPN Implementation Details: - L2TP creates PPP adapter with connection name as interface description - UniFi auto-configures DNS (192.168.0.2) but requires manual route to 192.168.0.0/24 - Split-tunnel enabled (only remote traffic through VPN) - All-user connection for pre-login auto-connect via scheduled task - Authentication: CHAP + MSChapv2 for UniFi compatibility Agent Documentation: - AGENT_QUICK_REFERENCE.md: Quick reference for all specialized agents - documentation-squire.md: Documentation and task management specialist agent - Updated all agent markdown files with standardized formatting Project Organization: - Moved conversation logs to dedicated directories (guru-connect-conversation-logs, guru-rmm-conversation-logs) - Cleaned up old session JSONL files from projects/msp-tools/ - Added guru-connect infrastructure (agent, dashboard, proto, scripts, .gitea workflows) - Added guru-rmm server components and deployment configs Technical Notes: - VPN IP pool: 192.168.4.x (client gets 192.168.4.6) - Remote network: 192.168.0.0/24 (router at 192.168.0.10) - PSK: rrClvnmUeXEFo90Ol+z7tfsAZHeSK6w7 - Credentials: pst-admin / 24Hearts$ Files: 15 VPN scripts, 2 agent docs, conversation log reorganization, guru-connect/guru-rmm infrastructure additions Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
107 lines
4.1 KiB
PowerShell
107 lines
4.1 KiB
PowerShell
# 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 ""
|