pfSense Commands
Prerequisites
Load secrets before using pfSense commands:
dsource d000 dev/network
Required environment variables:
| Variable | Description |
|---|---|
|
pfSense management IP |
|
API username |
|
API password/key |
DNS Resolver Operations
The dns subcommand manages DNS host overrides in the Unbound resolver.
dns add
Add a DNS host override:
# Add with auto-apply
netapi pfsense dns add -h nas-01 -d inside.domusdigitalis.dev -i 10.50.1.50
# Add with description
netapi pfsense dns add -h printer-01 -d inside.domusdigitalis.dev -i 10.50.1.100 --descr "Office Printer"
# Add without auto-apply (batch changes)
netapi pfsense dns add -h test-01 -d lab.local -i 10.50.2.10 --no-apply
Options:
| Option | Required | Description |
|---|---|---|
|
Yes |
Hostname (e.g., nas-01) |
|
Yes |
Domain (e.g., inside.domusdigitalis.dev) |
|
Yes |
IP address |
|
No |
Description |
|
No |
Apply immediately (default: true) |
dns update
Update an existing DNS host override:
# Update IP address
netapi pfsense dns update --id 5 -h nas-01 -d inside.domusdigitalis.dev -i 10.50.1.51
# Update with new description
netapi pfsense dns update --id 5 -h nas-01 -d inside.domusdigitalis.dev -i 10.50.1.51 --descr "New NAS"
Options:
| Option | Required | Description |
|---|---|---|
|
Yes |
Override ID to update |
|
Yes |
Hostname |
|
Yes |
Domain |
|
Yes |
New IP address |
|
No |
Description |
|
No |
Apply immediately (default: true) |
Certificate Operations
The cert subcommand manages SSL/TLS certificates.
cert set-webgui
Set the WebGUI certificate via SSH:
# Set certificate by refid
netapi pfsense cert set-webgui -r 62a1b2c3d4e5f
# Use specific SSH alias
netapi pfsense cert set-webgui -r 62a1b2c3d4e5f -s pfsense-backup
# Skip webConfigurator restart
netapi pfsense cert set-webgui -r 62a1b2c3d4e5f --no-restart
| The REST API doesn’t support setting the WebGUI certificate, so this uses SSH to run PHP directly on pfSense. |
Options:
| Option | Required | Description |
|---|---|---|
|
Yes |
Certificate refid |
|
No |
pfSense SSH host alias (default: pfsense) |
|
No |
Restart webConfigurator (default: true) |
cert import-from-certmgr
Import certificate from certmgr-01 to pfSense:
# Import default domain certificate
netapi pfsense cert import-from-certmgr
# Import specific domain
netapi pfsense cert import-from-certmgr -D guest.domusdigitalis.dev
# Import without setting as WebGUI cert
netapi pfsense cert import-from-certmgr --no-webgui
# Custom certmgr host
netapi pfsense cert import-from-certmgr -c 10.50.1.60 --certmgr-user ansible
This command:
-
Fetches certificate from certmgr-01 via SSH
-
Imports via pfSense REST API
-
Sets as WebGUI certificate via SSH (if
--webguienabled)
Options:
| Option | Required | Description |
|---|---|---|
|
No |
certmgr host (default: 10.50.1.60) |
|
No |
certmgr SSH user (default: ansible) |
|
No |
Certificate domain (default: guest.domusdigitalis.dev) |
|
No |
Certificate description (default: LetsEncrypt) |
|
No |
Set as WebGUI certificate (default: true) |
|
No |
pfSense SSH host alias (default: pfsense) |
Validation Loop
Quick validation of all pfSense commands:
for cmd in info interfaces arp leases; do
echo "=== pfsense $cmd ==="
uv run netapi pfsense $cmd 2>&1 | head -20
echo
done
echo "=== pfsense dns list ==="
uv run netapi pfsense dns list 2>&1 | head -20
echo
echo "=== pfsense cert list ==="
uv run netapi pfsense cert list 2>&1 | head -20