Our Products & Services
Getting Started
First Time Setup
Getting Started With Jobs
Getting Started with Accounts
Getting Started with Inventory
Getting Started with Ticketing
Setting Sonar up for Billing
Baseline Configuration
How To: Using Sonar's Customer Portal
User Specific Resources
Accounts
Account Groups: Overview & Example Use Cases
Account List View: Overview
Account Management View: Overview
Account Overview Customization
Account Statuses: Overview & Example Use Cases
Account Types: Overview & Example Use Cases
Anchor & Linked Serviceable Addresses: Overview and Best Practices
Archiving an Account: Overview
CPUC Fixed Broadband Deployment by Address
Child Accounts: Best Practices & How Tos
Creating a New Account
Direct Messages: Overview
Disconnecting an Account
Disconnection Reason Management: Overview
Exploring Task Groups
FCC Broadband Data Collection (BDC) Filings: How Sonar Can Help
FCC Data Exports: General Overview and Usage
Future Serviceable Addresses: Overview
Lead Intake Form Processing
Notes: Best Practices & Use Cases
Scheduled Events: Overview & Use Cases
Serviceable Addresses: Overview and Usage
Specify Account ID upon Creation
Tasks & Task Templates: Overview
Using Sonar's FCC Broadband Label Generation Tool
Billing
ACH Batching: Overview
Accounts in Vacation Mode
Avalara: Overview & Setup
Batch Payments & Deposit Slips: Overview
Billing Calculator
Billing Defaults
Billing Settings
Building Packages
Building a Data Service
Canadian ACH tool
Changing Service Pricing in Sonar: Best Practices
Considerations When Using Avalara with Voice Services
Creating Discounts for Services and Packages
Delinquency Billing Best Practices
Delinquency Exclusions: Overview and Use Cases
Dual Data Services: Overview
Email Invoice Batch: Overview
General Ledger Codes: Overview
General Transactions: Best Practices
How Sonar Prorates Billing
How to Take Bank Account Payments
How to: Adding a Service to an Account
Invoice Templates: Overview
Leveraging PayPal as a Payment Method in Sonar
Manual Transactions
Multi-Month Billing & Multi-Month Services
Print to Mail
Printed Invoice Batches: Overview
Services: Overview
Setting Up Payment Methods and Taking Payments
Setting up Bank Account & Credit Card Processors
Taxes Setup
Usage Based Billing Policies: Overview and Usage
Usage Based Billing Policy Free Periods: Overview and Usage
Using Tax Exemptions - How To
Communication
Communications: Call Logs Overview & Best Practices
Communications: Messages Overview
Email Variables & Conditions
Message Categories: Overview & Use Cases
Phone Number Types: Overview and Use Cases
Saved Messages: Overview
Setting up an Outbound Email Domain
Trigger Explanations
Triggered Messages: Setup
Using Outbound SMS
Using the Mass Message Tool
Companies
How to: Setting Up a Company in Sonar
Managing Multiple Companies in Sonar: Best Practices
Rebranding your Sonar Instance
Field Tech App
Financial
Contract Templates
Invoice Attachment Use Cases & PDF Examples
Invoice Messages: Overview & Use Cases
Invoices in Sonar: Examples, Creation & Contents
Integrations
Atlas Digital CORE Integration
Calix Cloud Data Field Mappings
Calix SMx Integration: Overview
CrowdFiber Integration
External Marketing Providers
GPS Tracking Providers: Overview
GoCardless Integration: Overview & Setup
How to Connect Cambium to your Sonar Instance
How to Connect Preseem to your Sonar System
How to: Using Webhooks in Sonar
Integrating with Calix Cloud
RemoteWinBox - Integration with Sonar
Sonar Retain: AI-Powered Customer Retention & Quality Intelligence
Tower Coverage Integration: Overview
VETRO FiberMap V2 Integration: Overview
VETRO FiberMap V3 Integration: Overview
Webhooks in Sonar: Basic PHP Example
iCalendar Integration
Inventory
Inventory List View: Overview
Inventory Model Management: General Overview
Network Inventory: How-to & Usage Guide
Segmentable Inventory: How-to & Usage Guide
Setup of Inventory: Manufacturers, Categories, and Assignees
Tracking and Using Consumable Inventory
Jobs
Applying Task Templates to Jobs
Edit Job Options
Example Jobs & Templates
Geofences: Overview
Job Types: Best Practices
Jobs and Scheduling: Overview
Scheduling Dispatcher View: Overview
Scheduling How-to: Creating and Booking a Job
Scheduling Table View: Overview
Scheduling Week View: Overview
Setting Up Schedules General Overview
Mapping
Misc.
Combining Custom Fields & Task Templates for Information Storage
Custom Fields Overview & Use Cases
Custom Links: Overview
Task Templates Overview & Use Cases
Monitoring
Building Alerting Rotations
Building a Monitoring Template
Poller Troubleshooting
Pollers: General Overview, Deployment Strategy, Build Out & Setup
Networking
Adtran Mosaic Cloud Platform Integration: Overview
Assigning RADIUS Addresses
Assigning an IP Address Using Sonar's IPAM: How to
Automating IP Assignments, Data Rates, and Network Access in Sonar
Building Address Lists
Building RADIUS Groups
Building a Device Mapper
Cable Modem Provisioning
Controlling Customer Speeds with Sonar: General Overview
DHCP Delivery
Data Usage Available Methods
Finding your OIDs
FreeRADIUS 3: Build-Out & Integration
How Sonar Communicates - Egress IPs Explained
IP Assignments & Sonar
IPAM: Basic Setup
IPAM: Overview
LTE Integration
MikroTik as an Inline Device: Integration With Sonar
MikroTik: Controlling Access
MikroTik: Controlling Speeds
MikroTik: Setting Up a Sonar Controlled DHCP Server
Netflow On-Premise Integration: Setup and Overview
Network Dashboard: Overview
Network Sites: Management View Overview
PacketLogic: Integration With Sonar
Pulse, Polling, and PHP
RADIUS: Build-Out & Integration with Sonar
RADIUS: Building Reply Attributes
Setting Up CoA Proxy
Sonar Flow
Sonar IP Addressing
Using Multiple Network Devices in Sonar
Purchase Orders
Release Notes
Reporting
Enhanced Business Intelligence - Tips & Tricks for Advanced Users
How To Enhance Your Reporting With Custom Field Data
Report Licenses
Sonar's Business Intelligence: Overview
Understanding Sonar Reports
Using Sonar DataConnect to Connect BI Applications with Your Sonar Instance
Security
Application Firewall: General Overview and Best Practices
Auth0: Overview
Multi-Factor Authentication: Overview
Password Policy In Depth
Removing a Terminated Employee In Sonar
Role Creation using GraphiQL
User Role Creation & Best Practices
Users: Overview
Sonar Billing
sonarPay
sonarPay Canada Disbursements: Overview
sonarPay Chargebacks & Disputes: Overview
sonarPay Disbursements: Overview
sonarPay Monthly Statement: Overview
sonarPay Overview
sonarPay Reversals, Voids, & Refunds: Overview
sonarPay: Token Migration Process
System
A Deeper Dive into the New Sonar API
API Calls Using Third Party Applications: Personal Access Tokens
Browser Compatibility and Minimum Hardware Requirements for Sonar
Consuming the Sonar API
Controlling Your Landing Page: Personal Preferences
Customizing Your Customer Portal
Date/Time Picker: Overview
Dynamic Time Zones in Sonar
Filtering: Overview
Frequently Used Terms
Getting Your Data into Sonar
GraphQL Rate Limiting Overview
How To Use GraphiQL to Understand the Sonar API
How Your Data is Backed Up
How to Best Use Global Search
Interacting with Files via the API
Introducing the New Sidebar
Main Menu: Overview
Mutations in the Sonar API
Notification Preferences
REST API Wrappers for V1 Compatibility
SMS Notifications
Sonar's Rich Text Editor
System Settings: Overview
The New Sonar API
Troubleshooting the Customer Portal
Upgrading your Ubuntu OS - Customer Portal Upgrades
User Profile: Your Personal User Settings
Ticketing
Advanced Ticketing Features
Canned Replies Examples & Templates
Canned Reply Categories
Exploring Ticket Groups
How Sonar Manages Spam Tickets
How to Integrate Inbound Mailboxes with Slack
Inbound Mailboxes Example Build
Ticket Category Families & Ticket Categories: Overview
Ticket Resolution Reasons: Overview
Ticketing: Overview
Using Parent Tickets
Voice
API Changes for Voice Billing
Best Practices to Remain CPNI Compliant
Billing Voice Services in Sonar
Deploying Voice Services in Sonar
Working With the Sonar Team & Additional Resources
Sonar's Security Practices & Certifications
Sonar and General Data Protection Regulation (GDPR)
Sonar's Security Strategies
Technical Security Overview
Best Practices for Fast Tracking a Support Request
Feedback Portal / Suggest a Feature
Learning with Sonar: Tools and Resources
New Client Training Overview
Sonar Casts Table of Contents
Submitting Bugs vs. Feature Requests
The Sonar Community Forum
The Sonar Status Page
Third Party Customer Support Referrals
Where Sonar Stores Your Data
Table of Contents
- All Categories
- Networking
- Setting Up CoA Proxy
Setting Up CoA Proxy
Updated
by Jennifer Trower
Read Time: 4 mins
A limitation of provisioning with RADIUS is that attribute changes don’t always take effect right away. For example, with PPPoE, updates typically won’t apply until the PPPoE session disconnects and reconnects. Some settings can be applied immediately using a Change of Authorization (CoA) request, but many still require a disconnect.
Sonar can automatically disconnect a customer when certain events occur by sending a Disconnect or CoA (Change of Authorization) packet to your RADIUS server. This can force customer updates without manually dropping their PPPoE session.
For this to work, your RADIUS server must be configured to proxy CoA/Disconnect packets to the NAS, since Sonar sends these packets to the RADIUS server directly. The basic FreeRADIUS configuration shown below enables this proxying and was tested on version 3.2.5 (you may need to adjust it for other versions).
When using CoA proxying, you must disable use of the nas SQL table, because the coa_server setting can’t be defined in SQL.
sudo su) or prefix commands with sudo.
- SSH to RADIUS server and navigate to the freeradius directory by typing the following command:
cd /etc/freeradius/3.0
If you type ll to view the directory, you should see the following files:radiusd.confclients.confproxy.conf - Use a text editor to look at
radiusd.confnano radiusd.conf
This file should not require any modification, but confirm the following lines are written:proxy_requests = yes
$INCLUDE proxy.conf - Use a text editor to look at clients.conf
nano clients.conf
Put every NAS listed inHere is an example of a finished clients.conf:clients.confinto the samecoa_servergroup. Then add your Sonar instance as a client, settingipaddrto your Sonar server’s IP (as shown inclient sonar { }). Thesecretvalue in that Sonar client entry is what you’ll enter in Sonar’s CoA Secret field when setting up CoA proxying.client myroutername1 {
ipaddr = 10.220.5.1 # Your NAS IP
secret = reallysecret # RADIUS secret for this NAS
nas_type = mikrotik
coa_server = concentrators
}
client myroutername2 {
ipaddr = 10.220.5.2 # Another NAS IP
secret = reallysecret # RADIUS secret for this NAS
nas_type = mikrotik
coa_server = concentrators
}
client sonar1 {
ipaddr = 20.221.112.37 # Sonar Instance IP
secret = sonarcoasecret # Sonar CoA Secret
nas_type = other
coa_server = concentrators
}
client sonar2 {
ipaddr = 20.221.114.13
secret = sonarcoasecret
nas_type = other
coa_server = concentrators
}
client sonar3 {
ipaddr = 52.158.209.86
secret = sonarcoasecret
nas_type = other
coa_server = concentrators
}
client sonar4 {
ipaddr = 20.15.246.160/28
secret = sonarcoasecret
nas_type = other
coa_server = concentrators
}
client sonar5 {
ipaddr = 20.84.143.0/28
secret = sonarcoasecret
nas_type = other
coa_server = concentrators
}You can also use the tool at https://jemnetworks.com/coa to generateclients.confandproxy.conf. Enter your NAS details as comma- or tab-separated values in this format:NAS-Name, IP-Address, CoA-Secret, CoA-Port - Use a text editor to modify proxy.conf
nano proxy.conf
Add each NAS as aHere is an example of a filled-out proxy.conf:home_serverinproxy.conf, using the sameipaddrvalues from your NAS entries inclients.conf. Then list all of thosehome_serverentries in thehome_server_poolsection (one per line). You need a pool entry for each IP so theupdate controlsection insites-enabled/coaworks.home_server myroutername1 {
type = coa
ipaddr = 10.220.5.1
port = 3799
secret = reallysecret
require_message_authenticator = no
response_window = 20
zombie_period = 40
revive_interval = 120
status_check = none
check_interval = 30
num_answers_to_alive = 3
coa {
irt = 2
mrt = 16
mrc = 5
mrd = 30
}
}
home_server myroutername2 {
type = coa
ipaddr = 10.220.5.2
port = 3799
secret = reallysecret
require_message_authenticator = no
response_window = 20
zombie_period = 40
revive_interval = 120
status_check = none
check_interval = 30
num_answers_to_alive = 3
coa {
irt = 2
mrt = 16
mrc = 5
mrd = 30
}
}
home_server_pool concentrators {
home_server = myroutername1
home_server = myroutername2
}
home_server_pool 10.220.5.1 {
home_server = myroutername1
}
home_server_pool 10.220.5.2 {
home_server = myroutername2
} - Navigate to the following directory
cd /etc/freeradius/3.0/sites-enabled
Run the following command to create a new file called "coa"nano coa
- Copy the text exactly as is below and paste and save this in the "
coa" file.listen {
type = coa
ipaddr = *
port = 3799
virtual_server = coa
}
server coa {
recv-coa {
update control {
Home-Server-Pool := "%{NAS-IP-Address}"
}
ok
}
send-coa {
ok
}
} - If you haven’t already, disable the NAS table as mentioned earlier. To accomplish this, reopen the setup wizard (“genie”) you used to configure the RADIUS database:
cd /home/<user>/freeradius_genie-v3
The genie installs under the home directory of the user who ran the installer (for example,
php genie/home/<user>). If you set up the genie as root, your home directory will be/root, so file paths (and screenshots) may look different.If you can’t find the genie folder, locate it with:find / -type d -name "freeradius_genie-v3" -print 2>/dev/null - Open the NAS configuration screen, then scroll to Remove NAS and delete the NAS entries you added when setting up the server. Remove them because they’re now configured under the CoA settings instead.

- systemctl restart freeradius
- Enter: systemctl status freeradiusTo confirm it’s working, disconnect an active session from the customer’s account.

- Look at the Start Time next to the active session. After you disconnect it, the session should reconnect automatically within a few seconds (sometimes up to 1–2 minutes), and the Start Time will update to the current time.
- On the NAS (MikroTik), you can watch this in real time in PPP > Active Connections (or Queues > Simple Queues). The client will disappear, then reappear with a refreshed session—and a new queue if the service changed.