Files
PSOPNSenseAPI/docs/Troubleshooting.md
T

335 lines
10 KiB
Markdown

# Troubleshooting Guide
This document provides troubleshooting information for common issues with the PSOPNSenseAPI module.
## Connection Issues
### Unable to Connect to OPNSense Firewall
**Symptoms:**
- `Connect-OPNSense` fails with connection errors
- Error messages about unreachable hosts or connection timeouts
**Possible Causes and Solutions:**
1. **Incorrect URL:**
- Ensure the URL is correct and includes the protocol (https://)
- Verify there are no typos in the domain name or IP address
```powershell
# Correct format
Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret"
```
2. **Network Connectivity:**
- Verify that you can reach the OPNSense firewall from your computer
- Try pinging the firewall or accessing the web interface in a browser
```powershell
# Test connectivity
Test-NetConnection -ComputerName "firewall.example.com" -Port 443
```
3. **Certificate Issues:**
- If the firewall uses a self-signed certificate, use the `-SkipCertificateCheck` parameter
```powershell
Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck
```
4. **Firewall Rules:**
- Check if there are any firewall rules blocking access to the OPNSense web interface
- Ensure that port 443 (HTTPS) is open for your IP address
5. **Proxy Settings:**
- If you're behind a proxy, configure PowerShell to use the proxy
```powershell
# Configure proxy
[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://proxy.example.com:8080")
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
```
### Authentication Failures
**Symptoms:**
- `Connect-OPNSense` fails with authentication errors
- Error messages about invalid credentials or unauthorized access
**Possible Causes and Solutions:**
1. **Incorrect API Key or Secret:**
- Verify that the API key and secret are correct
- Regenerate the API key and secret if necessary
2. **API Access Not Enabled:**
- Ensure that API access is enabled for the user
- Check the user's privileges in the OPNSense web interface
3. **User Permissions:**
- Verify that the user has the necessary privileges for the operations you're trying to perform
- Consider using a user with administrative privileges for testing
4. **API Key Expiration:**
- Some OPNSense configurations may have API key expiration
- Generate a new API key if the current one has expired
## Module Loading Issues
### Module Not Found
**Symptoms:**
- `Import-Module PSOPNSenseAPI` fails with module not found errors
- Commands from the module are not recognized
**Possible Causes and Solutions:**
1. **Module Not Installed:**
- Verify that the module is installed
```powershell
# Check if the module is installed
Get-Module -Name PSOPNSenseAPI -ListAvailable
```
2. **Module Not in PSModulePath:**
- Check if the module is installed in a valid module path
```powershell
# List module paths
$env:PSModulePath -split ';'
```
3. **Module Version Mismatch:**
- Check if you have multiple versions of the module installed
```powershell
# List all versions of the module
Get-Module -Name PSOPNSenseAPI -ListAvailable | Select-Object Name, Version
```
4. **PowerShell Version Compatibility:**
- Verify that you're using a compatible PowerShell version
- The module requires PowerShell 5.1 or later
```powershell
# Check PowerShell version
$PSVersionTable
```
### Module Loading Errors
**Symptoms:**
- `Import-Module PSOPNSenseAPI` fails with loading errors
- Error messages about missing dependencies or assembly loading failures
**Possible Causes and Solutions:**
1. **Missing Dependencies:**
- Ensure that all dependencies are installed
- The module requires .NET Framework 4.7.2 or later for Windows PowerShell
2. **Assembly Loading Issues:**
- Try loading the module with verbose output to identify the specific issue
```powershell
# Load module with verbose output
Import-Module -Name PSOPNSenseAPI -Verbose
```
3. **File Corruption:**
- Reinstall the module to ensure all files are intact
```powershell
# Uninstall and reinstall the module
Uninstall-Module -Name PSOPNSenseAPI -Force
Install-Module -Name PSOPNSenseAPI -Force
```
## Command Execution Issues
### Command Fails with Error
**Symptoms:**
- Commands fail with error messages
- Unexpected results or behavior
**Possible Causes and Solutions:**
1. **Not Connected to Firewall:**
- Ensure that you're connected to the firewall before running commands
```powershell
# Check if connected
if (-not $OPNSenseSessionState.Instance.ApiClient) {
Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret"
}
```
2. **Insufficient Permissions:**
- Verify that the user has the necessary privileges for the operation
- Check the error message for permission-related issues
3. **Invalid Parameters:**
- Check that you're using the correct parameters and values
- Use `Get-Help` to see the required and optional parameters
```powershell
# Get help for a command
Get-Help -Name New-OPNSenseFirewallRule -Full
```
4. **API Limitations:**
- Some operations may not be supported by the OPNSense API
- Check the OPNSense API documentation for supported operations
5. **Firewall Configuration:**
- The current state of the firewall may prevent certain operations
- Check the OPNSense logs for more information
### Changes Not Applied
**Symptoms:**
- Commands appear to succeed, but changes are not reflected on the firewall
- Configuration changes don't persist after a firewall reboot
**Possible Causes and Solutions:**
1. **Apply Changes Not Called:**
- Many commands require an explicit call to apply the changes
```powershell
# Apply changes after making configuration changes
Apply-OPNSenseFirewallChanges
```
2. **Caching Issues:**
- The OPNSense web interface may be showing cached data
- Refresh the web interface or wait a few moments
3. **Conflicting Configurations:**
- Other configurations may be overriding your changes
- Check for conflicting rules or settings
4. **Firewall Reboot Required:**
- Some changes may require a firewall reboot to take effect
```powershell
# Reboot the firewall
Invoke-OPNSenseReboot
```
## Performance Issues
### Slow Command Execution
**Symptoms:**
- Commands take a long time to execute
- Timeouts or performance degradation
**Possible Causes and Solutions:**
1. **Network Latency:**
- High latency between your computer and the firewall can slow down commands
- Consider running commands from a location with better connectivity
2. **Firewall Load:**
- The firewall may be under heavy load
- Try running commands during periods of lower activity
3. **Large Data Sets:**
- Commands that retrieve large amounts of data may be slow
- Use filtering parameters to limit the data returned
```powershell
# Filter results to reduce data
Get-OPNSenseFirewallRule -Interface "lan"
```
4. **Inefficient Scripts:**
- Scripts that make many individual API calls can be slow
- Batch operations where possible and minimize the number of API calls
## Logging and Debugging
### Enabling Verbose Logging
To troubleshoot issues, you can enable verbose logging:
```powershell
# Enable verbose output
$VerbosePreference = "Continue"
# Run commands with verbose output
Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -Verbose
```
### Capturing HTTP Traffic
For advanced troubleshooting, you can capture the HTTP traffic between the module and the OPNSense firewall:
```powershell
# Enable Fiddler capture
[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://localhost:8888")
[System.Net.WebRequest]::DefaultWebProxy.BypassProxyOnLocal = $false
```
Note: This requires [Fiddler](https://www.telerik.com/fiddler) or a similar HTTP debugging proxy to be installed and running.
### Checking OPNSense Logs
Check the OPNSense logs for additional information:
1. Log in to the OPNSense web interface
2. Navigate to **System > Log Files > General**
3. Look for entries related to the API or the operations you're performing
## Common Error Messages
### "Not connected to an OPNSense firewall"
**Cause:** You're trying to run a command without first connecting to the firewall.
**Solution:** Connect to the firewall before running commands:
```powershell
Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret"
```
### "The remote server returned an error: (401) Unauthorized"
**Cause:** The API key or secret is incorrect, or the user doesn't have the necessary privileges.
**Solution:** Verify the API key and secret, and check the user's privileges.
### "The remote server returned an error: (404) Not Found"
**Cause:** The requested resource or API endpoint doesn't exist.
**Solution:** Check that you're using the correct command and parameters, and that the resource exists on the firewall.
### "The remote server returned an error: (500) Internal Server Error"
**Cause:** An error occurred on the OPNSense firewall while processing the request.
**Solution:** Check the OPNSense logs for more information, and verify that the firewall is functioning correctly.
### "Unable to find type [System.Net.IPNetwork.IPNetwork]"
**Cause:** The IPNetwork2 assembly is not loaded or is missing.
**Solution:** Reinstall the module to ensure all dependencies are properly installed.
## Getting Help
If you're still experiencing issues after trying the troubleshooting steps above:
1. Check the [GitHub repository](https://github.com/freedbygrace/PSOPNSenseAPI) for known issues and solutions
2. Open an issue on GitHub with detailed information about the problem
3. Include the following information in your issue:
- PSOPNSenseAPI module version
- PowerShell version
- OPNSense version
- Error messages (with sensitive information redacted)
- Steps to reproduce the issue