PPPoE server no Mikrotik RouterOS v7: configuração completa

Quase todo provedor pequeno começa com um PPPoE server no Mikrotik. É o ponto em que o login do cliente vira um IP, um plano de velocidade e uma linha no registro de conexão. Ele é simples de subir, mas deixa armadilhas para depois: MTU errado que trava site de banco, cliente com duas sessões, plano que limita o lado contrário e RADIUS que ninguém sabe se está respondendo.
Este guia monta um PPPoE server no Mikrotik RouterOS v7 do zero, já pensando em operação de provedor: VLAN vinda da OLT, pool de endereços, profile com limite de banda, usuário local para teste, RADIUS para a base de clientes e os comandos para descobrir por que um cliente não conecta. Os comandos foram conferidos na documentação oficial da MikroTik e o cenário usa endereços de documentação, então ajuste nomes, VLAN e faixas para a sua rede.
Resposta rápida: PPPoE server no Mikrotik em 7 passos
- Crie a interface VLAN por onde os clientes chegam da OLT.
- Crie o pool de IPs que os clientes vão receber.
- Crie um profile por plano, com gateway, DNS,
rate-limite ajuste de MSS. - Crie um secret local para testar antes de ligar o RADIUS.
- Suba o servidor PPPoE na VLAN, com MTU e MRU 1492.
- Aponte o
/radiuspara o seu servidor e ligueuse-radiusno/ppp aaa. - Confira com
/ppp active printe acompanhe o log de pppoe e radius no primeiro teste.
Cenário do laboratório
O cliente tem um roteador Wi-Fi ou uma ONU em modo roteador que disca PPPoE. A ONU entrega o quadro para a OLT, que coloca tudo numa VLAN de serviço e manda para o concentrador. O Mikrotik recebe essa VLAN, autentica o login no RADIUS, entrega o IP e aplica o plano. Se a sua OLT é Huawei, o post sobre como provisionar ONU na OLT Huawei mostra onde essa VLAN entra no service-port.
| Item | Valor no laboratório | Observação |
|---|---|---|
| VLAN dos clientes | 100, chegando da OLT pela sfp-sfpplus1 | Uma VLAN por OLT ou por PON |
| Pool | 100.64.0.2 a 100.64.3.254 | Faixa de CGNAT; use público se tiver |
| Gateway (local-address) | 100.64.0.1 | Fora do pool |
| DNS entregue | 192.0.2.53 e 192.0.2.54 | Seus recursivos |
| RADIUS | 192.0.2.10 | FreeRADIUS, sistema de gestão ou outro |
| Origem do RADIUS | 198.51.100.1 (loopback) | O RADIUS cadastra este IP como cliente |

O pool usa 100.64.0.0/22 porque a maioria dos provedores novos entrega CGNAT. A tradução para IP público fica em outro post, sobre CGNAT no Mikrotik com netmap. Aqui o foco é a sessão PPPoE em si.
Interface VLAN e pool de endereços
O primeiro passo do PPPoE server no Mikrotik é ter uma interface que receba os clientes. Em provedor com OLT, eles chegam marcados numa VLAN. Crie a interface VLAN em cima da porta que liga na OLT:
/interface vlan add name=vlan100-pppoe vlan-id=100 interface=sfp-sfpplus1
O nome da interface carrega a VLAN e a função. Quando o concentrador tiver dez servidores PPPoE, esse nome evita confusão no print. Não coloque IP nessa interface: o PPPoE trabalha na camada 2 e o endereço do cliente vem do profile.
Depois, o pool que entrega IP aos clientes:
/ip pool add name=pool-pppoe ranges=100.64.0.2-100.64.3.254
A faixa começa em .2 porque o .1 fica para o gateway, que vai no profile. Um /22 dá 1021 endereços para clientes. Quando o pool esgota, o cliente autentica e não recebe IP, e o log mostra a falha de alocação. Acompanhe o uso do pool no /ip pool used print e emende uma segunda faixa antes de chegar no limite.
Profile: gateway, DNS e limite de banda
O profile é o plano. Ele diz qual IP o concentrador usa do lado dele, de onde sai o IP do cliente, qual DNS entregar e qual velocidade aplicar. Um profile por plano facilita a vida de quem atende o telefone:
/ppp profile
add name=plano-100m local-address=100.64.0.1 remote-address=pool-pppoe \
dns-server=192.0.2.53,192.0.2.54 rate-limit=50M/100M \
change-tcp-mss=yes only-one=yes use-encryption=noO que cada opção do profile faz:
- local-address: o IP do lado do concentrador em cada túnel. Pode ser o mesmo para todos os clientes, porque cada sessão é ponto a ponto.
- remote-address=pool-pppoe: o cliente recebe um IP do pool criado antes.
- dns-server: até dois servidores, entregues na negociação do IPCP.
- rate-limit=50M/100M: o primeiro número é o rx e o segundo é o tx, do ponto de vista do roteador. O rx é o upload do cliente e o tx é o download. Este plano é 100 mega de download e 50 de upload. Inverter os dois entrega ao cliente o plano de cabeça para baixo.
- change-tcp-mss=yes: o roteador reescreve o MSS das conexões TCP para caber no MTU do túnel. Sem isso, alguns sites abrem pela metade.
- only-one=yes: o mesmo login não pode ter duas sessões ao mesmo tempo.
- use-encryption=no: PPPoE de provedor não usa criptografia MPPE. Ligar só gasta CPU do concentrador sem proteger nada além do enlace até a OLT.
O rate-limit cria uma fila simples dinâmica para cada cliente conectado. Ela aparece em /queue simple print com o nome da interface do cliente. O formato aceita também burst (rajada), com taxa, limiar e tempo de rajada depois do valor básico. Comece sem burst e só acrescente quando souber o que quer vender.
Secret local para o primeiro teste
Antes de ligar o RADIUS, crie um usuário local. Ele prova que o PPPoE server no Mikrotik funciona sozinho. Se algo falhar depois, você sabe que o problema está no RADIUS e não na sessão:
/ppp secret
add name=cliente0001 password=TroqueEstaSenha profile=plano-100m \
service=pppoeO service=pppoe impede que esse login seja usado em L2TP ou SSTP no mesmo roteador. Com o RADIUS ligado, o RouterOS consulta primeiro os secrets locais e só pergunta ao RADIUS se o usuário não existir na base local. Isso permite manter um login de teste local mesmo depois da migração, mas também cria confusão: um secret local esquecido com o mesmo nome de um cliente do RADIUS ganha a disputa e aplica o plano errado.
Subindo o PPPoE server no Mikrotik na VLAN
/interface pppoe-server server
add service-name=provedor interface=vlan100-pppoe \
default-profile=plano-100m authentication=pap,chap,mschap2 \
max-mtu=1492 max-mru=1492 one-session-per-host=yes \
keepalive-timeout=10 disabled=noO que cada parâmetro faz:
- service-name: nome do serviço anunciado. O cliente que não manda nome conecta em qualquer servidor; o que manda nome só conecta no servidor com nome igual. Deixe o roteador do cliente sem nome de serviço.
- interface: a VLAN criada antes. É nela que o servidor escuta o PADI do cliente.
- default-profile: o profile usado quando o secret ou o RADIUS não indicam outro.
- authentication: PAP, CHAP e MS-CHAPv2. O padrão também traz MS-CHAPv1, que pode sair. Se o seu RADIUS guarda senha com hash, confira quais métodos ele aceita.
- max-mtu e max-mru 1492: o cabeçalho PPPoE ocupa 8 bytes, então numa Ethernet de 1500 sobram 1492. Mais sobre isso na próxima seção.
- one-session-per-host=yes: se o mesmo MAC tentar abrir uma sessão nova, a antiga cai. Resolve o roteador que reinicia e fica com sessão fantasma até o keepalive expirar.
- keepalive-timeout=10: depois de 10 segundos sem tráfego, o servidor manda eco LCP a cada segundo. Sem resposta por 20 segundos, a sessão cai.
Várias VLANs no mesmo servidor
Quando cada OLT ou cada PON usa uma VLAN própria, criar dezenas de interfaces VLAN dá trabalho. O RouterOS v7 tem a opção pppoe-over-vlan-range, que faz o servidor aceitar quadros marcados numa faixa de VLANs direto na porta física:
/interface pppoe-server server
add service-name=provedor interface=sfp-sfpplus1 \
pppoe-over-vlan-range=101-110 accept-untagged=no \
default-profile=plano-100m max-mtu=1492 max-mru=1492 disabled=noO accept-untagged=no recusa clientes sem VLAN nessa porta. A documentação avisa: não crie interface VLAN com um ID que esteja dentro da faixa no mesmo servidor. Por isso a faixa do exemplo começa em 101 e deixa a VLAN 100 com o servidor próprio.
MTU 1492 e ajuste de MSS
A maior parte dos chamados de site que não abre depois de subir um PPPoE server no Mikrotik é MTU. O pacote IP do cliente viaja dentro do PPPoE, que acrescenta 8 bytes. Se o cliente manda um pacote de 1500, ele não cabe no quadro e precisa ser fragmentado ou descartado. Com o bit DF ligado, que é o comum em TCP, ele é descartado e o site fica carregando para sempre.
| Camada | Tamanho | De onde vem |
|---|---|---|
| Ethernet entre OLT e concentrador | 1500 | Padrão |
| Cabeçalho PPPoE + PPP | 8 bytes | RFC 2516 |
| MTU do túnel PPPoE | 1492 | max-mtu e max-mru |
| MSS TCP dentro do túnel | 1452 | 1492 menos 40 de cabeçalho IP e TCP |
O padrão do RouterOS para max-mtu e max-mru no servidor é 1480, um valor conservador. 1492 é o máximo que a RFC 2516 permite numa Ethernet de 1500 e é o que a maioria dos roteadores de cliente usa. Qualquer um dos dois funciona se o MSS for ajustado. É o que faz o change-tcp-mss=yes do profile: o concentrador reescreve o MSS do SYN para caber no túnel, e o TCP nem tenta mandar segmentos grandes demais.
RADIUS no PPPoE server no Mikrotik
Com mais de algumas dezenas de clientes, cadastrar secret no roteador vira problema: senha espalhada, plano sem histórico e nenhum registro de conexão centralizado. O RADIUS resolve as três coisas. O concentrador só pergunta, e o servidor responde se o login vale, qual IP ou pool usar e qual velocidade aplicar:
/radius
add service=ppp address=192.0.2.10 secret=SegredoRadius \
src-address=198.51.100.1 timeout=2s
/ppp aaa
set use-radius=yes accounting=yes interim-update=5m
/radius incoming
set accept=yes- service=ppp: este servidor RADIUS atende o PPP. O mesmo servidor pode atender login de administrador ou hotspot, cada um com a sua linha.
- src-address: o IP de origem das consultas. Use a loopback do concentrador e cadastre esse IP como cliente no RADIUS. Sem isso, o roteador sai pelo IP da interface, que muda quando o caminho muda, e o RADIUS passa a ignorar as consultas.
- timeout=2s: o padrão é 1100 ms. Se o RADIUS está longe ou sobrecarregado, o cliente cai em reautenticação. Ajuste olhando o
/radius monitor. - use-radius=yes e accounting=yes: autentica e registra início e fim de cada sessão no RADIUS.
- interim-update=5m: o concentrador manda a contagem de bytes a cada 5 minutos. Sem isso, o sistema só fica sabendo do consumo quando a sessão cai.
- /radius incoming accept=yes: aceita pedidos de desconexão e mudança de plano vindos do RADIUS. A porta padrão no RouterOS é 1700; confira a que o seu sistema usa.
Exemplo no lado do FreeRADIUS
Se o RADIUS for um FreeRADIUS puro, o mínimo é cadastrar o concentrador como cliente e o usuário com os atributos de resposta:
# /etc/freeradius/3.0/clients.conf
client concentrador {
ipaddr = 198.51.100.1
secret = SegredoRadius
}
# /etc/freeradius/3.0/users
cliente0002 Cleartext-Password := "OutraSenha"
Framed-Pool = "pool-pppoe",
Mikrotik-Rate-Limit = "100M/200M"Framed-Pool manda o roteador tirar o IP do pool com aquele nome, que precisa existir no Mikrotik. Mikrotik-Rate-Limit sobrescreve o rate-limit do profile e segue o mesmo formato: upload do cliente primeiro, download depois. O atributo vem do dicionário da MikroTik, que já faz parte da instalação padrão do FreeRADIUS 3. Sistemas de gestão de provedor fazem essa parte por uma tela, mas os atributos enviados são os mesmos.
Verificando as sessões
/interface pppoe-server server print /ppp active print /ppp active print detail where name=cliente0001 /queue simple print /radius monitor 0
Com o PPPoE server no Mikrotik no ar, o primeiro comando mostra os servidores e as interfaces. O segundo lista quem está conectado, e o terceiro abre os detalhes de um login: IP, MAC (caller-id), tempo de sessão e encoding. O /queue simple print confirma se a fila do plano foi criada com os valores certos. O último mostra contadores do RADIUS: pedidos, aceites, rejeições e timeouts. Uma saída de exemplo do /ppp active print:
Flags: R - RADIUS Columns: NAME, SERVICE, CALLER-ID, ADDRESS, UPTIME # NAME SERVICE CALLER-ID ADDRESS UPTIME 0 cliente0001 pppoe 02:00:00:00:00:01 100.64.0.10 3h12m40s 1 R cliente0002 pppoe 02:00:00:00:00:02 100.64.0.11 41m5s
A flag R indica que a sessão foi autenticada pelo RADIUS. No exemplo, cliente0001 é o secret local do teste e cliente0002 veio do FreeRADIUS. Para derrubar uma sessão e forçar o cliente a discar de novo, por exemplo depois de trocar o plano:
/ppp active remove [find name=cliente0001]
Troubleshooting do PPPoE server no Mikrotik
Quando um cliente não conecta no PPPoE server no Mikrotik, ligue o log de depuração dos tópicos pppoe e radius. O debug mostra a troca PADI, PADO, PADR e PADS, a negociação LCP e a resposta do RADIUS:
/system logging add topics=pppoe,debug action=memory /system logging add topics=radius,debug action=memory /log print where topics~"pppoe|radius"
Leia na ordem. Se não aparece PADI, o quadro do cliente não chega ao concentrador e o problema está na VLAN, na OLT ou na ONU. Se aparece PADI e não sai PADO, o servidor não está naquela interface ou o nome de serviço não bate. Se a sessão chega até a autenticação e cai, o problema é login, senha ou RADIUS. Desligue o debug quando terminar, porque num concentrador cheio ele gera muitas linhas por segundo.
| Sintoma | Causa provável | O que conferir |
|---|---|---|
| Cliente não aparece no log | VLAN errada na OLT ou no Mikrotik; servidor desativado | Conferir a VLAN nas duas pontas e o print do servidor |
| Log mostra autenticação falhou | Senha errada, secret com service diferente, RADIUS rejeitando | Testar com o secret local; olhar o motivo no log do RADIUS |
| RADIUS com timeout | IP de origem não cadastrado, segredo diferente, firewall | /radius monitor 0 e captura na porta 1812 |
| Conecta, mas sites não abrem | MTU e MSS | max-mtu 1492 e change-tcp-mss=yes |
| Conecta sem IP | Pool esgotado ou Framed-Pool com nome errado | /ip pool used print |
| Velocidade invertida | rx e tx trocados no rate-limit | Upload primeiro, download depois |
| Cliente cai a cada poucos minutos | Duas sessões do mesmo login ou keepalive curto demais | only-one, one-session-per-host e log de LCP |
Por fim, o concentrador é a porta de entrada de todos os clientes. Feche o acesso de gerência, desligue serviços que não usa e filtre o que chega na VLAN de clientes. O guia de segurança no Mikrotik RouterOS v7 cobre esses passos para o PPPoE server no Mikrotik e o resto do roteador.
Perguntas frequentes
Quantos clientes um PPPoE server no Mikrotik aguenta?
Depende do modelo, das filas e do firewall, não só do número de sessões. Cada cliente cria uma interface dinâmica e uma fila simples. Acompanhe a CPU em horário de pico e divida a base em mais de um concentrador antes de chegar perto do limite.
Devo usar MTU 1480 ou 1492 no PPPoE?
1492 é o máximo numa Ethernet de 1500 e é o valor mais comum. 1480 é o padrão do RouterOS e também funciona. O que não pode faltar é o ajuste de MSS no profile.
No rate-limit, qual número é o download do cliente?
O segundo. O formato é rx/tx do ponto de vista do roteador, então rx é o upload do cliente e tx é o download. Um plano de 100 mega de download e 50 de upload fica 50M/100M.
Posso usar secret local e RADIUS ao mesmo tempo?
Pode. O RouterOS consulta os secrets locais primeiro e só vai ao RADIUS quando o usuário não existe na base local. Use isso para um login de teste e evite secrets locais com o mesmo nome de clientes do RADIUS.
Preciso de um servidor PPPoE por VLAN?
No RouterOS v7, não necessariamente. A opção pppoe-over-vlan-range deixa um único servidor aceitar uma faixa de VLANs na porta física. Só não crie interface VLAN com ID dentro dessa faixa.
Conclusão
Um PPPoE server no Mikrotik bem montado tem poucas peças: VLAN, pool, profile, servidor e RADIUS. Os problemas aparecem nos detalhes: MTU sem ajuste de MSS, rate-limit invertido, IP de origem do RADIUS que muda e sessões duplicadas. Teste com um secret local, ligue o RADIUS depois e mantenha o log de depuração à mão para o primeiro cliente que reclamar.
Com o PPPoE server no Mikrotik estável, os próximos passos são o CGNAT para os clientes do 100.64 e o acesso remoto da equipe. Para o segundo, veja como criar VPN no Mikrotik.

[…] No Wireshark, o filtro de exibição pppoed mostra a descoberta e pap || chap a autenticação. PADI sem PADO quer dizer que o concentrador não respondeu (serviço, VLAN ou interface errada); PADS seguido de falha no CHAP é usuário ou senha. O passo a passo do servidor está no guia de PPPoE server no Mikrotik RouterOS v7. […]
[…] que também faz CGNAT. É o desenho mais comum em provedor pequeno, montado como nos posts sobre PPPoE server no Mikrotik RouterOS v7 e CGNAT no Mikrotik com […]