Skip to content

network

VPN network management commands for NDCLI. These commands allow you to create and manage WireGuard-based overlay networks, add devices as members, configure links between members, and publish IP prefixes.

Command alias: net

CommandDescription
network listList VPN networks
network describeShow VPN network details
network createCreate a VPN network
network updateUpdate a VPN network
network deleteDelete a VPN network
network member listList VPN network members
network member describeShow VPN member details
network member addAdd a device as VPN member
network member updateUpdate a VPN member
network member removeRemove a VPN member
network link listList VPN connections
network link describeShow VPN connection details
network link createCreate a VPN link between two members
network link updateUpdate a VPN link
network link deleteDelete a VPN link
network prefix listList published prefixes for a VPN member
network prefix addPublish a prefix on a VPN member
network prefix updateUpdate a VPN member prefix
network prefix removeRemove a prefix from a VPN member

List all VPN networks in the organization.

Terminal window
ndcli network list [flags]
FlagTypeDefaultDescription
--pageint1Page number
--per-pageint30Items per page
Terminal window
ndcli network list
ndcli network list -f json

Show detailed information about a VPN network.

Terminal window
ndcli network describe [network]
ArgumentRequiredDescription
networkYesNetwork name
Terminal window
ndcli network describe my-network
ndcli network describe my-network -f json

Create a new VPN overlay network.

Terminal window
ndcli network create [name] [flags]
ArgumentRequiredDescription
nameYesNetwork name
FlagTypeDefaultDescription
--cidrstringOverlay CIDR (required, e.g. 10.100.0.0/24)
--listen-portint51820Default WireGuard listen port
--mtuintDefault MTU (1280–9000)
--keepaliveintDefault keepalive interval (1–65535 seconds)
--auto-connect-hubsboolfalseAuto-create links between HUB members
--auto-firewall-rulesboolfalseAuto-generate OPNsense pass rules on the wireguard interface group so peers can reach each other’s published subnets (see Automatic firewall rules)
Terminal window
ndcli network create my-network --cidr 10.100.0.0/24
ndcli network create branch-vpn --cidr 10.200.0.0/24 --listen-port 51821 --keepalive 25
ndcli network create hub-network --cidr 10.0.0.0/24 --auto-connect-hubs
ndcli network create site-to-site --cidr 10.100.0.0/24 --auto-firewall-rules

Update an existing VPN network’s settings.

Terminal window
ndcli network update [network] [flags]
ArgumentRequiredDescription
networkYesNetwork name
FlagTypeDefaultDescription
--namestringNew network name
--listen-portintDefault WireGuard listen port
--mtuintDefault MTU (use 0 to clear)
--keepaliveintDefault keepalive interval (use 0 to clear)
--auto-connect-hubsboolAuto-create links between HUB members
--auto-firewall-rulesboolToggle auto-generated pass rules on the wireguard interface group (see Automatic firewall rules)
-y, --yesboolfalseSkip confirmation prompt
Terminal window
ndcli network update my-network --name new-name
ndcli network update my-network --keepalive 25
ndcli network update my-network --mtu 0
ndcli network update my-network --auto-firewall-rules=false

Delete a VPN network.

Terminal window
ndcli network delete [network] [flags]
ArgumentRequiredDescription
networkYesNetwork name
FlagTypeDefaultDescription
-y, --yesboolfalseSkip confirmation prompt
Terminal window
ndcli network delete my-network
ndcli network delete my-network --yes

List all members in a VPN network.

Terminal window
ndcli network member list [network] [flags]
ArgumentRequiredDescription
networkYesNetwork name
FlagTypeDefaultDescription
--pageint1Page number
--per-pageint30Items per page
Terminal window
ndcli network member list my-network
ndcli network member list my-network -f json

Show detailed information about a VPN network member.

Terminal window
ndcli network member describe [network] [device]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
Terminal window
ndcli network member describe my-network my-firewall

Add a device to a VPN network as a member.

Terminal window
ndcli network member add [network] [device] [flags]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
FlagTypeDefaultDescription
--rolestringSPOKEMember role: HUB or SPOKE
--overlay-ipstringOverlay IPv4 address (auto-allocated if empty)
--endpoint-hoststringPublic hostname or IP for incoming connections
--endpoint-portintPublic endpoint port
--listen-portintWireGuard listen port override
--mtuintMTU override
--keepaliveintKeepalive interval override (seconds)
--transit-via-hubstringRoute through this HUB device name
--enabledbooltrueEnable the member
RoleDescription
HUBActs as a relay; auto-connects to all SPOKE members and (if auto-connect-hubs is on) other HUBs
SPOKEConnects to HUBs automatically; spoke-to-spoke requires a manual link
Terminal window
# Add a spoke member (auto-allocated overlay IP)
ndcli network member add my-network branch-firewall
# Add a hub member with a public endpoint
ndcli network member add my-network datacenter-fw \
--role HUB \
--endpoint-host vpn.example.com \
--endpoint-port 51820
# Add a spoke with a specific overlay IP
ndcli network member add my-network remote-fw --overlay-ip 10.100.0.5

Update a VPN network member’s settings.

Terminal window
ndcli network member update [network] [device] [flags]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
FlagTypeDefaultDescription
--rolestringMember role: HUB or SPOKE
--endpoint-hoststringPublic hostname or IP (use none to clear)
--endpoint-portintPublic endpoint port (use 0 to clear)
--listen-portintWireGuard listen port override (use 0 to clear)
--mtuintMTU override (use 0 to clear)
--keepaliveintKeepalive interval override (use 0 to clear)
--transit-via-hubstringHUB device to route through (use none to clear)
--enabledboolEnable or disable the member
--regenerate-keysboolfalseRegenerate the WireGuard keypair
Terminal window
ndcli network member update my-network branch-fw --endpoint-host new.ip.example.com
ndcli network member update my-network branch-fw --endpoint-host none
ndcli network member update my-network branch-fw --regenerate-keys

Remove a device from a VPN network.

Terminal window
ndcli network member remove [network] [device] [flags]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
FlagTypeDefaultDescription
-y, --yesboolfalseSkip confirmation prompt
Terminal window
ndcli network member remove my-network branch-fw
ndcli network member remove my-network branch-fw --yes

List all effective VPN connections in a network. By default, shows effective connections derived from member roles. Use --raw to see only explicit link overrides stored in the database.

Terminal window
ndcli network link list [network] [flags]
ArgumentRequiredDescription
networkYesNetwork name
FlagTypeDefaultDescription
--devicestringFilter connections involving this device
--rawboolfalseShow raw link database rows instead of effective connections
--pageint1Page number (only with --raw)
--per-pageint30Items per page (only with --raw)
PairConnected?
HUB ↔ SPOKEAlways (automatic)
HUB ↔ HUBAutomatic if auto-connect-hubs is enabled on the network
SPOKE ↔ SPOKEOnly via a manual link (network link create)
Terminal window
ndcli network link list my-network
ndcli network link list my-network --device branch-fw
ndcli network link list my-network --raw

Show details of a specific VPN connection between two members.

Terminal window
ndcli network link describe [network] [device-a] [device-b]
ArgumentRequiredDescription
networkYesNetwork name
device-aYesFirst device name
device-bYesSecond device name
Terminal window
ndcli network link describe my-network spoke-a spoke-b

Create a manual VPN link between two network members. This is required for SPOKE-to-SPOKE connections.

Terminal window
ndcli network link create [network] [device-a] [device-b] [flags]
ArgumentRequiredDescription
networkYesNetwork name
device-aYesFirst device name
device-bYesSecond device name
FlagTypeDefaultDescription
--enabledbooltrueEnable the link
--generate-pskboolfalseGenerate a WireGuard pre-shared key for additional security
Terminal window
ndcli network link create my-network spoke-a spoke-b
ndcli network link create my-network spoke-a spoke-b --generate-psk

Update a VPN link between two members.

Terminal window
ndcli network link update [network] [device-a] [device-b] [flags]
ArgumentRequiredDescription
networkYesNetwork name
device-aYesFirst device name
device-bYesSecond device name
FlagTypeDefaultDescription
--enabledbooltrueEnable or disable the link
--regenerate-pskboolfalseRegenerate the pre-shared key
Terminal window
ndcli network link update my-network spoke-a spoke-b --enabled=false
ndcli network link update my-network spoke-a spoke-b --regenerate-psk

Delete a VPN link between two members.

Terminal window
ndcli network link delete [network] [device-a] [device-b] [flags]
ArgumentRequiredDescription
networkYesNetwork name
device-aYesFirst device name
device-bYesSecond device name
FlagTypeDefaultDescription
-y, --yesboolfalseSkip confirmation prompt
Terminal window
ndcli network link delete my-network spoke-a spoke-b

List all IP prefixes published by a VPN network member.

Terminal window
ndcli network prefix list [network] [device] [flags]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
FlagTypeDefaultDescription
--pageint1Page number
--per-pageint30Items per page
Terminal window
ndcli network prefix list my-network branch-fw

Publish an IP prefix on a VPN network member. The prefix is defined by a variable (typically of type prefix) associated with that device.

Terminal window
ndcli network prefix add [network] [device] [variable] [flags]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
variableYesVariable name that holds the prefix value
FlagTypeDefaultDescription
--publishbooltrueAdvertise the prefix to other VPN peers
Terminal window
ndcli network prefix add my-network branch-fw lan_prefix
ndcli network prefix add my-network branch-fw lan_prefix --publish=false

Update the settings of a published prefix on a VPN member.

Terminal window
ndcli network prefix update [network] [device] [variable] [flags]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
variableYesVariable name
FlagTypeDefaultDescription
--publishbooltrueWhether to advertise the prefix to peers
Terminal window
ndcli network prefix update my-network branch-fw lan_prefix --publish=false

Remove a published prefix from a VPN network member.

Terminal window
ndcli network prefix remove [network] [device] [variable] [flags]
ArgumentRequiredDescription
networkYesNetwork name
deviceYesDevice name
variableYesVariable name
FlagTypeDefaultDescription
-y, --yesboolfalseSkip confirmation prompt
Terminal window
ndcli network prefix remove my-network branch-fw lan_prefix

WireGuard only handles tunnel encryption — OPNsense still blocks peer traffic by default until you author pass rules. The --auto-firewall-rules flag on network create / network update asks NetDefense to emit those rules for you on every sync.

When the flag is on, every member device gets one pass rule per (remote published prefix, local published prefix) pair on the wireguard interface group, plus one overlay-ping rule allowing anything in the network’s overlay CIDR to reach the member’s own tunnel IP. Descriptions are tagged [nd-vpn:<network-name>] so you can spot them in the OPNsense firewall UI.

The flag is off by default — firewall policy is an explicit decision. Only enable it if you want NetDefense to manage these rules for you. Toggling it off removes the rules on the next sync; NetDefense never touches rules it didn’t create.

Terminal window
ndcli network create site-to-site --cidr 10.100.0.0/24 --auto-firewall-rules
ndcli network update site-to-site --auto-firewall-rules=false # stop managing them

If you need stricter policy than the cross-product rules NetDefense generates, leave the flag off and author the rules through a RULE-type snippet on a template instead.