PPPoE-сервер на MikroTik — настройка для провайдера
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-адресов, раздаваемых абонентам |
| BRAS | Broadband 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-address | IP-адрес PPPoE-сервера (шлюз для абонента) |
remote-address | Пул IP-адресов для абонентов |
dns-server | DNS-серверы, выдаваемые абоненту |
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-mss | yes | Автоматическая корректировка TCP MSS (важно для PPPoE) |
use-encryption | no | MPPE-шифрование — замедляет и нагружает CPU |
use-compression | no | Сжатие — нагружает CPU, малоэффективно |
use-mpls | no | MPLS в 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=ppp | RADIUS используется для PPP-аутентификации |
address | IP-адрес 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 и т.д.) }
Масштабирование: рекомендации
| Количество абонентов | Устройство | Авторизация | Примечания |
|---|---|---|---|
| До 50 | RB5009, hEX S | PPP Secrets | Локальное управление |
| 50–500 | RB5009, CCR2004 | User Manager | Встроенный RADIUS |
| 500–2000 | CCR2004, CCR2116 | FreeRADIUS | Внешний RADIUS + биллинг |
| 2000+ | CCR2116, CCR2216 | FreeRADIUS + кластер | High availability |
Для крупных сетей рассмотрите распределение нагрузки между несколькими BRAS-устройствами, каждое из которых обслуживает свой сегмент абонентов.
Абонент (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 и т.д.)
}