Files

1406 lines
33 KiB
Markdown

# API Reference
This document provides a comprehensive reference for all cmdlets in the PSOPNSenseAPI module.
## Table of Contents
- [Connection Management](#connection-management)
- [Firewall Management](#firewall-management)
- [NAT Management](#nat-management)
- [Interface Management](#interface-management)
- [VLAN Management](#vlan-management)
- [Gateway Management](#gateway-management)
- [Route Management](#route-management)
- [DNS Management](#dns-management)
- [DHCP Management](#dhcp-management)
- [Alias Management](#alias-management)
- [User Management](#user-management)
- [Plugin Management](#plugin-management)
- [Firmware Management](#firmware-management)
- [System Management](#system-management)
- [Network Utilities](#network-utilities)
- [Tailscale Integration](#tailscale-integration)
- [Cron Job Management](#cron-job-management)
## Connection Management
### Connect-OPNSense
Establishes a connection to an OPNSense firewall.
#### Syntax
```powershell
Connect-OPNSense
-Server <String>
-ApiKey <String>
-ApiSecret <String>
[-SkipCertificateCheck]
```
#### Parameters
- **Server** - The URL of the OPNSense firewall.
- **ApiKey** - The API key for authentication.
- **ApiSecret** - The API secret for authentication.
- **SkipCertificateCheck** - Skips certificate validation for HTTPS connections.
#### Examples
```powershell
# Connect to an OPNSense firewall
Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret"
# Connect to an OPNSense firewall with certificate validation disabled
Connect-OPNSense -Server "https://firewall.example.com" -ApiKey "your_api_key" -ApiSecret "your_api_secret" -SkipCertificateCheck
```
### Disconnect-OPNSense
Terminates the connection to an OPNSense firewall.
#### Syntax
```powershell
Disconnect-OPNSense
```
#### Examples
```powershell
# Disconnect from an OPNSense firewall
Disconnect-OPNSense
```
## Firewall Management
### Get-OPNSenseFirewallRule
Retrieves firewall rules from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseFirewallRule
[-Uuid <String>]
[-Interface <String>]
[-Direction <String>]
[-Protocol <String>]
[-Action <String>]
```
#### Parameters
- **Uuid** - The UUID of a specific firewall rule to retrieve.
- **Interface** - Filter rules by interface.
- **Direction** - Filter rules by direction (in, out).
- **Protocol** - Filter rules by protocol.
- **Action** - Filter rules by action (pass, block, reject).
#### Examples
```powershell
# Get all firewall rules
Get-OPNSenseFirewallRule
# Get a specific firewall rule by UUID
Get-OPNSenseFirewallRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
# Get all rules for a specific interface
Get-OPNSenseFirewallRule -Interface "lan"
```
### New-OPNSenseFirewallRule
Creates a new firewall rule on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSenseFirewallRule
-Interface <String>
[-Direction <String>]
[-Protocol <String>]
[-Source <String>]
[-SourcePort <String>]
[-Destination <String>]
[-DestinationPort <String>]
[-Action <String>]
[-Description <String>]
[-Enabled <Boolean>]
[-Log <Boolean>]
[-Force]
```
#### Parameters
- **Interface** - The interface for the rule.
- **Direction** - The direction for the rule (in, out). Default is "in".
- **Protocol** - The protocol for the rule (tcp, udp, icmp, etc.).
- **Source** - The source address for the rule. Default is "any".
- **SourcePort** - The source port for the rule. Default is "any".
- **Destination** - The destination address for the rule. Default is "any".
- **DestinationPort** - The destination port for the rule.
- **Action** - The action to take (pass, block, reject). Default is "pass".
- **Description** - A description for the rule.
- **Enabled** - Whether the rule is enabled. Default is true.
- **Log** - Whether to log matches for this rule. Default is false.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create a rule to allow HTTP traffic
New-OPNSenseFirewallRule -Interface "lan" -Protocol "tcp" -Destination "any" -DestinationPort "80" -Description "Allow HTTP"
# Create a rule to block outgoing SMTP traffic
New-OPNSenseFirewallRule -Interface "lan" -Direction "out" -Protocol "tcp" -DestinationPort "25" -Action "block" -Description "Block outgoing SMTP" -Log
```
### Set-OPNSenseFirewallRule
Updates an existing firewall rule on an OPNSense firewall.
#### Syntax
```powershell
Set-OPNSenseFirewallRule
-Uuid <String>
[-Interface <String>]
[-Direction <String>]
[-Protocol <String>]
[-Source <String>]
[-SourcePort <String>]
[-Destination <String>]
[-DestinationPort <String>]
[-Action <String>]
[-Description <String>]
[-Enabled <Boolean>]
[-Log <Boolean>]
[-Force]
[-PassThru]
```
#### Parameters
- **Uuid** - The UUID of the firewall rule to update.
- **Interface** - The interface for the rule.
- **Direction** - The direction for the rule (in, out).
- **Protocol** - The protocol for the rule.
- **Source** - The source address for the rule.
- **SourcePort** - The source port for the rule.
- **Destination** - The destination address for the rule.
- **DestinationPort** - The destination port for the rule.
- **Action** - The action to take (pass, block, reject).
- **Description** - A description for the rule.
- **Enabled** - Whether the rule is enabled.
- **Log** - Whether to log matches for this rule.
- **Force** - Suppresses the confirmation prompt.
- **PassThru** - Returns the updated rule.
#### Examples
```powershell
# Update a firewall rule's description
Set-OPNSenseFirewallRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Description "Updated HTTP rule"
# Update a firewall rule's destination port
Set-OPNSenseFirewallRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -DestinationPort "8080"
```
### Remove-OPNSenseFirewallRule
Removes a firewall rule from an OPNSense firewall.
#### Syntax
```powershell
Remove-OPNSenseFirewallRule
-Uuid <String>
[-Force]
```
#### Parameters
- **Uuid** - The UUID of the firewall rule to remove.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Remove a firewall rule
Remove-OPNSenseFirewallRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
# Remove a firewall rule without confirmation
Remove-OPNSenseFirewallRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6" -Force
```
### Enable-OPNSenseFirewallRule
Enables a firewall rule on an OPNSense firewall.
#### Syntax
```powershell
Enable-OPNSenseFirewallRule
-Uuid <String>
[-Force]
[-PassThru]
```
#### Parameters
- **Uuid** - The UUID of the firewall rule to enable.
- **Force** - Suppresses the confirmation prompt.
- **PassThru** - Returns the updated rule.
#### Examples
```powershell
# Enable a firewall rule
Enable-OPNSenseFirewallRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
```
### Disable-OPNSenseFirewallRule
Disables a firewall rule on an OPNSense firewall.
#### Syntax
```powershell
Disable-OPNSenseFirewallRule
-Uuid <String>
[-Force]
[-PassThru]
```
#### Parameters
- **Uuid** - The UUID of the firewall rule to disable.
- **Force** - Suppresses the confirmation prompt.
- **PassThru** - Returns the updated rule.
#### Examples
```powershell
# Disable a firewall rule
Disable-OPNSenseFirewallRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
```
### Apply-OPNSenseFirewallChanges
Applies pending firewall changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseFirewallChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply firewall changes
Apply-OPNSenseFirewallChanges
# Apply firewall changes without confirmation
Apply-OPNSenseFirewallChanges -Force
```
## NAT Management
### Get-OPNSenseNatRule
Retrieves NAT rules from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseNatRule
[-Uuid <String>]
[-Type <String>]
[-Interface <String>]
[-Description <String>]
```
#### Parameters
- **Uuid** - The UUID of a specific NAT rule to retrieve.
- **Type** - Filter rules by type (port_forward, outbound, 1to1).
- **Interface** - Filter rules by interface.
- **Description** - Filter rules by description.
#### Examples
```powershell
# Get all NAT rules
Get-OPNSenseNatRule
# Get a specific NAT rule by UUID
Get-OPNSenseNatRule -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
# Get all port forwarding rules
Get-OPNSenseNatRule -Type "port_forward"
```
### New-OPNSensePortForwardRule
Creates a new port forwarding rule on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSensePortForwardRule
-Interface <String>
-Protocol <String>
[-Source <String>]
[-SourcePort <String>]
[-Destination <String>]
-DestinationPort <String>
-TargetIP <String>
-TargetPort <String>
[-Description <String>]
[-NatReflection <String>]
[-FilterRuleAssociation <Boolean>]
[-Enabled <Boolean>]
[-Log <Boolean>]
[-Force]
```
#### Parameters
- **Interface** - The interface for the rule.
- **Protocol** - The protocol for the rule (tcp, udp, tcp/udp).
- **Source** - The source address for the rule. Default is "any".
- **SourcePort** - The source port for the rule. Default is "any".
- **Destination** - The destination address for the rule. Default is "wanip".
- **DestinationPort** - The destination port for the rule.
- **TargetIP** - The target IP address for the rule.
- **TargetPort** - The target port for the rule.
- **Description** - A description for the rule.
- **NatReflection** - The NAT reflection mode (enable, disable, purenat). Default is "enable".
- **FilterRuleAssociation** - Whether to create an associated filter rule. Default is true.
- **Enabled** - Whether the rule is enabled. Default is true.
- **Log** - Whether to log matches for this rule. Default is false.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create a basic port forwarding rule
New-OPNSensePortForwardRule -Interface "wan" -Protocol "tcp" -DestinationPort "80" -TargetIP "192.168.1.100" -TargetPort "80" -Description "Web Server"
# Create a port forwarding rule with custom source and destination
New-OPNSensePortForwardRule -Interface "wan" -Protocol "tcp" -Source "203.0.113.0/24" -DestinationPort "443" -TargetIP "192.168.1.100" -TargetPort "443" -Description "Secure Web Server"
```
### Apply-OPNSenseNatChanges
Applies pending NAT changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseNatChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply NAT changes
Apply-OPNSenseNatChanges
# Apply NAT changes without confirmation
Apply-OPNSenseNatChanges -Force
```
## Interface Management
### Get-OPNSenseInterface
Retrieves interface configurations from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseInterface
[-Name <String>]
[-Type <String>]
[-Enabled <Boolean>]
```
#### Parameters
- **Name** - The name of a specific interface to retrieve.
- **Type** - Filter interfaces by type (e.g., physical, vlan, bridge).
- **Enabled** - Filter interfaces by enabled status.
#### Examples
```powershell
# Get all interfaces
Get-OPNSenseInterface
# Get a specific interface by name
Get-OPNSenseInterface -Name "lan"
# Get all VLAN interfaces
Get-OPNSenseInterface -Type "vlan"
```
### Set-OPNSenseInterface
Updates an existing interface on an OPNSense firewall.
#### Syntax
```powershell
Set-OPNSenseInterface
-Name <String>
[-Description <String>]
[-IPv4Address <String>]
[-IPv4Subnet <String>]
[-IPv6Address <String>]
[-IPv6Subnet <String>]
[-Enabled <Boolean>]
[-BlockPrivate <Boolean>]
[-BlockBogons <Boolean>]
[-Force]
[-PassThru]
```
#### Parameters
- **Name** - The name of the interface to update.
- **Description** - A description for the interface.
- **IPv4Address** - The IPv4 address for the interface.
- **IPv4Subnet** - The IPv4 subnet mask for the interface.
- **IPv6Address** - The IPv6 address for the interface.
- **IPv6Subnet** - The IPv6 subnet mask for the interface.
- **Enabled** - Whether the interface is enabled.
- **BlockPrivate** - Whether to block private networks.
- **BlockBogons** - Whether to block bogon networks.
- **Force** - Suppresses the confirmation prompt.
- **PassThru** - Returns the updated interface.
#### Examples
```powershell
# Update an interface's description
Set-OPNSenseInterface -Name "lan" -Description "Updated LAN Interface"
# Update an interface's IPv4 address
Set-OPNSenseInterface -Name "opt1" -IPv4Address "192.168.2.254" -IPv4Subnet "24"
```
### Apply-OPNSenseInterfaceChanges
Applies pending interface changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseInterfaceChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply interface changes
Apply-OPNSenseInterfaceChanges
# Apply interface changes without confirmation
Apply-OPNSenseInterfaceChanges -Force
```
## VLAN Management
### Get-OPNSenseVLAN
Retrieves VLAN configurations from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseVLAN
[-Uuid <String>]
```
#### Parameters
- **Uuid** - The UUID of a specific VLAN to retrieve.
#### Examples
```powershell
# Get all VLANs
Get-OPNSenseVLAN
# Get a specific VLAN by UUID
Get-OPNSenseVLAN -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
```
### New-OPNSenseVLAN
Creates a new VLAN on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSenseVLAN
-Interface <String>
-Tag <Int32>
[-Priority <Int32>]
[-Description <String>]
[-Force]
```
#### Parameters
- **Interface** - The parent interface for the VLAN.
- **Tag** - The VLAN tag (1-4094).
- **Priority** - The VLAN priority (0-7).
- **Description** - A description for the VLAN.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create a new VLAN
New-OPNSenseVLAN -Interface "em0" -Tag 10 -Description "Management VLAN"
# Create a new VLAN with priority
New-OPNSenseVLAN -Interface "em1" -Tag 20 -Priority 5 -Description "Voice VLAN"
```
### New-OPNSenseSubnetVLANs
Creates VLANs for subnets by dividing a network into smaller subnets.
#### Syntax
```powershell
New-OPNSenseSubnetVLANs
-ParentInterface <String>
-Network <String>
-SubnetMaskBits <Int32>
-StartingVlanId <Int32>
[-VlanIdIncrement <Int32>]
[-DescriptionPrefix <String>]
[-EnableDHCP <Boolean>]
[-DHCPRangeStart <String>]
[-DHCPRangeEnd <String>]
[-DHCPDomain <String>]
[-DHCPDnsServers <String[]>]
[-Force]
```
#### Parameters
- **ParentInterface** - The parent interface for the VLANs.
- **Network** - The network in CIDR notation to divide into subnets.
- **SubnetMaskBits** - The subnet mask bits for the subnets.
- **StartingVlanId** - The starting VLAN ID.
- **VlanIdIncrement** - The increment for VLAN IDs. Default is 1.
- **DescriptionPrefix** - The prefix for VLAN descriptions. Default is "VLAN-".
- **EnableDHCP** - Whether to enable DHCP on the created VLANs. Default is false.
- **DHCPRangeStart** - The starting IP address for the DHCP range.
- **DHCPRangeEnd** - The ending IP address for the DHCP range.
- **DHCPDomain** - The domain name for DHCP clients.
- **DHCPDnsServers** - The DNS servers for DHCP clients.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create VLANs for subnets
New-OPNSenseSubnetVLANs -ParentInterface "em0" -Network "192.168.0.0/24" -SubnetMaskBits 27 -StartingVlanId 10
# Create VLANs for subnets with DHCP enabled
New-OPNSenseSubnetVLANs -ParentInterface "em0" -Network "10.0.0.0/16" -SubnetMaskBits 24 -StartingVlanId 100 -EnableDHCP -DHCPDomain "example.com" -DHCPDnsServers "8.8.8.8","8.8.4.4"
```
## Gateway Management
### Get-OPNSenseGateway
Retrieves gateway configurations from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseGateway
[-Name <String>]
[-Interface <String>]
[-Protocol <String>]
```
#### Parameters
- **Name** - The name of a specific gateway to retrieve.
- **Interface** - Filter gateways by interface.
- **Protocol** - Filter gateways by protocol (IPv4, IPv6).
#### Examples
```powershell
# Get all gateways
Get-OPNSenseGateway
# Get a specific gateway by name
Get-OPNSenseGateway -Name "WAN_GATEWAY"
# Get all gateways for a specific interface
Get-OPNSenseGateway -Interface "wan"
```
### New-OPNSenseGateway
Creates a new gateway on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSenseGateway
-Name <String>
-Interface <String>
-IPAddress <String>
[-Description <String>]
[-Enabled <Boolean>]
[-Monitor <String>]
[-MonitorDisable <Boolean>]
[-Weight <Int32>]
[-Protocol <String>]
[-Force]
```
#### Parameters
- **Name** - The name of the gateway.
- **Interface** - The interface for the gateway.
- **IPAddress** - The IP address of the gateway.
- **Description** - A description for the gateway.
- **Enabled** - Whether the gateway is enabled. Default is true.
- **Monitor** - The IP address to monitor for gateway status.
- **MonitorDisable** - Whether to disable monitoring for this gateway. Default is false.
- **Weight** - The weight of the gateway for load balancing. Default is 1.
- **Protocol** - The protocol for the gateway (IPv4, IPv6). Default is IPv4.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create a basic gateway
New-OPNSenseGateway -Name "WAN2_GATEWAY" -Interface "opt1" -IPAddress "203.0.113.1" -Description "Secondary WAN Gateway"
# Create a gateway with monitoring
New-OPNSenseGateway -Name "WAN3_GATEWAY" -Interface "opt2" -IPAddress "198.51.100.1" -Description "Tertiary WAN Gateway" -Monitor "198.51.100.254"
```
### Apply-OPNSenseGatewayChanges
Applies pending gateway changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseGatewayChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply gateway changes
Apply-OPNSenseGatewayChanges
# Apply gateway changes without confirmation
Apply-OPNSenseGatewayChanges -Force
```
## Route Management
### Get-OPNSenseRoute
Retrieves static routes from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseRoute
[-Uuid <String>]
[-Network <String>]
[-Gateway <String>]
[-Description <String>]
```
#### Parameters
- **Uuid** - The UUID of a specific route to retrieve.
- **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"
```
### New-OPNSenseRoute
Creates a new static route on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSenseRoute
-Network <String>
-Gateway <String>
[-Description <String>]
[-Disabled <Boolean>]
[-Force]
```
#### 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
```
### Apply-OPNSenseRouteChanges
Applies pending route changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseRouteChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply route changes
Apply-OPNSenseRouteChanges
# Apply route changes without confirmation
Apply-OPNSenseRouteChanges -Force
```
## DNS Management
### Get-OPNSenseDNSServer
Retrieves DNS server configurations from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseDNSServer
```
#### Examples
```powershell
# Get DNS server configuration
Get-OPNSenseDNSServer
```
### Set-OPNSenseDNSServer
Updates the DNS server configuration on an OPNSense firewall.
#### Syntax
```powershell
Set-OPNSenseDNSServer
[-Enabled <Boolean>]
[-ListenIPs <String[]>]
[-Port <Int32>]
[-DNSSECEnabled <Boolean>]
[-ForwardingEnabled <Boolean>]
[-ForwardingServers <String[]>]
[-CacheEnabled <Boolean>]
[-CacheSize <Int32>]
[-PrefetchEnabled <Boolean>]
[-PrefetchDomains <Boolean>]
[-Force]
[-PassThru]
```
#### Parameters
- **Enabled** - Whether the DNS server is enabled.
- **ListenIPs** - The IP addresses to listen on.
- **Port** - The port to listen on. Default is 53.
- **DNSSECEnabled** - Whether DNSSEC is enabled.
- **ForwardingEnabled** - Whether DNS forwarding is enabled.
- **ForwardingServers** - The DNS servers to forward queries to.
- **CacheEnabled** - Whether DNS caching is enabled.
- **CacheSize** - The size of the DNS cache in MB.
- **PrefetchEnabled** - Whether DNS prefetching is enabled.
- **PrefetchDomains** - Whether to prefetch domains.
- **Force** - Suppresses the confirmation prompt.
- **PassThru** - Returns the updated DNS server configuration.
#### Examples
```powershell
# Enable the DNS server
Set-OPNSenseDNSServer -Enabled
# Configure DNS forwarding
Set-OPNSenseDNSServer -ForwardingEnabled -ForwardingServers "8.8.8.8","8.8.4.4"
```
### Apply-OPNSenseDNSChanges
Applies pending DNS changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseDNSChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply DNS changes
Apply-OPNSenseDNSChanges
# Apply DNS changes without confirmation
Apply-OPNSenseDNSChanges -Force
```
## DHCP Management
### Get-OPNSenseDHCPServer
Retrieves DHCP server configurations from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseDHCPServer
[-Interface <String>]
```
#### Parameters
- **Interface** - The interface to get the DHCP server configuration for.
#### Examples
```powershell
# Get all DHCP servers
Get-OPNSenseDHCPServer
# Get the DHCP server for a specific interface
Get-OPNSenseDHCPServer -Interface "lan"
```
### New-OPNSenseDHCPServer
Creates a new DHCP server on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSenseDHCPServer
-Interface <String>
-RangeFrom <String>
-RangeTo <String>
[-Domain <String>]
[-DnsServers <String[]>]
[-GatewayIP <String>]
[-LeaseTime <Int32>]
[-DenyUnknownClients <Boolean>]
[-IgnoreClientIdentifiers <Boolean>]
[-Enabled <Boolean>]
[-Force]
```
#### Parameters
- **Interface** - The interface to create the DHCP server on.
- **RangeFrom** - The starting IP address of the DHCP range.
- **RangeTo** - The ending IP address of the DHCP range.
- **Domain** - The domain name to provide to DHCP clients.
- **DnsServers** - The DNS servers to provide to DHCP clients.
- **GatewayIP** - The gateway IP address to provide to DHCP clients.
- **LeaseTime** - The lease time in seconds. Default is 86400 (1 day).
- **DenyUnknownClients** - Whether to deny unknown clients. Default is false.
- **IgnoreClientIdentifiers** - Whether to ignore client identifiers. Default is false.
- **Enabled** - Whether the DHCP server is enabled. Default is true.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create a basic DHCP server
New-OPNSenseDHCPServer -Interface "lan" -RangeFrom "192.168.1.100" -RangeTo "192.168.1.200" -Domain "example.com" -DnsServers "192.168.1.1","8.8.8.8" -GatewayIP "192.168.1.1"
# Create a DHCP server with advanced options
New-OPNSenseDHCPServer -Interface "opt1" -RangeFrom "10.0.0.100" -RangeTo "10.0.0.200" -Domain "internal.example.com" -DnsServers "10.0.0.1","8.8.4.4" -GatewayIP "10.0.0.1" -LeaseTime 43200 -DenyUnknownClients
```
### Get-OPNSenseDHCPLease
Retrieves DHCP leases from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseDHCPLease
[-Interface <String>]
[-MACAddress <String>]
[-IPAddress <String>]
[-Hostname <String>]
[-Status <String>]
```
#### Parameters
- **Interface** - The interface to get DHCP leases for.
- **MACAddress** - Filter leases by MAC address.
- **IPAddress** - Filter leases by IP address.
- **Hostname** - Filter leases by hostname.
- **Status** - Filter leases by status (active, expired, etc.).
#### Examples
```powershell
# Get all DHCP leases
Get-OPNSenseDHCPLease
# Get DHCP leases for a specific interface
Get-OPNSenseDHCPLease -Interface "lan"
# Get DHCP leases for a specific MAC address
Get-OPNSenseDHCPLease -MACAddress "00:11:22:33:44:55"
```
### Apply-OPNSenseDHCPChanges
Applies pending DHCP changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseDHCPChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply DHCP changes
Apply-OPNSenseDHCPChanges
# Apply DHCP changes without confirmation
Apply-OPNSenseDHCPChanges -Force
```
## Alias Management
### Get-OPNSenseAlias
Retrieves aliases from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseAlias
[-Name <String>]
[-Type <String>]
```
#### Parameters
- **Name** - The name of a specific alias to retrieve.
- **Type** - Filter aliases by type (host, network, port, url, urltable, geoip).
#### Examples
```powershell
# Get all aliases
Get-OPNSenseAlias
# Get a specific alias by name
Get-OPNSenseAlias -Name "WebServers"
# Get all network aliases
Get-OPNSenseAlias -Type "network"
```
### New-OPNSenseAlias
Creates a new alias on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSenseAlias
-Name <String>
-Type <String>
-Content <String>
[-Description <String>]
[-Enabled <Boolean>]
[-UpdateFrequency <Int32>]
[-Force]
```
#### Parameters
- **Name** - The name of the alias.
- **Type** - The type of the alias (host, network, port, url, urltable, geoip).
- **Content** - The content of the alias (comma-separated list of values).
- **Description** - A description for the alias.
- **Enabled** - Whether the alias is enabled. Default is true.
- **UpdateFrequency** - The update frequency for URL and URL table aliases (in days).
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create a host alias
New-OPNSenseAlias -Name "WebServers" -Type "host" -Content "192.168.1.10,192.168.1.11,192.168.1.12" -Description "Web Servers"
# Create a network alias
New-OPNSenseAlias -Name "InternalNetworks" -Type "network" -Content "192.168.1.0/24,192.168.2.0/24" -Description "Internal Networks"
# Create a URL table alias
New-OPNSenseAlias -Name "BlockList" -Type "urltable" -Content "https://www.example.com/blocklist.txt" -Description "Malicious IPs" -UpdateFrequency 1
```
### Apply-OPNSenseAliasChanges
Applies pending alias changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseAliasChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply alias changes
Apply-OPNSenseAliasChanges
# Apply alias changes without confirmation
Apply-OPNSenseAliasChanges -Force
```
## Network Utilities
### Invoke-OPNSenseNetworkCalculation
Performs various network calculations on IP networks.
#### Syntax
```powershell
Invoke-OPNSenseNetworkCalculation
-Network <String>
-Operation <String>
[-PrefixLength <Int32>]
[-SubnetCount <Int32>]
[-IpAddress <String>]
[-AdditionalNetworks <String[]>]
```
#### Parameters
- **Network** - The network in CIDR notation to perform calculations on.
- **Operation** - The operation to perform (Info, Subnet, SubnetByCount, Contains, Overlaps, Supernet, SupernetSummarize).
- **PrefixLength** - The prefix length to use for subnetting.
- **SubnetCount** - The number of subnets to create when using SubnetByCount.
- **IpAddress** - The IP address to check when using Contains.
- **AdditionalNetworks** - Additional networks to use with Overlaps, Supernet, or SupernetSummarize.
#### Examples
```powershell
# Show network information
Invoke-OPNSenseNetworkCalculation -Network "192.168.1.0/24" -Operation Info
# Subnet a network into /27 networks
Invoke-OPNSenseNetworkCalculation -Network "10.0.0.0/24" -Operation Subnet -PrefixLength 27
# Check if an IP is within a network
Invoke-OPNSenseNetworkCalculation -Network "192.168.1.0/24" -Operation Contains -IpAddress "192.168.1.100"
```
### ConvertTo-OPNSenseNetworkNotation
Converts between different network notation formats.
#### Syntax
```powershell
ConvertTo-OPNSenseNetworkNotation
[-CIDR <Int32>]
[-SubnetMask <String>]
```
#### Parameters
- **CIDR** - The CIDR prefix length to convert to a subnet mask.
- **SubnetMask** - The subnet mask to convert to a CIDR prefix length.
#### Examples
```powershell
# Convert CIDR to subnet mask
ConvertTo-OPNSenseNetworkNotation -CIDR 24 # Returns "255.255.255.0"
# Convert subnet mask to CIDR
ConvertTo-OPNSenseNetworkNotation -SubnetMask "255.255.255.0" # Returns 24
```
## Tailscale Integration
### Get-OPNSenseTailscaleStatus
Retrieves the status of Tailscale on an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseTailscaleStatus
```
#### Examples
```powershell
# Get Tailscale status
Get-OPNSenseTailscaleStatus
```
### Install-OPNSenseTailscale
Installs the Tailscale plugin on an OPNSense firewall.
#### Syntax
```powershell
Install-OPNSenseTailscale
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Install Tailscale
Install-OPNSenseTailscale
# Install Tailscale without confirmation
Install-OPNSenseTailscale -Force
```
### Enable-OPNSenseTailscale
Enables Tailscale on an OPNSense firewall.
#### Syntax
```powershell
Enable-OPNSenseTailscale
-AuthKey <String>
[-Hostname <String>]
[-AcceptDNS <Boolean>]
[-AcceptRoutes <Boolean>]
[-AdvertiseRoutes <String>]
[-ExitNode <Boolean>]
[-Force]
[-PassThru]
```
#### Parameters
- **AuthKey** - The Tailscale authentication key.
- **Hostname** - The hostname to use for the Tailscale node.
- **AcceptDNS** - Whether to accept DNS settings from Tailscale.
- **AcceptRoutes** - Whether to accept routes from Tailscale.
- **AdvertiseRoutes** - The routes to advertise to Tailscale.
- **ExitNode** - Whether to use this node as an exit node.
- **Force** - Suppresses the confirmation prompt.
- **PassThru** - Returns the Tailscale status.
#### Examples
```powershell
# Enable Tailscale with basic settings
Enable-OPNSenseTailscale -AuthKey "tskey-auth-abcdef123456"
# Enable Tailscale with route advertisement
Enable-OPNSenseTailscale -AuthKey "tskey-auth-abcdef123456" -AdvertiseRoutes "192.168.1.0/24,10.0.0.0/8"
```
## Cron Job Management
### Get-OPNSenseCronJob
Retrieves cron jobs from an OPNSense firewall.
#### Syntax
```powershell
Get-OPNSenseCronJob
[-Uuid <String>]
[-Description <String>]
[-Command <String>]
```
#### Parameters
- **Uuid** - The UUID of a specific cron job to retrieve.
- **Description** - Filter cron jobs by description.
- **Command** - Filter cron jobs by command.
#### Examples
```powershell
# Get all cron jobs
Get-OPNSenseCronJob
# Get a specific cron job by UUID
Get-OPNSenseCronJob -Uuid "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
# Get cron jobs with a specific description
Get-OPNSenseCronJob -Description "Backup"
```
### New-OPNSenseCronJob
Creates a new cron job on an OPNSense firewall.
#### Syntax
```powershell
New-OPNSenseCronJob
-Description <String>
-Command <String>
-Parameters <String>
-Minute <String>
-Hour <String>
-Day <String>
-Month <String>
-Weekday <String>
[-Enabled <Boolean>]
[-Force]
```
#### Parameters
- **Description** - A description for the cron job.
- **Command** - The command to execute.
- **Parameters** - The parameters for the command.
- **Minute** - The minute(s) when the job should run (0-59, *, */5, etc.).
- **Hour** - The hour(s) when the job should run (0-23, *, */2, etc.).
- **Day** - The day(s) of the month when the job should run (1-31, *, */2, etc.).
- **Month** - The month(s) when the job should run (1-12, *, */2, etc.).
- **Weekday** - The weekday(s) when the job should run (0-7, *, etc., where 0 and 7 are Sunday).
- **Enabled** - Whether the cron job is enabled. Default is true.
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Create a daily backup cron job
New-OPNSenseCronJob -Description "Daily Backup" -Command "configctl" -Parameters "system backup" -Minute "0" -Hour "2" -Day "*" -Month "*" -Weekday "*"
# Create a weekly update cron job
New-OPNSenseCronJob -Description "Weekly Update" -Command "configctl" -Parameters "firmware update" -Minute "0" -Hour "3" -Day "*" -Month "*" -Weekday "0"
```
### Apply-OPNSenseCronJobChanges
Applies pending cron job changes on an OPNSense firewall.
#### Syntax
```powershell
Apply-OPNSenseCronJobChanges
[-Force]
```
#### Parameters
- **Force** - Suppresses the confirmation prompt.
#### Examples
```powershell
# Apply cron job changes
Apply-OPNSenseCronJobChanges
# Apply cron job changes without confirmation
Apply-OPNSenseCronJobChanges -Force
```