How to manage MAAS networks

Errors or typos? Topics missing? Hard to read? Let us know.

Basics

Manage MAAS networks by setting gateways, routes, loopback, bridges, and bonds.

Set default gateway

maas $PROFILE subnet update $SUBNET_CIDR gateway_ip=$MY_GATEWAY

Add static routes

UI:
Networking > Subnets > (Select subnet) > Add static route > Fill fields > Save

CLI:

maas $PROFILE static-routes create source=$SOURCE_SUBNET destination=$DEST_SUBNET gateway_ip=$GATEWAY_IP

Configure loopback

After commissioning, manually add a loopback interface using a placeholder MAC (00:00:00:00:00:00).

For automation, use cloud-init.

Create bridges

UI:
Machines > (Select machine) > Network > (Select interface) > Create bridge > (Configure details) > Save interface

CLI:

INTERFACE_ID=$(maas $PROFILE machine read $SYSTEM_ID | jq .boot_interface.id)
BRIDGE_ID=$(maas $PROFILE interfaces create-bridge $SYSTEM_ID name=br0 parent=$INTERFACE_ID | jq .id)
SUBNET_ID=$(maas $PROFILE subnets read | jq -r '.[] | select(.cidr == "10.0.0.0/24" and .managed == true).id')
maas $PROFILE interface link-subnet $SYSTEM_ID $BRIDGE_ID subnet=$SUBNET_ID mode="STATIC" ip_address="10.0.0.101"

Bridging via netplan

Modify /etc/netplan/50-cloud-init.yaml:

network:
  bridges:
    br0:
      addresses:
        - 10.0.0.101/24
      gateway4: 10.0.0.1
      interfaces:
        - enp1s0

Apply:

sudo netplan apply

Create bonds

UI:
Machines > (Select machine) > Network > (Select 2 physical interface) > Create bond > (Configure details) > Save interface

CLI:

maas $PROFILE interfaces create-bond $SYSTEM_ID name=$BOND_NAME parents=$IFACE1_ID,$IFACE2_ID bond_mode=$BOND_MODE

Modes:

  • balance-rr: Round-robin
  • active-backup: Failover only
  • balance-xor: Hash-based

Two-NIC setup

UI steps

  • NIC 1 (private subnet): Set to DHCP (e.g., 192.168.10.0/24).
  • NIC 2 (public internet): Set to DHCP/static (e.g., 192.168.1.0/24).

Netplan example

network:
  version: 2
  ethernets:
    ens18:
      addresses:
        - 192.168.10.5/24
      gateway4: 192.168.10.1
    ens19:
      addresses:
        - 192.168.1.10/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

Network discovery

See also: Network discovery.

Detects connected devices, including non-deployables.

Turn discovery on

UI:
Networking > Network discovery > Configuration > Enabled

CLI:

maas $PROFILE maas set-config name=network_discovery value="enabled"

Turn discovery off

UI:
Networking > Network discovery > Configuration > Disabled

CLI:

maas $PROFILE maas set-config name=network_discovery value="disabled"

DHCP management

Enable MAAS DHCP

UI:
Subnets > (Select VLAN) > Configure DHCP (Fill fields) > Configure DHCP

CLI:

maas $PROFILE vlan update $FABRIC_ID $VLAN_TAG dhcp_on=True primary_rack=$PRIMARY_RACK

Enable DHCP for HA

CLI

maas $PROFILE vlan update $FABRIC_ID $VLAN_TAG dhcp_on=True primary_rack=$PRIMARY_RACK secondary_rack=$SECONDARY_RACK

Set default gateway

UI
Subnets > (Select subnet) > Edit > (Set Gateway IP) > Set

CLI

maas $PROFILE subnet update $SUBNET_CIDR gateway_ip=$MY_GATEWAY

Set up a DHCP relay

UI
Subnets > (Select VLAN) > Configure DHCP > Relay to another VLAN > (Select VLAN) > Configure DHCP

CLI:

maas $PROFILE vlan update $FABRIC_ID $VLAN_VID_SRC relay_vlan=$VLAN_ID_TARGET

DHCP snippets

Create snippets

UI
Settings > DHCP snippets > Add snippet > (Fill fields) > Save snippet

CLI (global snippet)

maas $PROFILE dhcpsnippets create name=$DHCP_SNIPPET_NAME value=$DHCP_CONFIG description=$DESCRIPTION global_snippet=true

CLI (subnet snippet)

maas $PROFILE dhcpsnippets create name=$DHCP_SNIPPET_NAME value=$DHCP_CONFIG description=$DESCRIPTION subnet=$SUBNET_ID

CLI (node snippet)

maas $PROFILE dhcpsnippets create name=$DHCP_SNIPPET_NAME value=$DHCP_CONFIG description=$DESCRIPTION node=$NODE_ID

List snippets

UI
Settings > DHCP snippets

CLI

maas $PROFILE dhcpsnippets read

Update a snippet

UI
Settings > DHCP snippets > Actions > Pencil icon (edit) > (Edit snippet) > Save snippet

maas $PROFILE dhcpsnippet update $DHCP_SNIPPET_ID enabled=false

Delete a snippet

UI
Settings > DHCP snippets > Actions > Trash can icon (delete) > Delete

CLI

maas $PROFILE dhcpsnippet delete $DHCP_SNIPPET_ID

IP management

Static IP via netplan

Modify /etc/netplan/50-cloud-init.yaml:

network:
  ethernets:
    ens160:
      addresses:
        - 192.168.0.100/24
      gateway4: 192.168.0.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

Reserve IPs

Reserve single IP

CLI

maas $PROFILE ipaddresses reserve ip=$IP_ADDRESS_STATIC_SINGLE

Reserve dynamic range

UI
Subnets > (Select subnet> > (Scroll down> > Reserve range > Reserve dynamic range > (Fill fields) > Reserve

CLI

maas $PROFILE ipranges create type=dynamic subnet=$SUBNET_ADDRESS start_ip=$IP_DYNAMIC_RANGE_LOW end_ip=$IP_DYNAMIC_RANGE_HIGH

Reserved range:

UI
Subnets > (Select subnet> > (Scroll down) > Reserve range > Reserve range > (Fill fields) Reserve

CLI

maas $PROFILE ipranges create type=reserved subnet=$SUBNET_ADDRESS start_ip=$IP_STATIC_RANGE_LOW end_ip=$IP_STATIC_RANGE_HIGH

VLANs

Create VLAN

UI
Subnets > Add > VLAN > (Fill fields) > Add VLAN

CLI

maas $PROFILE vlans create $FABRIC_ID name=$VLAN_NAME vid=$VLAN_ID

Assign VLAN to interface

UI
Machines > (Select machine> > (Select physical interface) > Actions > Add VLAN

CLI

maas $PROFILE interfaces create-vlan $SYSTEM_ID vlan=$VLAN_ID parent=$INTERFACE_ID

Delete VLAN

UI
Subnets > (Select VLAN) > Delete VLAN > Delete VLAN*

CLI

maas $PROFILE vlan delete $FABRIC_ID $VLAN_ID

NTP management

Use external NTP

UI:
Settings > Network > NTP > (Fill in NTP address) > External Only > Save

CLI:

maas $PROFILE maas set-config name=ntp_servers value=$NTP_IP_ADDRESS
maas $PROFILE maas set-config name=ntp_external_only value=true

DNS management

Set DNS server

UI
Settings > DNS > (Fill fields) > Save

CLI

maas $PROFILE subnet update $SUBNET_CIDR dns_servers=$MY_DNS_SERVER

Create DNS records

A record

CLI

maas $PROFILE dnsresources create fqdn=$HOSTNAME.$DOMAIN ip_addresses=$IPV4ADDRESS

AAAA record

maas $PROFILE dnsresources create fqdn=$HOSTNAME.$DOMAIN ip_addresses=$IPV6ADDRESS

Set CNAME record

CLI

maas $PROFILE dnsresource-records create fqdn=$HOSTNAME.$DOMAIN rrtype=cname rrdata=$ALIAS

For example:

CLI

maas $PROFILE dnsresource-records create fqdn=webserver.maas.io rrtype=cname rrdata=www

Set MX record

CLI

maas $PROFILE dnsresource-records create fqdn=$DOMAIN rrtype=mx rrdata='10 $MAIL_SERVER.$DOMAIN'

For example:

CLI

maas $PROFILE dnsresource-records create fqdn=maas.io rrtype=mx rrdata='10 smtp.maas.io'

Set DNS forwarder

CLI

maas $PROFILE maas set-config name=upstream_dns value=$MY_UPSTREAM_DNS

Last updated 12 hours ago.