Our Products & Services
Getting Started
First Time Setup
Getting Started With Jobs
Getting Started with Ticketing
Setting Sonar up for Billing
Getting Started with Accounts
Getting Started with Inventory
Baseline Configuration
User Specific Resources
How To: Using Sonar's Customer Portal
Accounts
Account Types: Overview & Example Use Cases
Account Statuses: Overview & Example Use Cases
Account Management View: Overview
Scheduled Events: Overview & Use Cases
Notes & Tasks: Best Practices & Use Cases
Child Accounts: Best Practices & How Tos
Disconnecting an Account
Understanding the Affordable Connectivity Program
FCC Broadband Data Collection (BDC) Filings: How Sonar Can Help
Account List View: Overview
Specify Account ID upon Creation
Lead Intake Form Processing
Account Groups: Overview & Example Use Cases
CPUC Fixed Broadband Deployment by Address
Serviceable Addresses: Overview and Usage
FCC Data Exports: General Overview and Usage
Creating a New Account
Billing
Setting up Bank Account & Credit Card Processors
Billing Settings
Billing Defaults
Taxes Setup
General Ledger Codes: Overview
Services: Overview
Building a Data Service
Building Packages
Delinquency Billing Best Practices
Accounts in Vacation Mode
Batch Payments & Deposit Slips: Overview
Creating Discounts for Services and Packages
Setting Up Payment Methods and Taking Payments
Canadian ACH tool
Printed Invoice Batches: Overview
Delinquency Exclusions: Overview and Use Cases
Multi-Month Billing & Multi-Month Services
How to Take Bank Account Payments
Email Invoice Batch: Overview
Manual Transactions
ACH Batching: Overview
Billing Calculator
General Transactions: Best Practices
Usage Based Billing Policies: Overview and Usage
How to: Adding a Service to an Account
Usage Based Billing Policy Free Periods: Overview and Usage
Using Tax Exemptions - How To
Avalara: Overview & Setup
Print to Mail
Communication
Setting up an Outbound Email Domain
Triggered Messages: Setup
Call Logs: General Best Practices
Using the Mass Message Tool
Saved Messages: Overview
Message Categories: Overview & Use Cases
Phone Number Types: Overview and Use Cases
Email Variables & Conditions
Communication Tools: Overview
Trigger Explanations
Companies
How to: Setting Up a Company in Sonar
Managing Multiple Companies in Sonar: Best Practices
Rebranding your Sonar Instance
Financial
Contract Templates
Invoice Attachment Use Cases & PDF Examples
Invoice Messages: Overview & Use Cases
Invoices in Sonar: Examples, Creation & Contents
Integrations
Calix Integration: Overview
GPS Tracking Providers: Overview
Webhooks in Sonar: Basic PHP Example
How to Connect Cambium to your Sonar Instance
iCalendar Integration
RemoteWinBox - Integration with Sonar
External Marketing Providers
The Sonar Field Tech App
How to Connect Preseem to your Sonar System
Tower Coverage Integration: Overview
GoCardless Integration: Overview & Setup
Vetro FiberMap Integration: Overview
How to: Using Webhooks in Sonar
CrowdFiber Integration
Inventory
Setup of Inventory: Manufacturers, Categories, and Assignees
Inventory List View: Overview
Inventory Model Management: General Overview
Tracking and Using Consumable Inventory
Jobs
Job Types: Best Practices
Setting Up Schedules General Overview
Applying Task Templates to Jobs
Scheduling Week View: Overview
Example Jobs & Templates
Scheduling How-to: Creating and Booking a Job
Geofences: Overview
Edit Job Options
Jobs and Scheduling: Overview
Mapping
Misc.
Monitoring
Building a Monitoring Template
Pollers: General Overview, Deployment Strategy, Build Out & Setup
Building Alerting Rotations
Poller Troubleshooting
Networking
IP Assignments & Sonar
MikroTik: Setting Up a Sonar Controlled DHCP Server
IPAM: Basic Setup
MikroTik as an Inline Device: Integration With Sonar
MikroTik: Controlling Speeds
MikroTik: Controlling Access
PacketLogic: Integration With Sonar
Setting Up CoA Proxy
RADIUS: Building Reply Attributes
Data Usage Available Methods
Pulse, Polling, and PHP
Using Multiple Network Devices in Sonar
IPAM: Overview
Cable Modem Provisioning
LTE Integration
Assigning RADIUS Addresses
Controlling Customer Speeds with Sonar: General Overview
Sonar Flow
RADIUS: Build-Out & Integration with Sonar
Network Dashboard: Overview
Being Cloud Native
Netflow Integration: Overview
Building a Device Mapper
Sonar IP Addressing
Automating IP Assignments, Data Rates, and Network Access in Sonar
DHCP Delivery
Assigning an IP Address Using Sonar's IPAM: How to
Network Sites: Management View Overview
Building RADIUS Groups
Building Address Lists
Finding your OIDs
Purchase Orders
Release Notes
Reporting
Understanding Sonar Reports
How To Enhance Your Reporting With Custom Field Data
Report Licenses
Enhanced Business Intelligence - Tips & Tricks for Advanced Users
Sonar's Business Intelligence: Overview
Security
User Role Creation & Best Practices
Removing a Terminated Employee In Sonar
Password Policy In Depth
Application Firewall: General Overview and Best Practices
Users: Overview
Role Creation using GraphiQL
Sonar Billing
sonarPay
System
How to Best Use Global Search
How Your Data is Backed Up
How To Use GraphiQL to Understand the Sonar API
Frequently Used Terms
Sonar's Rich Text Editor
Mutations in the Sonar API
Notification Preferences
API Calls Using Third Party Applications: Personal Access Tokens
Date/Time Picker: Overview
Auth0: Overview
The New Sonar API
Introducing the New Sidebar
Upgrading your Ubuntu OS - Customer Portal Upgrades
A Deeper Dive into the New Sonar API
Consuming the Sonar API
Filtering: Simple vs Advanced
Browser Compatibility and Minimum Hardware Requirements for Sonar
REST API Wrappers for V1 Compatibility
User Profile: Your Personal User Settings
SMS Notifications
Dynamic Time Zones in Sonar
System Settings: Overview
Troubleshooting the Customer Portal
Controlling Your Landing Page: Personal Preferences
Interacting with Files via the API
Getting Your Data into Sonar
Customizing Your Customer Portal
Ticketing
Ticketing: Overview
Canned Replies Examples & Templates
Canned Reply Categories
Inbound Mailboxes Example Build
Ticket Categories Best Practices & Example Build
Exploring Ticket Groups
Using Parent Tickets
How to Integrate Inbound Mailboxes with Slack
Advanced Ticketing Features
Voice
Working With the Sonar Team & Additional Resources
Sonar's Security Practices & Certifications
Sonar and General Data Protection Regulation (GDPR)
Technical Security Overview
CyberSecure Canada Certification
Sonar's Security Strategies
Best Practices for Fast Tracking a Support Request
How Sonar Bills Your Instance
The Sonar Status Page
The Sonar Community Forum
Feedback Portal / Suggest a Feature
Sonar Casts Table of Contents
How to Request Termination of your Sonar Instance
Submitting Bugs vs. Feature Requests
Third Party Customer Support Referrals
Client Services Training Overview
Learning with Sonar: Tools and Resources
Table of Contents
- All Categories
- Networking
- Setting Up CoA Proxy
Setting Up CoA Proxy
Updated
by Alex Moore
Read Time: 4 mins
One challenge with using RADIUS to provision is that changes made to RADIUS attributes are not necessarily applied to the user immediately. If you are, for example, using PPPoE, then any attribute changes will not apply until the PPPoE session is disconnected or connected. Some attributes can be updated on the fly using a CoA (Change of Authorization) request, but many attributes require a disconnect.
Sonar allows you to trigger a disconnect upon certain events by issuing a disconnect or CoA packet to the RADIUS server. This allows you to force an update to the customer without manually disconnecting their PPPoE session. In order for this to work, your RADIUS server must be setup to proxy CoA/disconnect packets to the NAS - Sonar will send these packets directly to the RADIUS server. A basic configuration is shown below to enable CoA/Disconnect proxying for FreeRADIUS - this was tested on version 2.1.12 and may require some modification for other versions. You must disable the use of the nas
table in the SQL database when using CoA proxying, as there is no way to define the coa_server
property in SQL.
- SSH to RADIUS server and navigate to the freeradius directory by typing the following command:
cd /etc/freeradius
radiusd.conf
clients.conf
proxy.conf
- use a text editor to look at radiusd.conf
nano 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
coa_server
group. You also need to add your Sonar instance as a client, replacing the ipaddr
value with the IP address of your Sonar instance. This is shown above inside client sonar { }
. The secret listed in the secret
section of your Sonar clients entry is the value you will enter in the CoA Secret field inside Sonar when configuring CoA proxying.Here is an example of a finished clients.conf:
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 sonar {
ipaddr = x.x.x.x # sonar instance IP
secret = sonarcoasecret # the CoA secret entered in Sonar
nas_type = other
coa_server = concentrators
}
NAS-Name,IP-Address,CoA-Secret,CoA-Port
- use a text editor to modify proxy.conf
nano proxy.conf
home_server
in proxy.conf. Match up the ipaddr
values to your NAS definitions in clients.conf. List each defined home_server
inside the home_server_pool
section by adding an additional home_server entry on another line. You need the home_server_pool
lines for each IP, so that the update control
section in sites-enabled/coa
works.Here is an example of a filled out proxy.conf:
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/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
server = coa
}
server coa {
recv-coa {
update control {
Home-Server-Pool := "%{NAS-IP-Address}"
}
ok
}
send-coa {
ok
}
}
- If you haven't done so already, you should now disable the NAS table as mentioned in the beginning of this article. You do this by going back into the genie you used to setup the radius database:
cd ~
php freeradius_genie-master/genie
- Enter the NAS configuration screen, then scroll down to "Remove NAS" and delete the NAS entries you initially setup when building the server. These need to be removed since they are now set up in the CoA location instead:
- systemctl restart freeradius
- Enter: systemctl status freeradius
- Note the "Start Time" to the left of the active session - after disconnecting, within a few seconds, or even 1-2 minutes, the session will reconnect automatically and you will see this time update to the current time.
- In the NAS (MikroTik) you can also watch this happen in real-time from the PPP > Active Connections (or Queues > Simple Queues) Windows and see the client disappear and then reappear with the updated session and new queue if there was a service change.