Skip to content
Ask AI

PPPoE Server Configuration Guide

This guide provides a step-by-step tutorial for configuring the PPPoE Server capability on the Asterfusion Open Intelligent Gateway running AsterNOS-VPP.

By following this guide, you will transform a standard Layer 3 gateway into a high-performance Broadband Network Gateway (vBNG) capable of handling client dial-ups, centralized AAA billing, and internet access via NAT.

This document is structured to reflect real-world enterprise deployment priorities:

  • Scenario 1: Enterprise RADIUS Integration (Main Deployment) We will configure the gateway to act as a vBNG access node, integrated with an external RADIUS server for centralized Authentication, Authorization, and Accounting (AAA). This phase covers both local IP allocation and fully centralized RADIUS IP pool management.
  • Scenario 2: Standalone Gateway Mode (Local Auth & NAT) Configuring the gateway to rely on its internal local database for dial-in access and enabling Source NAT (SNAT). This is ideal for small, isolated networks or as an emergency fallback.

Device/InterfaceIP Address/SubnetRole
AsterNOS (Eth1)192.168.200.166/24WAN Uplink(Route to RADIUS & Core Network)
AsterNOS (Eth2)N/A (Layer 2 PPPoE)LAN Interface(PPPoE Dial-in Port)
RADIUS Server192.168.200.253/24Centralized AAA Server(FreeRADIUS)
Dial-in Client PC192.168.100.x/24PPPoE Client

Phase 1: Baseline Setup (Local Pool IP Allocation)

Section titled “Phase 1: Baseline Setup (Local Pool IP Allocation)”

In this phase, we establish an enterprise-grade vBNG architecture. To ensure a smooth deployment, we will build this in two stages:

  1. Baseline Setup: Centralized RADIUS authentication combined with AsterNOS local IP allocation.
  2. Advanced Setup: Fully centralized architecture where RADIUS handles both authentication and dynamic IP allocation.

Base Network & RADIUS Global Configuration

Section titled “Base Network & RADIUS Global Configuration”
Terminal window
sonic# configure terminal
# 1. Configure the WAN Interface (Required to reach the RADIUS server)
sonic(config)# interface ethernet 1
sonic(config-if-1)# ip address 192.168.200.166/24
sonic(config-if-1)# exit
# 2. Define Default Route to Core Network
sonic(config)# ip route 0.0.0.0/0 192.168.200.1
# 3. Define the Global RADIUS server.
CRITICAL: The 'mode pppoe' attribute must be configured FIRST.
sonic(config)# radius server 192.168.200.253 mode pppoe
sonic(config)# radius server 192.168.200.253 auth-type chap
sonic(config)# radius server 192.168.200.253 passkey aster123

In our baseline setup, AsterNOS relies on RADIUS for user authentication but handles IP address distribution locally.

Terminal window
1. Enable PPPoE Server globally
sonic(config)# pppoe-server enable
# 2. Create the local IP pool for dial-in clients
sonic(config)# ip-pool pppoe-pool
sonic(config-ip-pool)# ip-range 192.168.100.10 192.168.100.254
sonic(config-ip-pool)# exit
# 3. Enter PPPoE Server instance 1
sonic(config)# interface pppoe-server 1
sonic(config-if-pppoeserver-1)# service-name pppoe-enterprise
sonic(config-if-pppoeserver-1)# ac-name pppoe-server-1
# 4. Bind RADIUS for Authentication and Accounting
sonic(config-if-pppoeserver-1)# ppp chap radius-server 192.168.200.253
sonic(config-if-pppoeserver-1)# nas-ip 192.168.200.166
# 5. Set Virtual Gateway IP and bind the local pool
sonic(config-if-pppoeserver-1)# local-ip 192.168.100.1 255.255.255.0
sonic(config-if-pppoeserver-1)# remote-ip-pool pppoe-pool
# 6. Network Parameters
sonic(config-if-pppoeserver-1)# dns-server 8.8.8.8
sonic(config-if-pppoeserver-1)# accept-blank-service enable
sonic(config-if-pppoeserver-1)# exit
# 7. Bind to physical LAN port
sonic(config)# interface ethernet 2
sonic(config-if-2)# pppoe-server 1
sonic(config-if-2)# exit

Deploy a lightweight FreeRADIUS configuration focused strictly on AAA, without the complexity of IP pool management.

  • Install FreeRADIUS
Terminal window
sudo apt-get update
sudo apt-get install freeradius -y
  • Configure the NAS Client (AsterNOS Gateway)
Terminal window
sudo nano /etc/freeradius/3.0/clients.conf
client AsterNOS-Gateway {
ipaddr = 192.168.200.166
secret = aster123
}
  • Create the User Profile
Terminal window
sudo nano /etc/freeradius/3.0/users
"radiususer" Cleartext-Password := "radius123"
Service-Type = Framed-User,
Framed-Protocol = PPP
  • Restart Service
Terminal window
sudo systemctl restart freeradius

Phase2: Advanced Integration (Centralized RADIUS IP Allocation)

Section titled “Phase2: Advanced Integration (Centralized RADIUS IP Allocation)”

Once the baseline authentication is verified, enterprise architectures typically migrate IP allocation to the RADIUS server. This consolidates user management and billing into a single pane of glass.

To upgrade from the Baseline to the Centralized architecture, follow these Delta steps:

Shift the allocation responsibility away from the gateway.

Terminal window
sonic# configure terminal
sonic(config)# interface pppoe-server 1
sonic(config-if-pppoeserver-1)# no remote-ip-pool pppoe-pool
sonic(config-if-pppoeserver-1)# exit
Terminal window
sudo nano /etc/freeradius/3.0/mods-available/ippool
ippool main_pool {
range_start = 192.168.100.10
range_stop = 192.168.100.254
netmask = 255.255.255.0
# Keep the following default parameters unchanged
filename = ${db_dir}/db.ippool
ip_index = ${db_dir}/db.ipindex
override = no
maximum_timeout = 0
}
Terminal window
sudo ln -s /etc/freeradius/3.0/mods-available/ippool /etc/freeradius/3.0/mods-enabled/

Activate IP Pool in Accounting & Post-Auth

Section titled “Activate IP Pool in Accounting & Post-Auth”
Terminal window
sudo nano /etc/freeradius/3.0/sites-enabled/default

In the accounting { ... } block, add:

accounting {
detail
unix
main_pool # <--- Add this line
exec
# ...
}

In the post-auth { ... } block, add:

post-auth {
exec
main_pool # <--- Add this line
# ...
}
Terminal window
sudo nano /etc/freeradius/3.0/users
"radiususer" Cleartext-Password := "radius123", Pool-Name := "main_pool"
Service-Type = Framed-User,
Framed-Protocol = PPP
Terminal window
sudo systemctl restart freeradius

After completing the configuration and restarting the RADIUS service, follow these steps to verify that the PPPoE session is successfully established:

  1. Client Dial-in: Create a PPPoE connection on the client PC and dial in using your username and password.
  2. Check Session Status: Once successfully connected, execute the following command to view real-time session information.
Terminal window
sonic# show pppoe-session

Expected Output:

Id Iface SessionId RemoteMac RemoteIp LocalIp LocalIf PppoeServer Uptime
---- --------- ----------- ----------------- ------------- ------------- --------- -------------- --------
0 Ethernet3 384 00:e0:4c:68:06:0d 192.168.100.10 192.168.100.1 ppp0 pppoe-server-1 0:00:37

This section provides the complete, standalone configuration required to set up the PPPoE server using AsterNOS’s internal database for authentication and local IP pool for address allocation.

Terminal window
1. Enable PPPoE Server globally
sonic# configure terminal
sonic(config)# pppoe-server enable
# 2. Create the local IP pool for dial-in clients
sonic(config)# ip-pool pppoe-pool
sonic(config-ip-pool)# ip-range 192.168.100.10 192.168.100.254
sonic(config-ip-pool)# exit
# 3. Enter PPPoE Server instance 1
sonic(config)# interface pppoe-server 1
sonic(config-if-pppoeserver-1)# service-name pppoe-enterprise
sonic(config-if-pppoeserver-1)# ac-name pppoe-server-1
sonic(config-if-pppoeserver-1)# ppp chap username testuser 123456
sonic(config-if-pppoeserver-1)# nas-ip 192.168.200.166
# 5. Set Virtual Gateway IP and bind the local pool
sonic(config-if-pppoeserver-1)# local-ip 192.168.100.1 255.255.255.0
sonic(config-if-pppoeserver-1)# remote-ip-pool pppoe-pool
# 6. Network Parameters
sonic(config-if-pppoeserver-1)# dns-server 8.8.8.8
sonic(config-if-pppoeserver-1)# accept-blank-service enable
sonic(config-if-pppoeserver-1)# exit
# 7. Bind to physical LAN port
sonic(config)# interface ethernet 2
sonic(config-if-ethernet2)# pppoe-server 1
sonic(config-if-ethernet2)# exit

To allow the locally authenticated PPPoE clients (e.g., 192.168.100.x) to browse the public internet, you must translate their private IPs to the WAN interface’s public/uplink IP.

Terminal window
1. Enable the NAT engine globally
sonic(config)# nat enable
# 2. Define a NAT pool using the WAN uplink IP (192.168.200.166)
sonic(config)# nat pool wan-pool 192.168.200.166
# 3. Bind the pool to masquerade all outbound routed traffic
sonic(config)# nat binding bind-wan wan-pool
# 4. Apply NAT zone to the WAN interface
sonic(config)# interface ethernet 1
sonic(config-if-1)# nat-zone 1
sonic(config-if-1)# exit

After completing the configuration, follow these steps to verify that the PPPoE session is successfully established:

  1. Client Dial-in: Create a PPPoE connection on the client PC and dial in using your username and password.
  2. Check Session Status: Once successfully connected, execute the following command to view real-time session information.
Terminal window
sonic# show pppoe-session

Expected Output:

Id Iface SessionId RemoteMac RemoteIp LocalIp LocalIf PppoeServer Uptime
---- --------- ----------- ----------------- ------------- ------------- --------- -------------- --------
0 Ethernet3 384 00:e0:4c:68:06:0d 192.168.100.10 192.168.100.1 ppp0 pppoe-server-1 0:00:37

This guide has verified the comprehensive PPPoE Server capabilities of AsterNOS, transforming a standard gateway into a high-performance vBNG. The completed scenarios demonstrate its deployment flexibility, seamlessly supporting both enterprise centralized RADIUS integration and standalone operations with local authentication and NAT.