# Route Management This component provides cmdlets for managing static routes on OPNSense firewalls. ## Overview The Route Management component allows you to configure and manage static routes on OPNSense firewalls. It provides cmdlets for creating, viewing, modifying, and deleting static routes. ## Cmdlets ### Get-OPNSenseRoute Retrieves static routes from an OPNSense firewall. #### Parameters - **Uuid** - The UUID of a specific route to retrieve. If not specified, all routes are returned. - **Network** - Filter routes by network. - **Gateway** - Filter routes by gateway. - **Description** - Filter routes by description. #### Examples ```powershell # Get all static routes Get-OPNSenseRoute # Get a specific route by UUID Get-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" # Get routes for a specific network Get-OPNSenseRoute -Network "192.168.100.0/24" # Get routes using a specific gateway Get-OPNSenseRoute -Gateway "WAN_GATEWAY" ``` ### New-OPNSenseRoute Creates a new static route on an OPNSense firewall. #### Parameters - **Network** - The network for the route in CIDR notation. - **Gateway** - The gateway for the route. - **Description** - A description for the route. - **Disabled** - Whether the route is disabled. Default is false. - **Force** - Suppresses the confirmation prompt. #### Examples ```powershell # Create a basic static route New-OPNSenseRoute -Network "192.168.100.0/24" -Gateway "WAN_GATEWAY" -Description "Remote Office Network" # Create a disabled static route New-OPNSenseRoute -Network "10.0.0.0/8" -Gateway "WAN2_GATEWAY" -Description "Corporate Network" -Disabled # Create a static route without confirmation New-OPNSenseRoute -Network "172.16.0.0/16" -Gateway "WAN3_GATEWAY" -Description "Partner Network" -Force ``` ### Set-OPNSenseRoute Updates an existing static route on an OPNSense firewall. #### Parameters - **Uuid** - The UUID of the route to update. - **Network** - The network for the route in CIDR notation. - **Gateway** - The gateway for the route. - **Description** - A description for the route. - **Disabled** - Whether the route is disabled. - **Force** - Suppresses the confirmation prompt. - **PassThru** - Returns the updated route. #### Examples ```powershell # Update a route's network Set-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Network "192.168.200.0/24" # Update a route's gateway Set-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Gateway "WAN2_GATEWAY" # Update a route's description Set-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Description "Updated Remote Office Network" # Enable a disabled route Set-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Disabled:$false # Update multiple properties of a route Set-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Network "192.168.200.0/24" -Gateway "WAN3_GATEWAY" -Description "Updated Remote Office Network" -PassThru ``` ### Remove-OPNSenseRoute Removes a static route from an OPNSense firewall. #### Parameters - **Uuid** - The UUID of the route to remove. - **Force** - Suppresses the confirmation prompt. #### Examples ```powershell # Remove a route Remove-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" # Remove a route without confirmation Remove-OPNSenseRoute -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Force ``` ### Apply-OPNSenseRouteChanges Applies pending route changes on an OPNSense firewall. #### Parameters - **Force** - Suppresses the confirmation prompt. #### Examples ```powershell # Apply route changes Apply-OPNSenseRouteChanges # Apply route changes without confirmation Apply-OPNSenseRouteChanges -Force ``` ## Common Scenarios ### Basic Route Configuration ```powershell # Connect to the OPNSense firewall Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck # Create a static route to a remote network New-OPNSenseRoute -Network "192.168.100.0/24" -Gateway "WAN_GATEWAY" -Description "Remote Office Network" -Force # Apply the changes Apply-OPNSenseRouteChanges -Force # Disconnect from the firewall Disconnect-OPNSense ``` ### Managing Multiple Routes ```powershell # Connect to the OPNSense firewall Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck # Define routes for different networks $routes = @( @{ Network = "192.168.100.0/24"; Gateway = "WAN_GATEWAY"; Description = "Remote Office 1" }, @{ Network = "192.168.200.0/24"; Gateway = "WAN_GATEWAY"; Description = "Remote Office 2" }, @{ Network = "10.0.0.0/8"; Gateway = "WAN2_GATEWAY"; Description = "Corporate Network" }, @{ Network = "172.16.0.0/16"; Gateway = "WAN3_GATEWAY"; Description = "Partner Network" } ) # Create routes foreach ($route in $routes) { New-OPNSenseRoute -Network $route.Network -Gateway $route.Gateway -Description $route.Description -Force } # Apply the changes Apply-OPNSenseRouteChanges -Force # Disconnect from the firewall Disconnect-OPNSense ``` ### Updating Routes for a Gateway Change ```powershell # Connect to the OPNSense firewall Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck # Get all routes using a specific gateway $routes = Get-OPNSenseRoute -Gateway "WAN_GATEWAY" # Update routes to use a different gateway foreach ($route in $routes) { Set-OPNSenseRoute -Uuid $route.Uuid -Gateway "WAN2_GATEWAY" -Description "$($route.Description) (Updated)" -Force Write-Output "Updated route for network $($route.Network) to use gateway WAN2_GATEWAY" } # Apply the changes Apply-OPNSenseRouteChanges -Force # Disconnect from the firewall Disconnect-OPNSense ``` ### Temporarily Disabling Routes ```powershell # Connect to the OPNSense firewall Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck # Get all routes $routes = Get-OPNSenseRoute # Disable routes for a specific network range foreach ($route in $routes) { if ($route.Network -like "10.*") { Set-OPNSenseRoute -Uuid $route.Uuid -Disabled:$true -Force Write-Output "Disabled route for network $($route.Network)" } } # Apply the changes Apply-OPNSenseRouteChanges -Force # Disconnect from the firewall Disconnect-OPNSense ``` ### Route Cleanup ```powershell # Connect to the OPNSense firewall Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck # Get all routes $routes = Get-OPNSenseRoute # Remove routes with "Temporary" in the description foreach ($route in $routes) { if ($route.Description -like "*Temporary*") { Remove-OPNSenseRoute -Uuid $route.Uuid -Force Write-Output "Removed route for network $($route.Network) with description '$($route.Description)'" } } # Apply the changes Apply-OPNSenseRouteChanges -Force # Disconnect from the firewall Disconnect-OPNSense ``` ### Creating Routes from Network Calculations ```powershell # Connect to the OPNSense firewall Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck # Calculate subnets $network = "10.0.0.0/16" $prefixLength = 24 $subnets = Invoke-OPNSenseNetworkCalculation -Network $network -Operation Subnet -PrefixLength $prefixLength # Create routes for each subnet foreach ($subnet in $subnets) { # Determine the gateway based on the subnet $gateway = if ($subnet.CIDR -like "10.0.1*") { "WAN_GATEWAY" } elseif ($subnet.CIDR -like "10.0.2*") { "WAN2_GATEWAY" } else { "WAN3_GATEWAY" } New-OPNSenseRoute -Network $subnet.CIDR -Gateway $gateway -Description "Subnet $($subnet.CIDR)" -Force Write-Output "Created route for network $($subnet.CIDR) via gateway $gateway" } # Apply the changes Apply-OPNSenseRouteChanges -Force # Disconnect from the firewall Disconnect-OPNSense ``` ## Notes - Route changes are not applied until you call `Apply-OPNSenseRouteChanges`. - When creating a route, ensure that the gateway is properly configured and reachable. - Static routes take precedence over dynamic routes. - The network should be specified in CIDR notation (e.g., "192.168.1.0/24"). - Routes can be temporarily disabled without removing them. - Consider using the `-PassThru` parameter when updating routes to verify the changes. - Route descriptions should be descriptive and follow a consistent naming convention. - When managing multiple routes, consider using a CSV file or other structured data source to maintain the route information. - Static routes are useful for directing traffic to specific networks through different gateways. - For complex routing scenarios, consider using policy-based routing instead of static routes.