mikrotik-wiki.ru
Главная
Загрузка...

PPPoE-сервер на MikroTik — настройка для провайдера

RouterOS 7.xДля провайдеров12 мин30 мар. 2026 г.
TelegramVK

PPPoE (Point-to-Point Protocol over Ethernet) — стандартный протокол для подключения абонентов в сетях провайдеров. MikroTik с PPPoE-сервером выполняет роль BRAS (Broadband Remote Access Server) — аутентифицирует абонентов, назначает IP-адреса, управляет скоростью и ведёт учёт трафика. В этом руководстве подробно разберём настройку PPPoE-сервера на RouterOS 7.20+: от создания пулов адресов до RADIUS-интеграции и мониторинга активных сессий.

Описание

Зачем PPPoE-сервер

PPPoE решает несколько ключевых задач для интернет-провайдера:

  • Аутентификация — каждый абонент входит по логину и паролю. Без авторизации доступа к интернету нет;
  • Учёт трафика — система точно знает, сколько трафика потребил каждый абонент;
  • Управление скоростью — через PPP-профили задаются тарифные планы (rate-limit);
  • Динамическое назначение IP — абоненты получают IP из пула, не нужно статическое назначение;
  • Изоляция абонентов — каждый абонент находится в своём point-to-point туннеле;
  • Масштабируемость — легко добавлять новых абонентов без изменения сетевой топологии.

Архитектура

code
Абонент (PPPoE-клиент)
    |
    |--- Ethernet/VLAN ---
    |
MikroTik (PPPoE-сервер / BRAS)
    |
    |--- NAT / Routing ---
    |
Интернет (Upstream)

MikroTik принимает PPPoE-соединения на одном или нескольких интерфейсах (обычно bridge с портами абонентов). Каждому абоненту создаётся динамический PPP-интерфейс с назначенным IP-адресом.

Терминология

ТерминОписание
PPPoE ServerСервис на MikroTik, принимающий PPPoE-подключения
PPP ProfileНабор параметров для группы абонентов (IP, DNS, скорость)
PPP SecretУчётная запись абонента (логин, пароль, привязка к профилю)
IP PoolДиапазон IP-адресов, раздаваемых абонентам
BRASBroadband Remote Access Server — маршрутизатор доступа
RADIUSВнешний сервер авторизации для масштабных сетей
rate-limitОграничение скорости (upload/download)

Когда использовать PPPoE

PPPoE подходит:

  • ISP с абонентской базой от 10 до нескольких тысяч клиентов;
  • необходима авторизация по логину/паролю;
  • нужен учёт трафика и управление скоростью;
  • абоненты подключены через Ethernet/VLAN.

PPPoE не нужен:

  • домашняя сеть (достаточно DHCP);
  • корпоративная сеть (802.1X + RADIUS);
  • менее 10 клиентов (проще статическая настройка).

Настройка

Шаг 1: Создание IP-пулов для абонентов

Пул определяет диапазон IP-адресов, которые PPPoE-сервер раздаёт абонентам:

[admin@MikroTik] >
# Основной пул для абонентов
/ip/pool/add name=pool-pppoe-1 ranges=10.10.0.2-10.10.3.254 comment="PPPoE subscribers pool 1"

# Резервный пул (при заполнении основного)
/ip/pool/add name=pool-pppoe-2 ranges=10.10.4.2-10.10.7.254 comment="PPPoE subscribers pool 2"

# Связываем пулы (next-pool для автоматического переключения)
/ip/pool/set pool-pppoe-1 next-pool=pool-pppoe-2

Пул 10.10.0.2–10.10.3.254 вмещает ~1022 адреса. При заполнении PPPoE-сервер автоматически выдаст адреса из pool-pppoe-2.

Local address — IP-адрес PPPoE-сервера (шлюз для абонентов). Обычно используется один адрес для всех абонентов:

[admin@MikroTik] >
# Этот адрес будет шлюзом для всех PPPoE-клиентов
# Он задаётся в PPP Profile (шаг 2)

Шаг 2: Создание PPP-профилей (тарифных планов)

PPP Profile определяет параметры подключения для группы абонентов. Создадим несколько профилей для разных тарифов:

[admin@MikroTik] >
# Базовый тариф: 50 Мбит/с
/ppp/profile/add name=tariff-50m \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit=50M/50M \
    only-one=yes \
    comment="Tariff 50 Mbps"

# Продвинутый тариф: 100 Мбит/с
/ppp/profile/add name=tariff-100m \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit=100M/100M \
    only-one=yes \
    comment="Tariff 100 Mbps"

# Максимальный тариф: 300 Мбит/с
/ppp/profile/add name=tariff-300m \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit=300M/300M \
    only-one=yes \
    comment="Tariff 300 Mbps"

Разберём параметры:

ПараметрОписание
local-addressIP-адрес PPPoE-сервера (шлюз для абонента)
remote-addressПул IP-адресов для абонентов
dns-serverDNS-серверы, выдаваемые абоненту
rate-limitОграничение скорости в формате rx/tx (upload/download с точки зрения сервера)
only-oneРазрешить только одну сессию на один логин

Формат rate-limit

Формат: rx-rate/tx-rate [rx-burst-rate/tx-burst-rate] [rx-burst-threshold/tx-burst-threshold] [rx-burst-time/tx-burst-time] [priority] [rx-limit/tx-limit]

Пример с burst (турбо-режим на первые секунды):

[admin@MikroTik] >
# Тариф 100 Мбит/с с burst до 150 Мбит/с на 10 секунд
/ppp/profile/add name=tariff-100m-burst \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit="100M/100M 150M/150M 80M/80M 10/10" \
    only-one=yes \
    comment="Tariff 100 Mbps with burst"

В этом примере:

  • базовая скорость — 100 Мбит/с;
  • burst — 150 Мбит/с;
  • burst порог — 80 Мбит/с (burst активен, пока средняя скорость ниже порога);
  • burst time — 10 секунд.

Дополнительные настройки профиля

[admin@MikroTik] >
# Настройки безопасности и оптимизации для профиля
/ppp/profile/set tariff-50m \
    change-tcp-mss=yes \
    use-encryption=no \
    use-compression=no \
    use-mpls=no
ПараметрРекомендацияОписание
change-tcp-mssyesАвтоматическая корректировка TCP MSS (важно для PPPoE)
use-encryptionnoMPPE-шифрование — замедляет и нагружает CPU
use-compressionnoСжатие — нагружает CPU, малоэффективно
use-mplsnoMPLS в PPP — только для специальных сценариев

Шаг 3: Создание PPP Secrets (учётных записей абонентов)

Для каждого абонента создаётся запись (secret) с логином, паролем и привязкой к профилю:

[admin@MikroTik] >
# Абонент 1
/ppp/secret/add name=user001 password=SecurePass001 service=pppoe profile=tariff-50m comment="Иванов А.А., ул. Ленина 1, кв. 5"

# Абонент 2
/ppp/secret/add name=user002 password=SecurePass002 service=pppoe profile=tariff-100m comment="Петров Б.Б., ул. Мира 10, кв. 3"

# Абонент 3 с фиксированным IP
/ppp/secret/add name=user003 password=SecurePass003 service=pppoe profile=tariff-300m remote-address=10.10.0.100 comment="Сидоров В.В., ул. Гагарина 5 (статический IP)"

Параметры:

ПараметрОписание
nameЛогин абонента
passwordПароль абонента
serviceТип сервиса (pppoe)
profileПрофиль (тарифный план)
remote-addressФиксированный IP (необязательно, по умолчанию из пула)
commentИнформация об абоненте (имя, адрес)

Рекомендация: для сетей с более чем 50 абонентами используйте RADIUS вместо локальных secrets (см. Шаг 8).

Шаг 4: Создание PPPoE-сервера

[admin@MikroTik] >
# Создание PPPoE-сервера на интерфейсе, к которому подключены абоненты
/interface/pppoe-server/server/add service-name=ISP-PPPoE interface=bridge-subscribers disabled=no default-profile=tariff-50m authentication=pap,chap,mschap2 max-mtu=1480 max-mru=1480 keepalive-timeout=30 one-session-per-host=yes comment="Main PPPoE Server"

Параметры:

ПараметрОписание
service-nameИмя сервиса (клиент увидит при подключении)
interfaceИнтерфейс для приёма PPPoE-подключений
default-profileПрофиль по умолчанию (если в secret не указан)
authenticationМетоды аутентификации
max-mtu / max-mruМаксимальный размер пакета в PPPoE-туннеле
keepalive-timeoutВремя ожидания keepalive (в секундах)
one-session-per-hostОдна сессия на один MAC-адрес

MTU и PPPoE

PPPoE добавляет 8 байт заголовка к каждому пакету. Стандартный Ethernet MTU — 1500 байт, поэтому:

  • MTU PPPoE = 1500 - 8 = 1492 (максимум);
  • На практике часто используют 1480 для совместимости с VLAN (ещё 4 байта) и другими инкапсуляциями.
[admin@MikroTik] >
# Если абоненты подключены через VLAN:
# Ethernet MTU (1500) - VLAN (4) - PPPoE (8) = 1488
# Округляем вниз: 1480

Создание bridge для абонентов (если ещё нет)

[admin@MikroTik] >
# Bridge для абонентских портов
/interface/bridge/add name=bridge-subscribers comment="Subscriber bridge"

# Добавляем порты (пример для RB5009 — ether2-ether8)
/interface/bridge/port/add bridge=bridge-subscribers interface=ether2
/interface/bridge/port/add bridge=bridge-subscribers interface=ether3
/interface/bridge/port/add bridge=bridge-subscribers interface=ether4
/interface/bridge/port/add bridge=bridge-subscribers interface=ether5
/interface/bridge/port/add bridge=bridge-subscribers interface=ether6
/interface/bridge/port/add bridge=bridge-subscribers interface=ether7
/interface/bridge/port/add bridge=bridge-subscribers interface=ether8

Шаг 5: Настройка NAT для абонентов

Абонентам нужен NAT для выхода в интернет (если не используются «белые» IP):

[admin@MikroTik] >
# NAT для PPPoE-абонентов
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=10.10.0.0/22 out-interface=ether1 comment="NAT for PPPoE subscribers"

Здесь 10.10.0.0/22 покрывает диапазон 10.10.0.0–10.10.3.255 (пул 1). Если используются оба пула:

[admin@MikroTik] >
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=10.10.0.0/21 out-interface=ether1 comment="NAT for all PPPoE subscribers"

Шаг 6: Настройка Firewall для PPPoE

[admin@MikroTik] >
# Разрешаем PPPoE discovery и session
/ip/firewall/filter/add chain=input action=accept protocol=17 dst-port=8 comment="Allow PPPoE discovery"

# Разрешаем DNS от абонентов (если MikroTik раздаёт DNS)
/ip/firewall/filter/add chain=input action=accept protocol=udp dst-port=53 src-address=10.10.0.0/22 comment="Allow DNS from subscribers"
/ip/firewall/filter/add chain=input action=accept protocol=tcp dst-port=53 src-address=10.10.0.0/22 comment="Allow DNS from subscribers TCP"

# Блокируем доступ абонентов к управлению маршрутизатором
/ip/firewall/filter/add chain=input action=drop src-address=10.10.0.0/22 dst-port=80,443,8291,22,23,8728 protocol=tcp comment="Block subscriber access to management"

# Разрешаем пересылку трафика абонентов
/ip/firewall/filter/add chain=forward action=accept src-address=10.10.0.0/22 comment="Allow subscriber traffic forward"

# Изоляция абонентов (блокируем трафик между абонентами)
/ip/firewall/filter/add chain=forward action=drop src-address=10.10.0.0/22 dst-address=10.10.0.0/22 comment="Isolate PPPoE subscribers"

Важно: правило изоляции абонентов должно стоять перед правилом разрешения пересылки, чтобы абоненты не могли обращаться друг к другу.

Шаг 7: Ограничение скорости через Queue (альтернатива rate-limit)

Rate-limit в PPP Profile создаёт простую очередь (Simple Queue). Для более гибкого управления используйте Queue Tree:

[admin@MikroTik] >
# Глобальная очередь для всех абонентов
/queue/type/add name=pcq-download kind=pcq pcq-rate=0 pcq-classifier=dst-address
/queue/type/add name=pcq-upload kind=pcq pcq-rate=0 pcq-classifier=src-address

# Пометка трафика через Mangle
/ip/firewall/mangle/add chain=forward action=mark-packet new-packet-mark=pppoe-download passthrough=no dst-address=10.10.0.0/22 comment="Mark PPPoE download"
/ip/firewall/mangle/add chain=forward action=mark-packet new-packet-mark=pppoe-upload passthrough=no src-address=10.10.0.0/22 comment="Mark PPPoE upload"

# Queue Tree
/queue/tree/add name=pppoe-download-queue parent=global packet-mark=pppoe-download queue=pcq-download max-limit=1G comment="PPPoE download queue"
/queue/tree/add name=pppoe-upload-queue parent=global packet-mark=pppoe-upload queue=pcq-upload max-limit=1G comment="PPPoE upload queue"

PCQ (Per-Connection Queue) автоматически делит полосу пропускания между всеми абонентами. Однако для индивидуальных тарифов лучше использовать rate-limit в профиле или индивидуальные Simple Queue.

Шаг 8: Учёт трафика

RouterOS поддерживает встроенный учёт трафика:

[admin@MikroTik] >
# Включение учёта трафика
/ip/accounting/set enabled=yes threshold=1000

# Настройка веб-доступа к учёту (для биллинга)
/ip/accounting/web-access/set accessible-via-web=yes address=10.10.0.0/22

Для просмотра текущей статистики:

[admin@MikroTik] >
# Учёт трафика по IP
/ip/accounting/snapshot/take
/ip/accounting/snapshot/print

Для серьёзного биллинга используйте RADIUS accounting (см. Шаг 9) — он отправляет данные о трафике на внешний сервер (FreeRADIUS + база данных).

Шаг 9: Масштабирование — RADIUS вместо локальных secrets

Для сетей с более чем 50 абонентами локальное управление учётными записями неудобно. RADIUS (Remote Authentication Dial-In User Service) позволяет:

  • хранить учётные записи во внешней базе данных;
  • централизованно управлять тарифами;
  • вести accounting (учёт сессий и трафика);
  • интегрироваться с биллинговыми системами.

Настройка RADIUS-клиента на MikroTik

[admin@MikroTik] >
# Добавление RADIUS-сервера
/radius/add service=ppp address=192.168.1.100 secret=RadiusSecret123 timeout=3000ms authentication-port=1812 accounting-port=1813 comment="FreeRADIUS server"

# Включение RADIUS для PPP
/ppp/aaa/set use-radius=yes accounting=yes interim-update=5m

Параметры:

ПараметрОписание
service=pppRADIUS используется для PPP-аутентификации
addressIP-адрес RADIUS-сервера
secretОбщий секрет (shared secret)
accounting=yesОтправлять accounting-данные (трафик, время сессии)
interim-updateИнтервал промежуточных accounting-отчётов

MikroTik User Manager

RouterOS включает встроенный RADIUS-сервер — User Manager. Он подходит для небольших провайдеров (до 500 абонентов):

[admin@MikroTik] >
# Установка пакета User Manager (если не установлен)
# Скачайте пакет user-manager с mikrotik.com и загрузите на маршрутизатор
/system/reboot
# После перезагрузки User Manager доступен

# Настройка User Manager
/user-manager/router/add name=local address=127.0.0.1 shared-secret=RadiusSecret123

# Добавление RADIUS-сервера (указываем на себя)
/radius/add service=ppp address=127.0.0.1 secret=RadiusSecret123
/ppp/aaa/set use-radius=yes accounting=yes

User Manager управляется через веб-интерфейс: http://<router-ip>/userman.

Шаг 10: Мониторинг PPPoE-сессий

[admin@MikroTik] >
# Все активные PPPoE-сессии
/ppp/active/print

# Подробная информация
/ppp/active/print detail

# Фильтрация по имени пользователя
/ppp/active/print where name=user001

# Количество активных сессий
/ppp/active/print count-only

# Принудительное отключение абонента
/ppp/active/remove [find where name=user001]

# Мониторинг интерфейса конкретного абонента
/interface/pppoe-server/monitor <pppoe-user001>

Скрипт мониторинга активных сессий

[admin@MikroTik] >
/system/script/add name=pppoe-monitor source={
    :local activeCount [/ppp/active/print count-only]
    :local totalSecrets [/ppp/secret/print count-only]
    :log info ("PPPoE: active sessions $activeCount / $totalSecrets total subscribers")
    :if ($activeCount > 900) do={
        :log warning "PPPoE: approaching session limit! Active: $activeCount"
    }
}

/system/scheduler/add name=pppoe-monitor interval=10m on-event="/system/script/run pppoe-monitor"

Проверка

Проверка конфигурации сервера

[admin@MikroTik] >
# PPPoE-сервер запущен
/interface/pppoe-server/server/print

# Профили настроены
/ppp/profile/print

# Пулы адресов созданы
/ip/pool/print

# Secrets существуют
/ppp/secret/print

# NAT для абонентов
/ip/firewall/nat/print where comment~"PPPoE"

Проверка подключения абонента

[admin@MikroTik] >
# Активные сессии
/ppp/active/print

# IP-адрес абонента
/ppp/active/print detail where name=user001

# Пинг абонента с сервера
/ping 10.10.0.2 count=4

# Проверка скорости абонента (rate-limit)
/queue/simple/print where name~"pppoe"

Проверка на стороне клиента

На клиентском маршрутизаторе MikroTik:

[admin@MikroTik] >
# Создание PPPoE-клиента (на стороне абонента)
/interface/pppoe-client/add name=pppoe-out interface=ether1 user=user001 password=SecurePass001 add-default-route=yes use-peer-dns=yes disabled=no

# Проверка подключения
/interface/pppoe-client/print
/interface/pppoe-client/monitor pppoe-out

# Ping через PPPoE-туннель
/ping 8.8.8.8 count=4

Типичные ошибки

Ошибка 1: MTU и фрагментация — «некоторые сайты не открываются»

Симптом: абонент подключён, пинг работает, но некоторые сайты не открываются или загружаются очень медленно.

Причина: проблема MTU. PPPoE уменьшает эффективный MTU с 1500 до 1492 (или меньше). Сайты, которые отправляют пакеты с DF-флагом (Don't Fragment) размером 1500 байт, не проходят через PPPoE-туннель.

Решение:

[admin@MikroTik] >
# 1. Корректировка MSS (самое важное)
/ppp/profile/set [find] change-tcp-mss=yes

# 2. Правило Mangle для MSS clamping
/ip/firewall/mangle/add chain=forward action=change-mss new-mss=1440 protocol=tcp tcp-flags=syn passthrough=yes tcp-mss=1441-65535 out-interface-list=WAN comment="Clamp MSS for PPPoE"

# 3. Правильный MTU на PPPoE-сервере
/interface/pppoe-server/server/set [find] max-mtu=1480 max-mru=1480

Ошибка 2: «session limit exceeded»

Симптом: новые абоненты не могут подключиться, в логах — «session limit exceeded».

Причина: исчерпан пул IP-адресов или достигнут лимит PPPoE-сессий устройства.

Решение:

[admin@MikroTik] >
# Проверяем использование пула
/ip/pool/used/print where pool=pool-pppoe-1

# Проверяем количество активных сессий
/ppp/active/print count-only

# Увеличиваем пул при необходимости
/ip/pool/add name=pool-pppoe-3 ranges=10.10.8.2-10.10.11.254
/ip/pool/set pool-pppoe-2 next-pool=pool-pppoe-3

# Проверяем лимит сессий устройства
/system/resource/print
# Лимит зависит от модели: RB5009 — до 2000+ сессий

Ошибка 3: MPPE-шифрование нагружает CPU

Симптом: высокая загрузка CPU, низкая пропускная способность.

Причина: MPPE-шифрование (Microsoft Point-to-Point Encryption) включено в профиле и нагружает CPU.

Решение:

[admin@MikroTik] >
# Отключаем шифрование в профилях
/ppp/profile/set [find] use-encryption=no

# Также отключаем сжатие (тоже нагружает CPU)
/ppp/profile/set [find] use-compression=no

PPPoE-трафик идёт внутри локальной сети провайдера (L2) — шифрование на этом уровне, как правило, не нужно. Для защиты трафика в WAN используется другой уровень (IPsec, VPN).

Ошибка 4: Абоненты видят друг друга

Симптом: абонент может пинговать или сканировать IP-адреса других абонентов.

Причина: отсутствует правило изоляции в firewall.

Решение:

[admin@MikroTik] >
# Изоляция PPPoE-абонентов
/ip/firewall/filter/add chain=forward action=drop src-address=10.10.0.0/22 dst-address=10.10.0.0/22 comment="Isolate PPPoE subscribers" place-before=[/ip/firewall/filter/find where comment="Allow subscriber traffic forward"]

Это правило должно стоять перед правилом, разрешающим forward-трафик абонентов.

Ошибка 5: PPPoE не работает через VLAN

Симптом: абоненты на VLAN-интерфейсах не могут установить PPPoE-сессию.

Причина: PPPoE-сервер привязан к bridge, но VLAN-интерфейсы не добавлены в этот bridge.

Решение:

[admin@MikroTik] >
# Создание VLAN-интерфейсов для абонентов
/interface/vlan/add name=vlan100-sub interface=ether2 vlan-id=100 comment="Subscriber VLAN 100"
/interface/vlan/add name=vlan200-sub interface=ether2 vlan-id=200 comment="Subscriber VLAN 200"

# Добавление в bridge
/interface/bridge/port/add bridge=bridge-subscribers interface=vlan100-sub
/interface/bridge/port/add bridge=bridge-subscribers interface=vlan200-sub

Альтернативный подход — создать PPPoE-сервер на каждом VLAN отдельно:

[admin@MikroTik] >
/interface/pppoe-server/server/add service-name=ISP-VLAN100 interface=vlan100-sub default-profile=tariff-50m authentication=pap,chap,mschap2 max-mtu=1480 max-mru=1480

Ошибка 6: Потеря сессий при перезагрузке

Симптом: после перезагрузки маршрутизатора все абоненты отключаются и переподключаются.

Причина: это нормальное поведение — PPPoE-сессии не переживают перезагрузку. Клиенты переподключаются автоматически.

Решение: минимизировать время перезагрузки и планировать обслуживание на ночное время.

[admin@MikroTik] >
# Скрипт уведомления о планируемой перезагрузке
/system/script/add name=notify-reboot source={
    :local activeCount [/ppp/active/print count-only]
    :log warning "Planned reboot. $activeCount active PPPoE sessions will be dropped."
    # Отправка уведомления (email, Telegram и т.д.)
}

Масштабирование: рекомендации

Количество абонентовУстройствоАвторизацияПримечания
До 50RB5009, hEX SPPP SecretsЛокальное управление
50–500RB5009, CCR2004User ManagerВстроенный RADIUS
500–2000CCR2004, CCR2116FreeRADIUSВнешний RADIUS + биллинг
2000+CCR2116, CCR2216FreeRADIUS + кластерHigh availability

Для крупных сетей рассмотрите распределение нагрузки между несколькими BRAS-устройствами, каждое из которых обслуживает свой сегмент абонентов.

[admin@MikroTik] >
Абонент (PPPoE-клиент)
    |
    |--- Ethernet/VLAN ---
    |
MikroTik (PPPoE-сервер / BRAS)
    |
    |--- NAT / Routing ---
    |
Интернет (Upstream)
# Основной пул для абонентов
/ip/pool/add name=pool-pppoe-1 ranges=10.10.0.2-10.10.3.254 comment="PPPoE subscribers pool 1"

# Резервный пул (при заполнении основного)
/ip/pool/add name=pool-pppoe-2 ranges=10.10.4.2-10.10.7.254 comment="PPPoE subscribers pool 2"

# Связываем пулы (next-pool для автоматического переключения)
/ip/pool/set pool-pppoe-1 next-pool=pool-pppoe-2
# Этот адрес будет шлюзом для всех PPPoE-клиентов
# Он задаётся в PPP Profile (шаг 2)
# Базовый тариф: 50 Мбит/с
/ppp/profile/add name=tariff-50m \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit=50M/50M \
    only-one=yes \
    comment="Tariff 50 Mbps"

# Продвинутый тариф: 100 Мбит/с
/ppp/profile/add name=tariff-100m \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit=100M/100M \
    only-one=yes \
    comment="Tariff 100 Mbps"

# Максимальный тариф: 300 Мбит/с
/ppp/profile/add name=tariff-300m \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit=300M/300M \
    only-one=yes \
    comment="Tariff 300 Mbps"
# Тариф 100 Мбит/с с burst до 150 Мбит/с на 10 секунд
/ppp/profile/add name=tariff-100m-burst \
    local-address=10.10.0.1 \
    remote-address=pool-pppoe-1 \
    dns-server=8.8.8.8,8.8.4.4 \
    rate-limit="100M/100M 150M/150M 80M/80M 10/10" \
    only-one=yes \
    comment="Tariff 100 Mbps with burst"
# Настройки безопасности и оптимизации для профиля
/ppp/profile/set tariff-50m \
    change-tcp-mss=yes \
    use-encryption=no \
    use-compression=no \
    use-mpls=no
# Абонент 1
/ppp/secret/add name=user001 password=SecurePass001 service=pppoe profile=tariff-50m comment="Иванов А.А., ул. Ленина 1, кв. 5"

# Абонент 2
/ppp/secret/add name=user002 password=SecurePass002 service=pppoe profile=tariff-100m comment="Петров Б.Б., ул. Мира 10, кв. 3"

# Абонент 3 с фиксированным IP
/ppp/secret/add name=user003 password=SecurePass003 service=pppoe profile=tariff-300m remote-address=10.10.0.100 comment="Сидоров В.В., ул. Гагарина 5 (статический IP)"
# Создание PPPoE-сервера на интерфейсе, к которому подключены абоненты
/interface/pppoe-server/server/add service-name=ISP-PPPoE interface=bridge-subscribers disabled=no default-profile=tariff-50m authentication=pap,chap,mschap2 max-mtu=1480 max-mru=1480 keepalive-timeout=30 one-session-per-host=yes comment="Main PPPoE Server"
# Если абоненты подключены через VLAN:
# Ethernet MTU (1500) - VLAN (4) - PPPoE (8) = 1488
# Округляем вниз: 1480
# Bridge для абонентских портов
/interface/bridge/add name=bridge-subscribers comment="Subscriber bridge"

# Добавляем порты (пример для RB5009 — ether2-ether8)
/interface/bridge/port/add bridge=bridge-subscribers interface=ether2
/interface/bridge/port/add bridge=bridge-subscribers interface=ether3
/interface/bridge/port/add bridge=bridge-subscribers interface=ether4
/interface/bridge/port/add bridge=bridge-subscribers interface=ether5
/interface/bridge/port/add bridge=bridge-subscribers interface=ether6
/interface/bridge/port/add bridge=bridge-subscribers interface=ether7
/interface/bridge/port/add bridge=bridge-subscribers interface=ether8
# NAT для PPPoE-абонентов
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=10.10.0.0/22 out-interface=ether1 comment="NAT for PPPoE subscribers"
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=10.10.0.0/21 out-interface=ether1 comment="NAT for all PPPoE subscribers"
# Разрешаем PPPoE discovery и session
/ip/firewall/filter/add chain=input action=accept protocol=17 dst-port=8 comment="Allow PPPoE discovery"

# Разрешаем DNS от абонентов (если MikroTik раздаёт DNS)
/ip/firewall/filter/add chain=input action=accept protocol=udp dst-port=53 src-address=10.10.0.0/22 comment="Allow DNS from subscribers"
/ip/firewall/filter/add chain=input action=accept protocol=tcp dst-port=53 src-address=10.10.0.0/22 comment="Allow DNS from subscribers TCP"

# Блокируем доступ абонентов к управлению маршрутизатором
/ip/firewall/filter/add chain=input action=drop src-address=10.10.0.0/22 dst-port=80,443,8291,22,23,8728 protocol=tcp comment="Block subscriber access to management"

# Разрешаем пересылку трафика абонентов
/ip/firewall/filter/add chain=forward action=accept src-address=10.10.0.0/22 comment="Allow subscriber traffic forward"

# Изоляция абонентов (блокируем трафик между абонентами)
/ip/firewall/filter/add chain=forward action=drop src-address=10.10.0.0/22 dst-address=10.10.0.0/22 comment="Isolate PPPoE subscribers"
# Глобальная очередь для всех абонентов
/queue/type/add name=pcq-download kind=pcq pcq-rate=0 pcq-classifier=dst-address
/queue/type/add name=pcq-upload kind=pcq pcq-rate=0 pcq-classifier=src-address

# Пометка трафика через Mangle
/ip/firewall/mangle/add chain=forward action=mark-packet new-packet-mark=pppoe-download passthrough=no dst-address=10.10.0.0/22 comment="Mark PPPoE download"
/ip/firewall/mangle/add chain=forward action=mark-packet new-packet-mark=pppoe-upload passthrough=no src-address=10.10.0.0/22 comment="Mark PPPoE upload"

# Queue Tree
/queue/tree/add name=pppoe-download-queue parent=global packet-mark=pppoe-download queue=pcq-download max-limit=1G comment="PPPoE download queue"
/queue/tree/add name=pppoe-upload-queue parent=global packet-mark=pppoe-upload queue=pcq-upload max-limit=1G comment="PPPoE upload queue"
# Включение учёта трафика
/ip/accounting/set enabled=yes threshold=1000

# Настройка веб-доступа к учёту (для биллинга)
/ip/accounting/web-access/set accessible-via-web=yes address=10.10.0.0/22
# Учёт трафика по IP
/ip/accounting/snapshot/take
/ip/accounting/snapshot/print
# Добавление RADIUS-сервера
/radius/add service=ppp address=192.168.1.100 secret=RadiusSecret123 timeout=3000ms authentication-port=1812 accounting-port=1813 comment="FreeRADIUS server"

# Включение RADIUS для PPP
/ppp/aaa/set use-radius=yes accounting=yes interim-update=5m
# Установка пакета User Manager (если не установлен)
# Скачайте пакет user-manager с mikrotik.com и загрузите на маршрутизатор
/system/reboot
# После перезагрузки User Manager доступен

# Настройка User Manager
/user-manager/router/add name=local address=127.0.0.1 shared-secret=RadiusSecret123

# Добавление RADIUS-сервера (указываем на себя)
/radius/add service=ppp address=127.0.0.1 secret=RadiusSecret123
/ppp/aaa/set use-radius=yes accounting=yes
# Все активные PPPoE-сессии
/ppp/active/print

# Подробная информация
/ppp/active/print detail

# Фильтрация по имени пользователя
/ppp/active/print where name=user001

# Количество активных сессий
/ppp/active/print count-only

# Принудительное отключение абонента
/ppp/active/remove [find where name=user001]

# Мониторинг интерфейса конкретного абонента
/interface/pppoe-server/monitor <pppoe-user001>
/system/script/add name=pppoe-monitor source={
    :local activeCount [/ppp/active/print count-only]
    :local totalSecrets [/ppp/secret/print count-only]
    :log info ("PPPoE: active sessions $activeCount / $totalSecrets total subscribers")
    :if ($activeCount > 900) do={
        :log warning "PPPoE: approaching session limit! Active: $activeCount"
    }
}

/system/scheduler/add name=pppoe-monitor interval=10m on-event="/system/script/run pppoe-monitor"
# PPPoE-сервер запущен
/interface/pppoe-server/server/print

# Профили настроены
/ppp/profile/print

# Пулы адресов созданы
/ip/pool/print

# Secrets существуют
/ppp/secret/print

# NAT для абонентов
/ip/firewall/nat/print where comment~"PPPoE"
# Активные сессии
/ppp/active/print

# IP-адрес абонента
/ppp/active/print detail where name=user001

# Пинг абонента с сервера
/ping 10.10.0.2 count=4

# Проверка скорости абонента (rate-limit)
/queue/simple/print where name~"pppoe"
# Создание PPPoE-клиента (на стороне абонента)
/interface/pppoe-client/add name=pppoe-out interface=ether1 user=user001 password=SecurePass001 add-default-route=yes use-peer-dns=yes disabled=no

# Проверка подключения
/interface/pppoe-client/print
/interface/pppoe-client/monitor pppoe-out

# Ping через PPPoE-туннель
/ping 8.8.8.8 count=4
# 1. Корректировка MSS (самое важное)
/ppp/profile/set [find] change-tcp-mss=yes

# 2. Правило Mangle для MSS clamping
/ip/firewall/mangle/add chain=forward action=change-mss new-mss=1440 protocol=tcp tcp-flags=syn passthrough=yes tcp-mss=1441-65535 out-interface-list=WAN comment="Clamp MSS for PPPoE"

# 3. Правильный MTU на PPPoE-сервере
/interface/pppoe-server/server/set [find] max-mtu=1480 max-mru=1480
# Проверяем использование пула
/ip/pool/used/print where pool=pool-pppoe-1

# Проверяем количество активных сессий
/ppp/active/print count-only

# Увеличиваем пул при необходимости
/ip/pool/add name=pool-pppoe-3 ranges=10.10.8.2-10.10.11.254
/ip/pool/set pool-pppoe-2 next-pool=pool-pppoe-3

# Проверяем лимит сессий устройства
/system/resource/print
# Лимит зависит от модели: RB5009 — до 2000+ сессий
# Отключаем шифрование в профилях
/ppp/profile/set [find] use-encryption=no

# Также отключаем сжатие (тоже нагружает CPU)
/ppp/profile/set [find] use-compression=no
# Изоляция PPPoE-абонентов
/ip/firewall/filter/add chain=forward action=drop src-address=10.10.0.0/22 dst-address=10.10.0.0/22 comment="Isolate PPPoE subscribers" place-before=[/ip/firewall/filter/find where comment="Allow subscriber traffic forward"]
# Создание VLAN-интерфейсов для абонентов
/interface/vlan/add name=vlan100-sub interface=ether2 vlan-id=100 comment="Subscriber VLAN 100"
/interface/vlan/add name=vlan200-sub interface=ether2 vlan-id=200 comment="Subscriber VLAN 200"

# Добавление в bridge
/interface/bridge/port/add bridge=bridge-subscribers interface=vlan100-sub
/interface/bridge/port/add bridge=bridge-subscribers interface=vlan200-sub
/interface/pppoe-server/server/add service-name=ISP-VLAN100 interface=vlan100-sub default-profile=tariff-50m authentication=pap,chap,mschap2 max-mtu=1480 max-mru=1480
# Скрипт уведомления о планируемой перезагрузке
/system/script/add name=notify-reboot source={
    :local activeCount [/ppp/active/print count-only]
    :log warning "Planned reboot. $activeCount active PPPoE sessions will be dropped."
    # Отправка уведомления (email, Telegram и т.д.)
}
Для провайдеров / PPPoE-сервер на MikroTik — настройка для провайдера