Skip to main content

RADIUS Configuration

Configure RADIUS servers for authentication, authorization, and accounting (AAA).

Overview

The radius section configures how AthenaBNG connects to your external RADIUS server for:

  • Authentication — Verify subscriber credentials (PPPoE username/password, DHCP MAC)
  • Authorization — Assign IP addresses, rates, session timeouts
  • Accounting — Track session usage for billing
  • Change of Authorization (CoA) — Modify session rates on-the-fly
info

AthenaBNG is a RADIUS client only. You need to provide your own RADIUS server (e.g., FreeRADIUS, Cisco ISE, Radiator). Example FreeRADIUS configurations are available in docs/examples/radius/.

Configuration Options

servers

List of RADIUS servers (required when PPPoE or DHCP is enabled).

radius:
servers:
- host: "10.255.0.10"
port: 1812
secret: "your-secret"

Server Options

host

RADIUS server IP address or hostname (required).

servers:
- host: "10.255.0.10"

Type: IPv4 address or hostname
Required: Yes
Constraints: Valid IP or resolvable hostname

port

RADIUS server port (optional).

servers:
- port: 1812

Type: Integer
Required: No
Default: 1812
Constraints: Valid port number (1-65535)

secret

RADIUS shared secret (required).

servers:
- secret: "your-secret"

Type: String
Required: Yes
Constraints: Non-empty string (change from default!)

Security: Store in secure configuration management system.

nas_identifier

NAS (Network Access Server) identifier (required).

radius:
nas_identifier: "AthenaBNG"

Type: String
Required: Yes
Constraints: 1-64 characters

Purpose: Identifies this BNG to RADIUS servers.

CLI:

abng# set radius nas_identifier "AthenaBNG"

nas_ip_address

NAS IP address for RADIUS (optional).

radius:
nas_ip_address: "10.255.0.1"

Type: IPv4 address
Required: No
Default: None
Constraints: Valid IPv4 address

Purpose: IP address reported to RADIUS server (for callbacks, etc.).

CLI:

abng# set radius nas_ip_address "10.255.0.1"

coa_enabled

Enable Change of Authorization (optional).

radius:
coa_enabled: true

Type: Boolean
Required: No
Default: false
Valid values: true, false

Purpose: Listen for RADIUS CoA packets to modify session rates.

CLI:

abng# set radius coa_enabled true

coa_port

CoA listen port (optional).

radius:
coa_port: 3799

Type: Integer
Required: No
Default: 3799
Constraints: Valid port number (1-65535)

Purpose: UDP port for receiving CoA packets from RADIUS server.

CLI:

abng# set radius coa_port 3799

Example Configurations

Single RADIUS Server

radius:
servers:
- host: "10.255.0.10"
secret: "my-secret"
nas_identifier: "AthenaBNG"
nas_ip_address: "10.255.0.1"
coa_enabled: true
coa_port: 3799

Multiple RADIUS Servers (Redundancy)

radius:
servers:
- host: "10.255.0.10"
secret: "my-secret"
- host: "10.255.0.11"
secret: "my-secret"
nas_identifier: "AthenaBNG"
nas_ip_address: "10.255.0.1"
coa_enabled: true
coa_port: 3799

RADIUS with Custom Ports

radius:
servers:
- host: "10.255.0.10"
port: 1812
secret: "my-secret"
- host: "10.255.0.11"
port: 1813
secret: "my-secret"
nas_identifier: "AthenaBNG"
nas_ip_address: "10.255.0.1"

Configuration via CLI

Add RADIUS Server

abng> configure
abng# set radius servers[0] host "10.255.0.10"
abng# set radius servers[0] secret "my-secret"
abng# commit

Set NAS Identifier

abng# set radius nas_identifier "AthenaBNG"
abng# commit

Enable CoA

abng# set radius coa_enabled true
abng# set radius coa_port 3799
abng# commit

Verification

View RADIUS Configuration

abng> show configuration | match "^radius:"
radius:
servers:
- host: 10.255.0.10
port: 1812
secret: my-secret
nas_identifier: AthenaBNG
nas_ip_address: 10.255.0.1
coa_enabled: true
coa_port: 3799

Test RADIUS Authentication

Use radclient or radtest from the BNG to verify your RADIUS server:

radtest testuser testpass 10.255.0.10 1812 my-secret

Expected output for a successful authentication:

Received Access-Accept Id 42 from 10.255.0.10:1812
Framed-IP-Address = 203.0.113.100
Framed-IP-Netmask = 255.255.255.255
Athena-Rate-Down = "100mbit"
Athena-Rate-Up = "40mbit"

Check RADIUS Logs

sudo journalctl -u abngd -f | grep -i radius

RADIUS Attributes

Authentication (Access-Request)

AttributeValuePurpose
User-Nameusername or MACSubscriber identifier
User-PasswordpasswordSubscriber password (PAP)
NAS-Identifiernas_identifierBNG identifier
NAS-IP-Addressnas_ip_addressBNG IP address
NAS-Port-Idinterface nameCircuit ID
Calling-Station-IdMAC addressSubscriber MAC

Authorization (Access-Accept)

AttributeValuePurpose
Framed-IP-AddressIP addressAssigned IP
Framed-IP-NetmasknetmaskSubnet mask
Session-TimeoutsecondsSession timeout
Athena-Rate-DownbandwidthDownload rate (Athena VSA)
Athena-Rate-UpbandwidthUpload rate (Athena VSA)

Accounting (Accounting-Request)

AttributeValuePurpose
Acct-Session-Idsession IDUnique session ID
Acct-Status-TypeStart/Stop/InterimSession event
Acct-Input-OctetsbytesBytes received
Acct-Output-OctetsbytesBytes sent
Acct-Session-TimesecondsSession duration

Change of Authorization (CoA-Request)

AttributeValuePurpose
Acct-Session-Idsession IDSession to modify
Athena-Rate-DownbandwidthNew download rate
Athena-Rate-UpbandwidthNew upload rate

Validation Rules

FieldValidation
servers[].hostValid IPv4 address or hostname
servers[].portInteger 1-65535
servers[].secretNon-empty string
nas_identifier1-64 characters
nas_ip_addressValid IPv4 address
coa_enabledBoolean
coa_portInteger 1-65535

Best Practices

  1. Shared Secret — Use strong, unique secrets for each server
  2. Multiple Servers — Configure redundant RADIUS servers
  3. NAS Identifier — Use descriptive identifier (e.g., "BNG-Brisbane-01")
  4. NAS IP — Use a stable IP (management interface or loopback)
  5. CoA — Enable for dynamic rate changes
  6. Timeouts — Configure appropriate timeouts in RADIUS server
  7. Accounting — Enable accounting for billing and auditing
  8. Security — Protect RADIUS shared secrets in configuration management

Troubleshooting

RADIUS Authentication Fails

Error: RADIUS authentication failed for user1

Solutions:

  1. Check RADIUS server is running: ping 10.255.0.10
  2. Test with RADIUS client: radtest testuser testpass 10.255.0.10 1812 my-secret
  3. Check shared secret matches
  4. Check RADIUS logs on server
  5. Check firewall allows UDP 1812

CoA Not Working

Error: CoA request rejected

Solutions:

  1. Check CoA is enabled: show configuration | match coa_enabled
  2. Check CoA port is correct: show configuration | match coa_port
  3. Check RADIUS server sends CoA to correct port
  4. Check firewall allows UDP 3799
  5. Check abngd logs: journalctl -u abngd -f

Sessions Not Getting RADIUS Attributes

  1. Check RADIUS returns attributes: radtest testuser testpass 10.255.0.10 1812 my-secret
  2. Check attribute names match (case-sensitive)
  3. Check Athena VSAs are installed on RADIUS server
  4. Check abngd logs: journalctl -u abngd -f

Next Steps