Skip to content
MikroTik RouterOS Docs

PPPoE Server and Client Configuration

PPPoE Client (connecting to an ISP):

/interface pppoe-client add interface=ether1 user=myuser password=mypass \
add-default-route=yes use-peer-dns=yes name=pppoe-wan disabled=no

PPPoE Server (providing access to subscribers):

/ip pool add name=pppoe-pool ranges=10.0.0.2-10.0.0.254
/ppp profile add name=pppoe-profile local-address=10.0.0.1 remote-address=pppoe-pool
/ppp secret add name=user1 password=pass1 service=pppoe profile=pppoe-profile
/interface pppoe-server server add interface=ether2 service-name=MyISP \
default-profile=pppoe-profile disabled=no

What this covers: PPPoE (Point-to-Point Protocol over Ethernet) client configuration for connecting to ISPs, and PPPoE server configuration for providing subscriber access.

When to use PPPoE Client:

  • Connecting to DSL/ADSL broadband providers
  • Connecting to fiber ISPs that use PPPoE authentication
  • Replacing an ISP-provided modem/router with MikroTik

When to use PPPoE Server:

  • Operating as a small ISP or WISP
  • Providing authenticated internet access to subscribers
  • Managing bandwidth and access per user

Prerequisites:

  • A MikroTik router running RouterOS 7.x or later
  • PPPoE credentials from your ISP (for client)
  • Understanding of IP addressing (for server)

The PPPoE client connects your router to an ISP that requires PPPoE authentication.

First, identify which interface connects to your ISP modem or ONT. In this example, we use ether1 as the WAN interface.

/interface print

Common Mistake

Do not run a DHCP client on the same interface as PPPoE. If your ISP modem was previously providing DHCP, remove the DHCP client before configuring PPPoE:

/ip dhcp-client remove [find interface=ether1]

Create the PPPoE client with your ISP credentials:

/interface pppoe-client add \
interface=ether1 \
user=your-isp-username \
password=your-isp-password \
add-default-route=yes \
use-peer-dns=yes \
name=pppoe-wan \
disabled=no

Parameter explanation:

ParameterPurpose
interfacePhysical interface connected to ISP modem
user / passwordISP-provided credentials
add-default-routeAutomatically add default gateway when connected
use-peer-dnsAccept DNS servers from ISP
nameFriendly name for the interface

Enable NAT so LAN clients can access the internet through the PPPoE connection:

/ip firewall nat add chain=srcnat out-interface=pppoe-wan action=masquerade

Check if the connection is established:

/interface pppoe-client print

Expected Output:

Flags: X - disabled, R - running
0 R name="pppoe-wan" max-mtu=auto max-mru=auto mrru=disabled interface=ether1
user="your-username" password="your-password" profile=default
service-name="" ac-name="" add-default-route=yes default-route-distance=1
dial-on-demand=no use-peer-dns=yes allow=pap,chap,mschap1,mschap2
keepalive-timeout=60

The R flag indicates the connection is running.

/interface pppoe-client monitor pppoe-wan once

Expected Output:

status: connected
uptime: 2h45m32s
local-address: 203.0.113.45
remote-address: 203.0.113.1
mtu: 1492
mru: 1492
encoding: none

Before configuring, you can discover available PPPoE servers:

/interface pppoe-client scan ether1

This shows available service-name and ac-name values if your ISP requires specific settings.

Configure your MikroTik as a PPPoE server to provide authenticated internet access to subscribers.

Create a pool of addresses to assign to PPPoE clients:

/ip pool add name=pppoe-pool ranges=10.0.0.2-10.0.0.254

This pool provides 253 addresses for subscribers.

The profile defines settings applied to all connections using it:

/ppp profile add \
name=pppoe-profile \
local-address=10.0.0.1 \
remote-address=pppoe-pool \
dns-server=8.8.8.8,8.8.4.4 \
change-tcp-mss=yes

Parameter explanation:

ParameterPurpose
local-addressRouter’s address on PPPoE tunnels (gateway)
remote-addressPool or address for clients
dns-serverDNS servers pushed to clients
change-tcp-mssAdjust MSS to prevent fragmentation issues

Add users who can connect to your PPPoE server:

/ppp secret add \
name=subscriber1 \
password=securepass123 \
service=pppoe \
profile=pppoe-profile

For multiple users, repeat with different credentials:

/ppp secret add name=subscriber2 password=pass456 service=pppoe profile=pppoe-profile
/ppp secret add name=subscriber3 password=pass789 service=pppoe profile=pppoe-profile

Bind the server to an interface:

/interface pppoe-server server add \
interface=ether2 \
service-name=MyISP \
default-profile=pppoe-profile \
authentication=mschap2,mschap1,chap \
one-session-per-host=yes \
disabled=no

Parameter explanation:

ParameterPurpose
interfaceInterface where clients connect
service-nameName advertised to clients
default-profileProfile applied to connections
authenticationAllowed auth methods (avoid PAP for security)
one-session-per-hostPrevent multiple connections from same MAC

Important

Do not assign an IP address to the PPPoE server interface. The PPP tunnel handles addressing - assigning an IP to the underlying interface can cause routing issues.

Ensure PPPoE clients can reach the internet:

# Add the server interface IP (if not using from profile)
/ip address add address=10.0.0.1/24 interface=ether2 disabled=yes comment="Not needed - PPP handles this"
# NAT for PPPoE clients
/ip firewall nat add chain=srcnat src-address=10.0.0.0/24 out-interface=ether1 action=masquerade comment="NAT for PPPoE clients"

Check server status:

/interface pppoe-server server print

Expected Output:

Flags: X - disabled
0 interface=ether2 service-name="MyISP" max-mtu=1480 max-mru=1480
mrru=disabled authentication=chap,mschap1,mschap2 keepalive-timeout=10
one-session-per-host=yes max-sessions=0 default-profile=pppoe-profile
/interface pppoe-server print

Expected Output (when clients are connected):

Flags: D - dynamic, R - running
# NAME USER SERVICE CALLER-ID UPTIME
0 DR <pppoe-subscriber1> subscriber1 pppoe AA:BB:CC:DD:EE:FF 1h23m
/ppp secret print
/ppp active print

Some ISPs assign static IPs but still use PPPoE for authentication. The configuration is the same - the ISP assigns your static IP through the PPP session.

If your ISP requires a specific VLAN tag:

# Create VLAN interface
/interface vlan add name=vlan100-wan vlan-id=100 interface=ether1
# Create PPPoE client on VLAN
/interface pppoe-client add interface=vlan100-wan user=myuser password=mypass \
add-default-route=yes use-peer-dns=yes name=pppoe-wan disabled=no

Apply bandwidth limits per subscriber using profiles:

# Create profile with rate limit (10M download / 5M upload)
/ppp profile add name=plan-10m local-address=10.0.0.1 remote-address=pppoe-pool \
rate-limit=5M/10M
# Assign to user
/ppp secret set [find name=subscriber1] profile=plan-10m

Serve PPPoE on multiple VLANs without creating individual interfaces:

/interface pppoe-server server add \
interface=bridge1 \
service-name=MultiVLAN-ISP \
default-profile=pppoe-profile \
pppoe-over-vlan-range=100-110,200 \
disabled=no

VLAN Conflict

Do not create VLAN interfaces with IDs that overlap with pppoe-over-vlan-range. The PPPoE server manages these VLANs internally.

Configure failover between PPPoE and another connection:

# Primary PPPoE
/interface pppoe-client add interface=ether1 user=primary password=pass \
add-default-route=yes default-route-distance=1 name=pppoe-primary disabled=no
# Backup connection (different type)
/ip dhcp-client add interface=ether2 add-default-route=yes default-route-distance=2
# NAT for both
/ip firewall nat add chain=srcnat out-interface=pppoe-primary action=masquerade
/ip firewall nat add chain=srcnat out-interface=ether2 action=masquerade

PPPoE adds 8 bytes of overhead to each packet (6 bytes PPPoE + 2 bytes PPP), reducing the effective MTU from 1500 to 1492 bytes.

SettingValueNotes
PPPoE MTU1492Maximum for PPPoE
PPPoE MRU1492Maximum for PPPoE
TCP MSS14521492 - 40 bytes IP/TCP headers

To prevent issues with large packets not being delivered:

/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn \
action=change-mss new-mss=clamp-to-pmtu passthrough=yes
SymptomLikely CauseSolution
”PADI timeout” in logNo PPPoE server respondingCheck cable, verify ISP modem is in bridge mode
”Authentication failed”Wrong credentialsVerify username/password with ISP
”Service name not found”ISP requires specific service nameUse scan command to find service name
Interface shows “X” flagInterface disabledEnable with /interface pppoe-client enable

Enable debug logging:

/system logging add topics=pppoe,debug action=memory
/log print where topics~"pppoe"
CheckCommandWhat to Look For
Default route exists/ip route printRoute via PPPoE interface
NAT configured/ip firewall nat printMasquerade on PPPoE interface
DNS working/ip dns printServers configured
SymptomLikely CauseSolution
No clients connectServer disabledCheck /interface pppoe-server server print for X flag
Clients see no serverWrong interfaceVerify server bound to correct interface
Auth failuresWrong secretsVerify /ppp secret print has matching credentials
CheckSolution
MTU mismatchesLower max-mtu to 1480 or 1460
TCP MSS issuesEnable change-tcp-mss=yes in profile
Duplex mismatchCheck underlying Ethernet interface settings
# Adjust keepalive if ISP times out quickly
/interface pppoe-client set pppoe-wan keepalive-timeout=30

Common Mistake

Having both DHCP client and PPPoE client on the same interface causes conflicts. Always remove DHCP client before configuring PPPoE:

/ip dhcp-client remove [find interface=ether1]
  1. Disable PAP authentication - it sends passwords in cleartext:

    /interface pppoe-server server set 0 authentication=mschap2,mschap1,chap
  2. Enable one-session-per-host to prevent connection abuse:

    /interface pppoe-server server set 0 one-session-per-host=yes
  3. Use strong passwords in PPP secrets

  1. Add the PPPoE interface to your WAN interface list:

    /interface list member add interface=pppoe-wan list=WAN
  2. Ensure firewall protects the PPPoE interface like any WAN connection

# PPPoE Client
/interface pppoe-client print # View client status
/interface pppoe-client monitor # Monitor connection
/interface pppoe-client scan ether1 # Discover servers
# PPPoE Server
/interface pppoe-server server print # View server config
/interface pppoe-server print # View active connections
/ppp secret print # View user accounts
/ppp active print # View active sessions
/ppp profile print # View profiles