Files
gsadmin 6e86c481a4 feat: Reserve a PXE server, float the shared rules, and soften the defaults
Credentials:
- The stock appliance password is retained by default. It is typed at a
  console before being changed, and the appliance prompts for a change on
  first sign in regardless
- GenerateRootPassword opts into a random password, now sixteen characters
  without symbols rather than twenty with them

Preboot execution environment:
- Get-HyperVNextAvailableMACAddress reads the next dynamic address the
  hypervisor will issue, treating the six bytes as one integer so an offset
  carries correctly across octets
- That address is reserved within Kea for a PXE server on the Infrastructure
  network, which allows the reservation to exist before the virtual machine
  that will carry the address does
- The reserved address populates a PXE_SERVERS_001 alias, becomes next_server
  and tftp_server_name within every scope, and is reachable through a floating
  rule from RFC1918
- The reservation is skipped with a warning on a host that does not run the
  hypervisor, so the document still generates

Rules:
- The management, jump host, name resolution and PXE rules are now floating.
  They were identical on every interface, so a sixteen network policy falls
  from 87 rules to 28
- Descriptions no longer name the network they were generated for, since a
  floating rule applies everywhere
- The RFC1918 alias now has a purpose as the source of the internal permits

Kea:
- The socket type defaults to udp and is exposed as DHCPSocketType. Raw
  remains the safer choice for a client that holds no address yet
- Option data auto collection is enabled

Elsewhere:
- Outbound network address translation moves to hybrid, with no manual rules
- Zone roles carry three digit indexes, so Servers_Zone_001

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 19:27:03 -04:00

3.1 KiB

Documentation

Repository readme

Every page below is generated from the comment based help of the file it documents, so it cannot drift away from the code.

Entry point

Page Purpose
Invoke-OPNSenseVMDeployment Idempotently deploys a fully preconfigured OPNsense virtual firewall into a Hyper-V lab environment.

Toolkit functions

Page Purpose
Expand-CompressedFile Expands a compressed file or archive using the first available extraction provider.
Get-HostUpstreamDNSConfiguration Determines the upstream name resolution configuration of the device that hosts the hypervisor.
Get-HyperVNextAvailableMACAddress Retrieves the next media access control address that the hypervisor will hand to a virtual machine.
Get-HyperVStorageLocation Dynamically determines where virtual machines and virtual hard disks should be stored on the hypervisor.
Get-OPNSenseInstallationMedia Idempotently acquires the OPNsense installation media.
Initialize-OPNSenseVirtualSwitch Idempotently resolves or creates the virtual switches that the virtual firewall is attached to.
Install-HyperVPlatform Idempotently detects and installs the Microsoft Hyper-V platform and its powershell management module.
New-OPNSenseConfigurationDisk Creates or refreshes the virtual hard disk that carries the OPNsense configuration document.
New-OPNSenseConfigurationDocument Generates the OPNsense configuration document from a network plan.
New-OPNSenseNetworkPlan Produces the lab network plan that the OPNsense configuration document is generated from.
New-OPNSensePasswordHash Generates a password hash in the format that OPNsense stores within its configuration document.
New-OPNSenseVirtualMachine Idempotently creates and configures the OPNsense virtual machine.
New-RandomPassword Generates a random password using a cryptographically secure random number generator.
Remove-OPNSenseDeployment Removes everything that a previous execution of the deployment created.
Save-OPNSenseConfigurationDocument Writes an OPNsense configuration document to disk.
Save-ToolkitModule Idempotently saves one or more powershell modules into the toolkit module directory.
Start-ProcessWithOutput Allows for the execution of processes with the ability to return their output without first dumping the content to a file. It can all be kept in memory.
Test-PendingReboot Determines whether the operating system is currently waiting for a restart.