2026-05-30 16:25:46 -04:00
{
"client_requirement" : "client_is_administrator+" ,
"items" : [
{
"type" : "header_page_title" ,
"items" : [
{
"type" : "h1" ,
"text" : "RADIUS"
} ,
{
"type" : "p" ,
"text" : "FreeRADIUS server configuration and shared secret."
}
]
} ,
2026-06-05 21:28:05 -04:00
{
"type" : "raw_html" ,
"html" : "<span id=\"js-pro-license\" data-value=\"%PRO_LICENSE_JS%\" hidden></span>"
} ,
2026-06-05 13:11:26 -04:00
{
"type" : "info_bar" ,
"variant" : "info" ,
"text" : "%RADIUS_CLIENT_STATUS_TEXT%"
} ,
2026-05-30 16:25:46 -04:00
{
"type" : "card" ,
"label" : "Shared Secret" ,
"client_requirement" : "client_is_administrator+" ,
"items" : [
{
"type" : "p" ,
"text" : "Enter this secret in your access point or wireless controller as the RADIUS shared secret. It authenticates your APs to this router's RADIUS server."
} ,
{
"type" : "pre_block" ,
"text" : "%RADIUS_SECRET%"
} ,
{
"type" : "p" ,
"text" : "Use this router's IP address on the AP's VLAN as the RADIUS server address. Authentication port: 1812. Accounting port: 1813."
2026-05-30 16:30:50 -04:00
} ,
{
"type" : "button_row" ,
"items" : [
{
"type" : "button_danger" ,
"action" : "/action/radius/regenerate" ,
"method" : "post" ,
"text" : "Regenerate"
}
]
2026-05-30 16:25:46 -04:00
}
]
2026-06-01 12:58:06 -04:00
} ,
{
"type" : "card" ,
"label" : "Options" ,
"client_requirement" : "client_is_administrator+" ,
"items" : [
{
"type" : "form" ,
"action" : "/action/radius/options_save" ,
"method" : "post" ,
"items" : [
{
"type" : "field" ,
"label" : "MAC Address Format" ,
"name" : "mac_format" ,
"input_type" : "select" ,
"value" : "%RADIUS_MAC_FORMAT%" ,
"options" : [
{ "value" : "aabbccddeeff" , "label" : "aabbccddeeff" } ,
{ "value" : "aa-bb-cc-dd-ee-ff" , "label" : "aa-bb-cc-dd-ee-ff" } ,
{ "value" : "aa:bb:cc:dd:ee:ff" , "label" : "aa:bb:cc:dd:ee:ff" } ,
{ "value" : "AABBCCDDEEFF" , "label" : "AABBCCDDEEFF" } ,
{ "value" : "AA-BB-CC-DD-EE-FF" , "label" : "AA-BB-CC-DD-EE-FF" } ,
{ "value" : "AA:BB:CC:DD:EE:FF" , "label" : "AA:BB:CC:DD:EE:FF" }
] ,
2026-06-01 13:34:07 -04:00
"hint" : "Must match your AP/controller's expected format."
2026-06-01 12:58:06 -04:00
} ,
2026-06-05 02:43:17 -04:00
{
"type" : "button_row" ,
"items" : [
{
"type" : "button_primary" ,
"action" : "/action/radius/options_save" ,
"method" : "post" ,
"text" : "Save"
2026-06-05 12:34:38 -04:00
} ,
{
"type" : "button_cancel" ,
"text" : "Cancel"
2026-06-05 02:43:17 -04:00
}
]
}
]
}
]
} ,
{
"type" : "card" ,
2026-06-05 13:27:25 -04:00
"label" : "Default VLAN" ,
2026-06-05 02:43:17 -04:00
"client_requirement" : "client_is_administrator+" ,
"items" : [
2026-06-05 02:56:00 -04:00
{
"type" : "p" ,
2026-06-05 12:57:03 -04:00
"text" : "Unknown or unregistered devices are assigned to this VLAN. For wired switch ports, also set the fallback network in your managed switch's configuration."
2026-06-05 02:56:00 -04:00
} ,
{
"type" : "hr"
} ,
2026-06-05 02:43:17 -04:00
{
"type" : "form" ,
2026-06-05 12:57:03 -04:00
"action" : "/action/radius/default_vlan_save" ,
2026-06-05 02:43:17 -04:00
"method" : "post" ,
"items" : [
2026-06-01 12:58:06 -04:00
{
"type" : "field" ,
2026-06-05 13:27:25 -04:00
"label" : "Default VLAN" ,
2026-06-05 12:57:03 -04:00
"name" : "default_vlan" ,
2026-06-01 12:58:06 -04:00
"input_type" : "select" ,
2026-06-05 12:57:03 -04:00
"value" : "%RADIUS_DEFAULT_VLAN%" ,
"options" : "%RADIUS_DEFAULT_VLAN_OPTIONS%" ,
2026-06-05 13:19:00 -04:00
"hint" : "Devices without a DHCP reservation will receive RADIUS authorization to be placed on this VLAN. This may also be selected on the Network Layout page by denoting a VLAN as the \"RADIUS Default\"."
2026-06-01 12:58:06 -04:00
} ,
2026-06-01 13:29:07 -04:00
{
"type" : "button_row" ,
"items" : [
{
"type" : "button_primary" ,
"text" : "Save"
2026-06-05 12:34:38 -04:00
} ,
{
"type" : "button_cancel" ,
"text" : "Cancel"
2026-06-01 13:29:07 -04:00
}
2026-06-04 15:33:41 -04:00
]
}
]
}
]
} ,
{
"type" : "card" ,
2026-06-05 12:57:03 -04:00
"label" : "DEFAULT Rule Scope" ,
2026-06-04 15:33:41 -04:00
"client_requirement" : "client_is_administrator+" ,
"items" : [
{
"type" : "p" ,
2026-06-05 12:57:03 -04:00
"text" : "The DEFAULT Rule only applies to unknown devices (those without a DHCP reservation/authorization)."
2026-06-04 15:33:41 -04:00
} ,
2026-06-05 02:23:08 -04:00
{
"type" : "hr"
} ,
2026-06-04 15:33:41 -04:00
{
"type" : "form" ,
2026-06-05 12:57:03 -04:00
"action" : "/action/radius/default_rule_save" ,
2026-06-04 15:33:41 -04:00
"method" : "post" ,
"items" : [
{
"type" : "field" ,
2026-06-05 12:57:03 -04:00
"label" : "Which RADIUS Clients (authenticators) may apply the DEFAULT rule to unknown devices?" ,
"name" : "apply_to" ,
2026-06-04 15:33:41 -04:00
"input_type" : "select" ,
2026-06-05 12:57:03 -04:00
"value" : "%RADIUS_APPLY_TO%" ,
"options" : [
{ "value" : "all" , "label" : "All authenticators" } ,
{ "value" : "wireless" , "label" : "Wireless authenticators only (NAS-Port-Type = Wireless-802.11)" } ,
{ "value" : "huntgroup" , "label" : "Wireless authenticators only (AP huntgroup by IP)" }
] ,
"hint" : "_"
} ,
{
"type" : "field" ,
"label" : "Which of the following authenticators are Wireless Access Points that you wish to add to the huntgroup?" ,
"name" : "ap_ips" ,
"input_type" : "checkbox_group" ,
"options" : "%RADIUS_AP_IPS_OPTIONS%" ,
"value" : "%RADIUS_AP_IPS%" ,
"hint" : "These authenticators are defined on the DHCP Reservations page by denoting a device (such as a managed switch or wireless access point) as a \"RADIUS Client\"."
2026-06-04 15:33:41 -04:00
} ,
{
"type" : "button_row" ,
"items" : [
{
"type" : "button_primary" ,
2026-06-05 12:57:03 -04:00
"action" : "/action/radius/default_rule_save" ,
"method" : "post" ,
2026-06-04 15:33:41 -04:00
"text" : "Save"
2026-06-05 12:34:38 -04:00
} ,
{
"type" : "button_cancel" ,
"text" : "Cancel"
2026-06-04 15:33:41 -04:00
}
]
}
]
}
]
} ,
2026-06-05 21:28:05 -04:00
{
"type" : "card" ,
2026-06-06 00:51:30 -04:00
"label" : "Authentication Mode" ,
2026-06-05 21:28:05 -04:00
"client_requirement" : "client_is_administrator+" ,
"items" : [
{
"type" : "p" ,
"text" : "802.1X authentication modes require a Routlin Pro license."
} ,
{
"type" : "hr"
} ,
{
"type" : "form" ,
"action" : "/action/radius/auth_mode_save" ,
"method" : "post" ,
"items" : [
{
"type" : "field" ,
"label" : "Authentication Mode" ,
"name" : "auth_mode" ,
"input_type" : "select" ,
"value" : "%RADIUS_AUTH_MODE%" ,
"options" : "%RADIUS_AUTH_MODE_OPTIONS%" ,
"hint" : "_"
} ,
2026-06-06 00:51:30 -04:00
{
"type" : "raw_html" ,
"html" : "<div id=\"eap-protocol-row\">"
} ,
{
"type" : "field" ,
"label" : "Username/Password Protocol" ,
"name" : "eap_protocol" ,
"input_type" : "select" ,
"value" : "%RADIUS_EAP_PROTOCOL%" ,
"options" : "%RADIUS_EAP_PROTOCOL_OPTIONS%" ,
"hint" : "_"
} ,
2026-06-06 01:28:03 -04:00
{
"type" : "raw_html" ,
"html" : "<div id=\"eap-inner-row\">"
} ,
{
"type" : "field" ,
"label" : "Inner Protocol" ,
"name" : "inner_protocol" ,
"input_type" : "select" ,
"value" : "%RADIUS_INNER_PROTOCOL%" ,
"options" : "%RADIUS_INNER_PROTOCOL_OPTIONS%" ,
"hint" : "_"
} ,
{
"type" : "raw_html" ,
"html" : "</div>"
} ,
2026-06-06 00:57:01 -04:00
{
"type" : "raw_html" ,
"html" : "<div id=\"eap-tunneled-row\">"
} ,
2026-06-04 15:33:41 -04:00
{
"type" : "field" ,
"label" : "" ,
"name" : "tunneled_reply" ,
"input_type" : "checkbox" ,
2026-06-06 00:57:01 -04:00
"checkbox_label" : "Propagate inner tunnel reply attributes" ,
2026-06-04 15:33:41 -04:00
"value" : "%RADIUS_TUNNELED_REPLY%" ,
2026-06-06 00:57:01 -04:00
"hint" : "Copies VLAN and authorization attributes from the inner EAP exchange to the outer RADIUS Access-Accept. Required by some switches for VLAN assignment to work correctly."
} ,
{
"type" : "raw_html" ,
"html" : "</div>"
2026-06-04 15:33:41 -04:00
} ,
2026-06-06 01:36:28 -04:00
{
"type" : "raw_html" ,
"html" : "<div id=\"eap-ttls-row\">"
} ,
{
"type" : "field" ,
"label" : "" ,
"name" : "include_length" ,
"input_type" : "checkbox" ,
"checkbox_label" : "Include Length" ,
"value" : "%RADIUS_INCLUDE_LENGTH%" ,
"hint" : "Include the total length of message in every packet."
} ,
{
"type" : "raw_html" ,
"html" : "</div>"
} ,
2026-06-06 01:03:10 -04:00
{
"type" : "raw_html" ,
"html" : "</div>"
} ,
2026-06-04 15:33:41 -04:00
{
"type" : "button_row" ,
"items" : [
{
"type" : "button_primary" ,
"text" : "Save"
2026-06-05 12:34:38 -04:00
} ,
{
"type" : "button_cancel" ,
"text" : "Cancel"
2026-06-04 15:33:41 -04:00
}
2026-06-01 13:29:07 -04:00
]
}
]
}
]
} ,
{
"type" : "card" ,
"label" : "Logging" ,
"client_requirement" : "client_is_administrator+" ,
"items" : [
2026-06-01 13:34:07 -04:00
{
"type" : "form" ,
"action" : "/action/radius/logging_save" ,
"method" : "post" ,
"items" : [
{
"type" : "field" ,
"label" : "" ,
"name" : "logging" ,
"input_type" : "checkbox" ,
"checkbox_label" : "Log auth requests" ,
"value" : "%RADIUS_LOGGING%" ,
2026-06-03 01:32:13 -04:00
"hint" : "%RADIUS_LOGGING_HINT%"
2026-06-01 13:40:35 -04:00
} ,
2026-06-01 13:29:07 -04:00
{
2026-06-01 13:40:35 -04:00
"type" : "hr"
2026-06-01 13:29:07 -04:00
} ,
{
2026-06-01 13:40:35 -04:00
"type" : "pre_block" ,
"text" : "%RADIUS_LOG_TAIL%" ,
"scroll_to_bottom" : true
} ,
{
"type" : "raw_html" ,
"html" : "%RADIUS_LOG_SUMMARY%"
} ,
2026-06-01 22:12:11 -04:00
{
"type" : "button_row" ,
"items" : [
{
"type" : "button_ghost" ,
"action" : "/action/radius/logging_download" ,
"text" : "Download Log"
}
]
} ,
2026-06-01 13:40:35 -04:00
{
"type" : "hr"
} ,
2026-06-01 13:29:07 -04:00
{
"type" : "field" ,
"label" : "Max Log Size (KB)" ,
"name" : "log_max_kb" ,
"input_type" : "number" ,
"layout" : "inline" ,
"value" : "%RADIUS_GEN_LOG_MAX_KB%" ,
"min" : "64" ,
2026-06-03 01:32:13 -04:00
"hint" : "Log will automatically be cleared when it reaches this size."
2026-06-01 12:58:06 -04:00
} ,
{
"type" : "button_row" ,
"items" : [
{
"type" : "button_primary" ,
"text" : "Save"
2026-06-01 13:40:35 -04:00
} ,
{
"type" : "button_cancel" ,
"text" : "Cancel"
2026-06-01 12:58:06 -04:00
}
]
}
]
}
]
2026-05-30 16:25:46 -04:00
}
]
}