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

Сети провайдеров на MikroTik — архитектура

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

Сети провайдеров на MikroTik — архитектура и проектирование

MikroTik широко используется интернет-провайдерами в России и СНГ — от небольших домовых сетей на 50 абонентов до операторов связи с десятками тысяч подключений. Низкая стоимость оборудования, мощный RouterOS, поддержка PPPoE/RADIUS/MPLS и гибкость настройки делают MikroTik оптимальным выбором для малых и средних ISP. В этом руководстве рассмотрим архитектуры провайдерских сетей на MikroTik разного масштаба: от одиночного CCR как BRAS до многоуровневых сетей с MPLS, RADIUS-интеграцией и системами биллинга.

Руководство актуально для RouterOS 7.20+.

Описание

Уровни провайдерской сети

Любая провайдерская сеть строится по трёхуровневой модели:

code
[Upstream / IX]
      |
  === CORE (ядро) ===
      |
  === AGGREGATION (агрегация) ===
      |
  === ACCESS (доступ) ===
      |
  [Абоненты]

Core (ядро) — маршрутизаторы, связывающие сеть провайдера с upstream-каналами и точками обмена трафиком (IX). Здесь работает BGP, NAT (CGNAT), Traffic Flow, основная маршрутизация.

Aggregation (агрегация) — коммутаторы L2/L3, агрегирующие трафик от нескольких коммутаторов доступа. Здесь VLAN-транки, STP/RSTP, иногда OSPF.

Access (доступ) — коммутаторы, к которым непосредственно подключены абоненты. Порт на абонента, VLAN per user или VLAN per house, DHCP snooping.

Типы архитектур по масштабу

МасштабАбонентыАрхитектураОборудование MikroTik
Малый ISPдо 500Один BRAS (всё в одном)CCR2004-1G-12S+2XS
Средний ISP500–5000BRAS + агрегация + доступCCR2116-12G-4S+ / CRS326 / CSS326
Крупный ISP5000+Несколько BRAS, MPLS/VPLSНесколько CCR2116, CRS518, MPLS core

Роли оборудования MikroTik

РольМодельОписаниеМакс. абонентов
BRASCCR2004-1G-12S+2XSPPPoE-сервер, NAT, QoS, RADIUS~3000 PPPoE
BRAS (мощный)CCR2116-12G-4S+Высокопроизводительный BRAS~8000 PPPoE
Агрегация L3CRS326-24S+2Q+RM24 порта SFP+, L3 routingАгрегация 24 коммутаторов
Агрегация L2CRS326-24G-2S+RM24 порта Gigabit + 2 SFP+Агрегация 24 домов
Доступ L2CSS326-24G-2S+RMУправляемый L2-коммутатор24 абонента
Доступ L2CRS112-8G-4S-IN8 портов + 4 SFP8 абонентов (малый дом)
CPEhEX S (RB760iGS)Абонентский роутер1 абонент
CPEhAP ax2Wi-Fi 6 абонентский роутер1 абонент

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

МодельОписаниеПлюсыМинусы
PPPoEАбонент подключается по PPPoEАутентификация, учёт, тарифыOverhead 8 байт, MTU 1492
IPoE + DHCPАбонент получает IP по DHCPПростота, нет overheadНет аутентификации без 802.1X
VLAN per userКаждый абонент в своём VLANПолная изоляцияМного VLAN, сложнее управление
PPPoE + VLAN per housePPPoE + VLAN на каждый домБаланс изоляции и простотыСредняя сложность

Для российских ISP наиболее популярна модель PPPoE + VLAN per house: каждый дом (коммутатор доступа) находится в своём VLAN, абоненты подключаются по PPPoE.

Настройка

Архитектура 1: Малый ISP (до 500 абонентов)

Один CCR2004 выполняет все функции: BRAS (PPPoE-сервер), NAT, файрвол, QoS, маршрутизация. Подходит для небольших районных или домовых провайдеров.

code
[Upstream ISP]
      |
  [CCR2004 — BRAS/NAT/Firewall]
      |
  [CRS326 — Aggregation Switch]
   /     |     \
[CSS326] [CSS326] [CSS326]  — Access switches (дома)
  |        |        |
Абоненты Абоненты Абоненты

Конфигурация BRAS (CCR2004):

[admin@MikroTik] >
# ============================================
# Малый ISP: CCR2004 как BRAS
# 300 абонентов PPPoE, канал 1 Гбит/с
# ============================================

# --- Системные настройки ---
/system/identity/set name="ISP-BRAS-01"

# Часовой пояс и NTP
/system/clock/set time-zone-name=Europe/Moscow
/system/ntp/client/set enabled=yes
/system/ntp/client/servers/add address=ru.pool.ntp.org

# --- Интерфейсы ---
# sfp-sfpplus1 — Upstream (к провайдеру)
# sfp-sfpplus2 — Downlink (к коммутатору агрегации)

# --- IP-адресация ---
# Внешний IP (от upstream-провайдера)
/ip/address/add address=203.0.113.2/30 interface=sfp-sfpplus1 comment="Upstream"

# Локальный IP для PPPoE (gateway для абонентов)
/ip/address/add address=10.0.0.1/32 interface=lo comment="PPPoE local address"

# Управление
/ip/address/add address=172.16.0.1/24 interface=ether1 comment="Management"

# --- Маршруты ---
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 comment="Default via upstream"

# --- Пулы адресов для абонентов ---
/ip/pool/add name=pool-subscribers-1 ranges=10.10.0.2-10.10.1.254 \
  comment="Subscribers pool 1 (510 addresses)"
/ip/pool/add name=pool-subscribers-2 ranges=10.10.2.2-10.10.3.254 \
  comment="Subscribers pool 2 (510 addresses)"
/ip/pool/set pool-subscribers-1 next-pool=pool-subscribers-2

# --- PPP Profiles (тарифы) ---
/ppp/profile/add name=tariff-10M local-address=10.0.0.1 \
  remote-address=pool-subscribers-1 \
  rate-limit=10M/10M dns-server=8.8.8.8,8.8.4.4 \
  comment="Тариф 10 Мбит/с"

/ppp/profile/add name=tariff-50M local-address=10.0.0.1 \
  remote-address=pool-subscribers-1 \
  rate-limit=50M/50M dns-server=8.8.8.8,8.8.4.4 \
  comment="Тариф 50 Мбит/с"

/ppp/profile/add name=tariff-100M local-address=10.0.0.1 \
  remote-address=pool-subscribers-1 \
  rate-limit=100M/100M dns-server=8.8.8.8,8.8.4.4 \
  comment="Тариф 100 Мбит/с"

# --- PPPoE Server ---
/interface/pppoe-server/server/add service-name=ISP-Connect \
  interface=sfp-sfpplus2 \
  default-profile=tariff-50M \
  authentication=pap,chap,mschap2 \
  one-session-per-host=yes \
  max-mtu=1480 max-mru=1480 \
  keepalive-timeout=30 \
  comment="PPPoE Server for subscribers"

# --- NAT (Masquerade) ---
/ip/firewall/nat/add chain=srcnat out-interface=sfp-sfpplus1 \
  src-address=10.10.0.0/22 action=masquerade \
  comment="NAT subscribers to Internet"

# --- Firewall (базовая защита BRAS) ---
/ip/firewall/filter/add chain=input connection-state=established,related action=accept
/ip/firewall/filter/add chain=input connection-state=invalid action=drop
/ip/firewall/filter/add chain=input protocol=icmp action=accept
/ip/firewall/filter/add chain=input src-address=172.16.0.0/24 action=accept \
  comment="Allow management subnet"
/ip/firewall/filter/add chain=input in-interface=sfp-sfpplus2 protocol=tcp \
  dst-port=8728,8729,22,80,443 action=drop \
  comment="Block management from subscriber side"
/ip/firewall/filter/add chain=input action=drop comment="Drop all other input"

Архитектура 2: Средний ISP (500–5000 абонентов)

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

code
[Upstream 1] [Upstream 2]
      \        /
   [CCR2116 — BRAS/NAT]
        |
   [CRS326-24S+ — Core/Aggregation L3]
    /        |        \
[CRS326]  [CRS326]  [CRS326]  — Aggregation L2 (районы)
  /|\       /|\       /|\
[CSS] [CSS] [CSS]              — Access (дома)

VLAN-планирование:

VLANНазначениеПодсеть
100–199Абоненты район 1 (по домам)PPPoE (IP из пула)
200–299Абоненты район 2PPPoE (IP из пула)
300–399Абоненты район 3PPPoE (IP из пула)
900Управление коммутаторами172.16.0.0/24
999Мониторинг (SNMP/Zabbix)172.16.99.0/24

Конфигурация BRAS (CCR2116):

[admin@MikroTik] >
# ============================================
# Средний ISP: CCR2116 как BRAS
# 3000 абонентов PPPoE, 2x upstream по 10 Гбит/с
# ============================================

# --- VLAN-интерфейсы для абонентских районов ---
# Транк от CRS326 приходит на sfp-sfpplus1
/interface/vlan/add name=vlan100-district1 vlan-id=100 interface=sfp-sfpplus1
/interface/vlan/add name=vlan200-district2 vlan-id=200 interface=sfp-sfpplus1
/interface/vlan/add name=vlan300-district3 vlan-id=300 interface=sfp-sfpplus1
/interface/vlan/add name=vlan900-mgmt vlan-id=900 interface=sfp-sfpplus1

# --- Bridge для абонентских VLAN ---
/interface/bridge/add name=br-subscribers comment="Bridge for subscriber VLANs"
/interface/bridge/port/add bridge=br-subscribers interface=vlan100-district1
/interface/bridge/port/add bridge=br-subscribers interface=vlan200-district2
/interface/bridge/port/add bridge=br-subscribers interface=vlan300-district3

# --- IP-пулы (10 000 адресов с запасом) ---
/ip/pool/add name=pool-main ranges=10.10.0.2-10.10.39.254 \
  comment="Main pool: 10 230 addresses"
/ip/pool/add name=pool-reserve ranges=10.10.40.2-10.10.59.254 \
  comment="Reserve pool: 5 118 addresses"
/ip/pool/set pool-main next-pool=pool-reserve

# --- RADIUS-интеграция ---
/radius/add service=ppp address=172.16.0.10 secret=RadiusSecret123! \
  timeout=3s comment="Primary RADIUS (billing)"
/radius/add service=ppp address=172.16.0.11 secret=RadiusSecret123! \
  timeout=3s comment="Backup RADIUS"

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

# --- PPP Profiles (тарифы, скорость из RADIUS) ---
/ppp/profile/add name=default-radius local-address=10.0.0.1 \
  remote-address=pool-main \
  dns-server=8.8.8.8,8.8.4.4 \
  comment="Default profile, rate-limit from RADIUS"

/ppp/profile/add name=tariff-blocked local-address=10.0.0.1 \
  remote-address=pool-main \
  rate-limit=128K/128K \
  dns-server=172.16.0.5 \
  comment="Blocked tariff (redirect to billing page)"

# --- PPPoE Server ---
/interface/pppoe-server/server/add service-name=ISP-PPPoE \
  interface=br-subscribers \
  default-profile=default-radius \
  authentication=chap,mschap2 \
  one-session-per-host=yes \
  max-mtu=1480 max-mru=1480 \
  keepalive-timeout=30 \
  comment="Main PPPoE server"

# --- NAT (src-nat с конкретным IP) ---
/ip/firewall/nat/add chain=srcnat src-address=10.10.0.0/16 \
  out-interface=sfp-sfpplus3 \
  action=src-nat to-addresses=203.0.113.0/28 \
  comment="NAT subscribers via public IP pool"

# --- Управление ---
/ip/address/add address=172.16.0.1/24 interface=vlan900-mgmt \
  comment="Management network"

Конфигурация коммутатора агрегации (CRS326-24S+2Q+):

[admin@MikroTik] >
# ============================================
# Агрегация: CRS326 (L2 switching)
# ============================================

/system/identity/set name="AGG-SW-01"

# Bridge с VLAN-filtering
/interface/bridge/add name=bridge vlan-filtering=yes

# Порты к BRAS (trunk)
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus1 \
  pvid=1 frame-types=admit-only-vlan-tagged
# Порты к коммутаторам доступа (trunk)
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus2 \
  pvid=1 frame-types=admit-only-vlan-tagged
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus3 \
  pvid=1 frame-types=admit-only-vlan-tagged
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus4 \
  pvid=1 frame-types=admit-only-vlan-tagged

# VLAN таблица — пропускаем абонентские VLAN
/interface/bridge/vlan/add bridge=bridge vlan-ids=100-199 \
  tagged=sfp-sfpplus1,sfp-sfpplus2 comment="District 1 VLANs"
/interface/bridge/vlan/add bridge=bridge vlan-ids=200-299 \
  tagged=sfp-sfpplus1,sfp-sfpplus3 comment="District 2 VLANs"
/interface/bridge/vlan/add bridge=bridge vlan-ids=300-399 \
  tagged=sfp-sfpplus1,sfp-sfpplus4 comment="District 3 VLANs"
/interface/bridge/vlan/add bridge=bridge vlan-ids=900 \
  tagged=sfp-sfpplus1,sfp-sfpplus2,sfp-sfpplus3,sfp-sfpplus4 \
  comment="Management VLAN"

# Управление через VLAN 900
/interface/vlan/add name=vlan900-mgmt vlan-id=900 interface=bridge
/ip/address/add address=172.16.0.2/24 interface=vlan900-mgmt
/ip/route/add dst-address=0.0.0.0/0 gateway=172.16.0.1

Конфигурация коммутатора доступа (CSS326):

[admin@MikroTik] >
# ============================================
# Доступ: CSS326 (дом)
# VLAN 105 — абоненты этого дома
# ============================================

/system/identity/set name="ACC-HOUSE-105"

/interface/bridge/add name=bridge vlan-filtering=yes

# Порт uplink к агрегации (trunk)
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus1 \
  pvid=1 frame-types=admit-only-vlan-tagged

# Порты абонентов (access, VLAN 105)
/interface/bridge/port/add bridge=bridge interface=ether1 pvid=105
/interface/bridge/port/add bridge=bridge interface=ether2 pvid=105
/interface/bridge/port/add bridge=bridge interface=ether3 pvid=105
# ... до ether24

# VLAN таблица
/interface/bridge/vlan/add bridge=bridge vlan-ids=105 \
  tagged=sfp-sfpplus1 \
  untagged=ether1,ether2,ether3,ether4,ether5,ether6,ether7,ether8,\
  ether9,ether10,ether11,ether12,ether13,ether14,ether15,ether16,\
  ether17,ether18,ether19,ether20,ether21,ether22,ether23,ether24

# Management VLAN
/interface/bridge/vlan/add bridge=bridge vlan-ids=900 tagged=sfp-sfpplus1,bridge
/interface/vlan/add name=vlan900-mgmt vlan-id=900 interface=bridge
/ip/address/add address=172.16.0.105/24 interface=vlan900-mgmt
/ip/route/add dst-address=0.0.0.0/0 gateway=172.16.0.1

Архитектура 3: Крупный ISP (5000+ абонентов)

Для крупного провайдера нужно несколько BRAS, MPLS-ядро, OSPF/BGP-маршрутизация, отказоустойчивость.

code
[Upstream 1]     [Upstream 2]     [IX MSK-IX]
     \                |               /
  [CCR2116 #1]===MPLS/OSPF===[CCR2116 #2]  — Core routers
        \                        /
     [CRS518]====MPLS====[CRS518]           — Distribution
      / | \                / | \
   [CRS326] [CRS326]   [CRS326] [CRS326]  — Aggregation
    /|\      /|\          /|\      /|\
  [CSS] ... [CSS]       [CSS] ... [CSS]     — Access

Ключевые отличия от среднего ISP:

  • MPLS/VPLS между площадками — виртуальные L2-каналы через IP-сеть
  • OSPF для внутренней маршрутизации между BRAS и коммутаторами
  • BGP для получения full view от upstream-провайдеров и IX
  • Несколько BRAS с балансировкой нагрузки
  • CGNAT вместо обычного NAT (для экономии IPv4-адресов)
[admin@MikroTik] >
# ============================================
# Крупный ISP: Core router (CCR2116 #1)
# OSPF + BGP + MPLS
# ============================================

# --- OSPF (внутренняя маршрутизация) ---
/routing/ospf/instance/add name=ospf-isp router-id=10.255.0.1
/routing/ospf/area/add name=backbone instance=ospf-isp area-id=0.0.0.0

/routing/ospf/interface-template/add area=backbone interfaces=sfp-sfpplus1 \
  type=ptp comment="To Core router #2"
/routing/ospf/interface-template/add area=backbone interfaces=sfp-sfpplus2 \
  type=ptp comment="To Distribution SW #1"
/routing/ospf/interface-template/add area=backbone interfaces=sfp-sfpplus3 \
  type=ptp comment="To Distribution SW #2"
/routing/ospf/interface-template/add area=backbone interfaces=lo \
  type=ptp comment="Loopback"

# --- BGP (upstream-провайдеры) ---
/routing/bgp/connection/add name=upstream-1 as=65001 \
  remote.address=198.51.100.1 remote.as=12345 \
  local.role=customer \
  address-families=ip \
  routing-table=main \
  output.default-originate=never \
  comment="Upstream ISP #1"

/routing/bgp/connection/add name=upstream-2 as=65001 \
  remote.address=198.51.100.5 remote.as=67890 \
  local.role=customer \
  address-families=ip \
  routing-table=main \
  comment="Upstream ISP #2"

# --- MPLS ---
/mpls/ldp/add lsr-id=10.255.0.1 transport-addresses=10.255.0.1
/mpls/ldp/interface/add interface=sfp-sfpplus1 comment="LDP to Core #2"
/mpls/ldp/interface/add interface=sfp-sfpplus2 comment="LDP to Dist #1"
/mpls/ldp/interface/add interface=sfp-sfpplus3 comment="LDP to Dist #2"

Адресное планирование

Правильное планирование IP-адресов — основа масштабируемой сети:

НазначениеПодсетьПримечание
Loopback-адреса маршрутизаторов10.255.0.0/24/32 на каждый
Линки между маршрутизаторами10.255.1.0/24/30 или /31 на каждый линк
Управление оборудованием172.16.0.0/16Сегментировать по районам
Абоненты PPPoE10.0.0.0/8Сегментировать по BRAS
Публичные IP (NAT)203.0.113.0/24От upstream или RIPE
Серверы (DNS, RADIUS, billing)172.16.100.0/24Отдельный сегмент

RADIUS-интеграция и биллинг

Для средних и крупных ISP RADIUS обязателен. Популярные биллинговые системы для российских провайдеров:

СистемаОписаниеСтоимость
LANBillingРоссийский биллинг, интеграция с MikroTikКоммерческая
AbillsOpen-source биллинг с RADIUSБесплатно
NoDenyБиллинг для малых/средних ISPКоммерческая
Carbon BillingРоссийский биллингКоммерческая
HydraБиллинг для крупных операторовКоммерческая

Базовые RADIUS-атрибуты для MikroTik PPPoE:

[admin@MikroTik] >
# Атрибуты, которые RADIUS отправляет MikroTik:
Mikrotik-Rate-Limit = "50M/100M"       # Скорость upload/download
Framed-IP-Address = 10.10.5.25         # Статический IP (если нужен)
Framed-Pool = "pool-main"              # Пул адресов
Mikrotik-Group = "tariff-100M"         # PPP Profile
Session-Timeout = 86400                 # Максимальное время сессии (сек)
Acct-Interim-Interval = 300             # Интервал промежуточного учёта (сек)

Настройка FreeRADIUS (clients.conf):

[admin@MikroTik] >
# /etc/freeradius/3.0/clients.conf
client mikrotik-bras-01 {
    ipaddr = 172.16.0.1
    secret = RadiusSecret123!
    shortname = bras-01
    nastype = mikrotik
}

Мониторинг ISP-сети: Zabbix + SNMP + Traffic Flow

[admin@MikroTik] >
# --- SNMP для мониторинга (Zabbix) ---
/snmp/set enabled=yes contact="noc@isp.ru" location="Moscow, DC-1"
/snmp/community/set [find default=yes] name=ISP-SNMP-ro read-access=yes \
  addresses=172.16.99.0/24

# --- Traffic Flow для анализа трафика ---
/ip/traffic-flow/set enabled=yes interfaces=all cache-entries=256k
/ip/traffic-flow/target/add dst-address=172.16.99.5:2055 version=9 \
  comment="NetFlow collector (ntopng)"

# --- Graphing (встроенные графики) ---
/tool/graphing/interface/add interface=sfp-sfpplus1 comment="Upstream"
/tool/graphing/interface/add interface=sfp-sfpplus2 comment="Subscribers"
/tool/graphing/resource/add

Ключевые метрики для мониторинга ISP:

МетрикаИсточникПороги
CPU LoadSNMPWarning: >70%, Critical: >90%
ПамятьSNMPWarning: >80%, Critical: >95%
Активные PPPoE-сессииSNMP/APIЗависит от ёмкости BRAS
Утилизация портовSNMPWarning: >80%
BGP-сессииSNMP/APIAlert при down
Packet loss (upstream)PingWarning: >0.1%, Critical: >1%
Latency (upstream)PingWarning: >10ms, Critical: >50ms

Защита BRAS (hardening)

[admin@MikroTik] >
# --- Ограничение доступа к управлению ---
# Разрешаем управление только из management-сети
/ip/firewall/filter/add chain=input src-address=172.16.0.0/24 action=accept \
  comment="Allow management network"
/ip/firewall/filter/add chain=input protocol=icmp action=accept
/ip/firewall/filter/add chain=input connection-state=established,related action=accept

# Защита от абонентов: блокируем доступ к сервисам
/ip/firewall/filter/add chain=input in-interface=br-subscribers protocol=tcp \
  dst-port=22,23,80,443,8291,8728,8729 action=drop \
  comment="Block management from subscribers"

/ip/firewall/filter/add chain=input action=drop comment="Drop all other"

# --- Отключение ненужных сервисов ---
/ip/service/set telnet disabled=yes
/ip/service/set ftp disabled=yes
/ip/service/set www disabled=yes
/ip/service/set api disabled=yes
/ip/service/set api-ssl disabled=yes
/ip/service/set ssh address=172.16.0.0/24
/ip/service/set winbox address=172.16.0.0/24

# --- Защита от DNS amplification ---
/ip/dns/set allow-remote-requests=no

# --- Connection Tracking tuning для BRAS ---
/ip/firewall/connection/tracking/set tcp-established-timeout=1h \
  udp-timeout=30s generic-timeout=30s \
  tcp-close-timeout=10s tcp-close-wait-timeout=10s

# --- Ограничение PPPoE-подключений ---
/interface/pppoe-server/server/set [find] one-session-per-host=yes

Проверка

Проверка PPPoE-сессий

[admin@MikroTik] >
# Количество активных PPPoE-сессий
/ppp/active/print count-only

# Список активных сессий
/ppp/active/print

# Подробная информация по абоненту
/ppp/active/print where name="subscriber-login"

# Статистика PPPoE-сервера
/interface/pppoe-server/server/print stats

Проверка RADIUS

[admin@MikroTik] >
# Статистика RADIUS
/radius/print stats

# Проверка связи с RADIUS-сервером
/ping address=172.16.0.10 count=5

# Мониторинг RADIUS-запросов (в логах)
/log/print where topics~"radius"

Проверка BGP

[admin@MikroTik] >
# Статус BGP-сессий
/routing/bgp/session/print

# Количество полученных маршрутов
/routing/bgp/session/print detail

# Таблица маршрутизации — количество записей
/ip/route/print count-only

Проверка MPLS

[admin@MikroTik] >
# LDP-соседи
/mpls/ldp/neighbor/print

# MPLS forwarding table
/mpls/forwarding-table/print

# Проверка MPLS-пути
/tool/traceroute address=10.255.0.2 protocol=icmp

Мониторинг нагрузки

[admin@MikroTik] >
# CPU и память
/system/resource/print

# Нагрузка на интерфейсы
/interface/print stats

# Top потребители полосы
/tool/torch interface=sfp-sfpplus2 src-address=10.10.0.0/16

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

Ошибка 1: Один BRAS на 5000+ абонентов

Симптомы: CPU 100%, PPPoE-сессии обрываются, медленный NAT.

Причина: даже CCR2116 имеет предел по PPPoE-сессиям (~8000 при полной нагрузке NAT + QoS). При перегрузке страдает всё: маршрутизация, NAT, очереди.

Решение: разделить нагрузку на несколько BRAS, каждый обслуживает свой район. Балансировка через OSPF или статические маршруты.

Ошибка 2: VLAN-планирование без запаса

Симптомы: при подключении нового дома не хватает VLAN, приходится перестраивать сеть.

Решение: планировать VLAN-диапазоны с запасом минимум 2x. Использовать схему: район → диапазон VLAN (100–199, 200–299 и т.д.).

Ошибка 3: Нет management VLAN

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

Решение: всегда выделяйте management VLAN (например, 900) и настройте out-of-band доступ к оборудованию. Управление должно работать независимо от абонентского трафика.

Ошибка 4: masquerade вместо src-nat на BRAS

Симптомы: при переподключении upstream-канала NAT-трансляции сбрасываются, абоненты теряют сессии.

Причина: masquerade пересоздаёт NAT-таблицу при изменении IP на интерфейсе. Для статического IP лучше использовать src-nat с фиксированным to-addresses.

[admin@MikroTik] >
# Неправильно
/ip/firewall/nat/add chain=srcnat action=masquerade

# Правильно
/ip/firewall/nat/add chain=srcnat src-address=10.0.0.0/8 \
  out-interface=sfp-sfpplus1 action=src-nat to-addresses=203.0.113.0/28

Ошибка 5: Нет ограничения доступа абонентов к BRAS

Симптомы: абоненты могут сканировать порты BRAS, пытаться подобрать пароли к Winbox/SSH, атаковать DNS/API.

Решение: жёсткий firewall на input chain: разрешить только management-подсеть, заблокировать всё остальное. Отключить ненужные сервисы.

Ошибка 6: Нет мониторинга

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

Решение: обязательно развернуть Zabbix или аналог. Мониторить: CPU, память, утилизацию портов, количество PPPoE-сессий, BGP-сессии, ping до upstream. Настроить алерты в Telegram или SMS.

Итоги

Проектирование ISP-сети на MikroTik требует чёткого разделения ролей оборудования, грамотного VLAN/IP-планирования и обязательной интеграции с RADIUS и биллингом. Ключевые правила:

  1. Один BRAS — не более 3000–5000 PPPoE-сессий (с запасом)
  2. VLAN per house — оптимальная модель для большинства ISP
  3. RADIUS обязателен для сетей от 100+ абонентов
  4. Management-сеть должна быть отделена от абонентского трафика
  5. Мониторинг (Zabbix + SNMP) — не опция, а необходимость
  6. Защита BRAS: firewall + отключение ненужных сервисов
  7. Планируйте ёмкость с запасом минимум 2x от текущего количества абонентов
[admin@MikroTik] >
[Upstream / IX]
      |
  === CORE (ядро) ===
      |
  === AGGREGATION (агрегация) ===
      |
  === ACCESS (доступ) ===
      |
  [Абоненты]
[Upstream ISP]
      |
  [CCR2004 — BRAS/NAT/Firewall]
      |
  [CRS326 — Aggregation Switch]
   /     |     \
[CSS326] [CSS326] [CSS326]  — Access switches (дома)
  |        |        |
Абоненты Абоненты Абоненты
# ============================================
# Малый ISP: CCR2004 как BRAS
# 300 абонентов PPPoE, канал 1 Гбит/с
# ============================================

# --- Системные настройки ---
/system/identity/set name="ISP-BRAS-01"

# Часовой пояс и NTP
/system/clock/set time-zone-name=Europe/Moscow
/system/ntp/client/set enabled=yes
/system/ntp/client/servers/add address=ru.pool.ntp.org

# --- Интерфейсы ---
# sfp-sfpplus1 — Upstream (к провайдеру)
# sfp-sfpplus2 — Downlink (к коммутатору агрегации)

# --- IP-адресация ---
# Внешний IP (от upstream-провайдера)
/ip/address/add address=203.0.113.2/30 interface=sfp-sfpplus1 comment="Upstream"

# Локальный IP для PPPoE (gateway для абонентов)
/ip/address/add address=10.0.0.1/32 interface=lo comment="PPPoE local address"

# Управление
/ip/address/add address=172.16.0.1/24 interface=ether1 comment="Management"

# --- Маршруты ---
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 comment="Default via upstream"

# --- Пулы адресов для абонентов ---
/ip/pool/add name=pool-subscribers-1 ranges=10.10.0.2-10.10.1.254 \
  comment="Subscribers pool 1 (510 addresses)"
/ip/pool/add name=pool-subscribers-2 ranges=10.10.2.2-10.10.3.254 \
  comment="Subscribers pool 2 (510 addresses)"
/ip/pool/set pool-subscribers-1 next-pool=pool-subscribers-2

# --- PPP Profiles (тарифы) ---
/ppp/profile/add name=tariff-10M local-address=10.0.0.1 \
  remote-address=pool-subscribers-1 \
  rate-limit=10M/10M dns-server=8.8.8.8,8.8.4.4 \
  comment="Тариф 10 Мбит/с"

/ppp/profile/add name=tariff-50M local-address=10.0.0.1 \
  remote-address=pool-subscribers-1 \
  rate-limit=50M/50M dns-server=8.8.8.8,8.8.4.4 \
  comment="Тариф 50 Мбит/с"

/ppp/profile/add name=tariff-100M local-address=10.0.0.1 \
  remote-address=pool-subscribers-1 \
  rate-limit=100M/100M dns-server=8.8.8.8,8.8.4.4 \
  comment="Тариф 100 Мбит/с"

# --- PPPoE Server ---
/interface/pppoe-server/server/add service-name=ISP-Connect \
  interface=sfp-sfpplus2 \
  default-profile=tariff-50M \
  authentication=pap,chap,mschap2 \
  one-session-per-host=yes \
  max-mtu=1480 max-mru=1480 \
  keepalive-timeout=30 \
  comment="PPPoE Server for subscribers"

# --- NAT (Masquerade) ---
/ip/firewall/nat/add chain=srcnat out-interface=sfp-sfpplus1 \
  src-address=10.10.0.0/22 action=masquerade \
  comment="NAT subscribers to Internet"

# --- Firewall (базовая защита BRAS) ---
/ip/firewall/filter/add chain=input connection-state=established,related action=accept
/ip/firewall/filter/add chain=input connection-state=invalid action=drop
/ip/firewall/filter/add chain=input protocol=icmp action=accept
/ip/firewall/filter/add chain=input src-address=172.16.0.0/24 action=accept \
  comment="Allow management subnet"
/ip/firewall/filter/add chain=input in-interface=sfp-sfpplus2 protocol=tcp \
  dst-port=8728,8729,22,80,443 action=drop \
  comment="Block management from subscriber side"
/ip/firewall/filter/add chain=input action=drop comment="Drop all other input"
[Upstream 1] [Upstream 2]
      \        /
   [CCR2116 — BRAS/NAT]
        |
   [CRS326-24S+ — Core/Aggregation L3]
    /        |        \
[CRS326]  [CRS326]  [CRS326]  — Aggregation L2 (районы)
  /|\       /|\       /|\
[CSS] [CSS] [CSS]              — Access (дома)
# ============================================
# Средний ISP: CCR2116 как BRAS
# 3000 абонентов PPPoE, 2x upstream по 10 Гбит/с
# ============================================

# --- VLAN-интерфейсы для абонентских районов ---
# Транк от CRS326 приходит на sfp-sfpplus1
/interface/vlan/add name=vlan100-district1 vlan-id=100 interface=sfp-sfpplus1
/interface/vlan/add name=vlan200-district2 vlan-id=200 interface=sfp-sfpplus1
/interface/vlan/add name=vlan300-district3 vlan-id=300 interface=sfp-sfpplus1
/interface/vlan/add name=vlan900-mgmt vlan-id=900 interface=sfp-sfpplus1

# --- Bridge для абонентских VLAN ---
/interface/bridge/add name=br-subscribers comment="Bridge for subscriber VLANs"
/interface/bridge/port/add bridge=br-subscribers interface=vlan100-district1
/interface/bridge/port/add bridge=br-subscribers interface=vlan200-district2
/interface/bridge/port/add bridge=br-subscribers interface=vlan300-district3

# --- IP-пулы (10 000 адресов с запасом) ---
/ip/pool/add name=pool-main ranges=10.10.0.2-10.10.39.254 \
  comment="Main pool: 10 230 addresses"
/ip/pool/add name=pool-reserve ranges=10.10.40.2-10.10.59.254 \
  comment="Reserve pool: 5 118 addresses"
/ip/pool/set pool-main next-pool=pool-reserve

# --- RADIUS-интеграция ---
/radius/add service=ppp address=172.16.0.10 secret=RadiusSecret123! \
  timeout=3s comment="Primary RADIUS (billing)"
/radius/add service=ppp address=172.16.0.11 secret=RadiusSecret123! \
  timeout=3s comment="Backup RADIUS"

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

# --- PPP Profiles (тарифы, скорость из RADIUS) ---
/ppp/profile/add name=default-radius local-address=10.0.0.1 \
  remote-address=pool-main \
  dns-server=8.8.8.8,8.8.4.4 \
  comment="Default profile, rate-limit from RADIUS"

/ppp/profile/add name=tariff-blocked local-address=10.0.0.1 \
  remote-address=pool-main \
  rate-limit=128K/128K \
  dns-server=172.16.0.5 \
  comment="Blocked tariff (redirect to billing page)"

# --- PPPoE Server ---
/interface/pppoe-server/server/add service-name=ISP-PPPoE \
  interface=br-subscribers \
  default-profile=default-radius \
  authentication=chap,mschap2 \
  one-session-per-host=yes \
  max-mtu=1480 max-mru=1480 \
  keepalive-timeout=30 \
  comment="Main PPPoE server"

# --- NAT (src-nat с конкретным IP) ---
/ip/firewall/nat/add chain=srcnat src-address=10.10.0.0/16 \
  out-interface=sfp-sfpplus3 \
  action=src-nat to-addresses=203.0.113.0/28 \
  comment="NAT subscribers via public IP pool"

# --- Управление ---
/ip/address/add address=172.16.0.1/24 interface=vlan900-mgmt \
  comment="Management network"
# ============================================
# Агрегация: CRS326 (L2 switching)
# ============================================

/system/identity/set name="AGG-SW-01"

# Bridge с VLAN-filtering
/interface/bridge/add name=bridge vlan-filtering=yes

# Порты к BRAS (trunk)
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus1 \
  pvid=1 frame-types=admit-only-vlan-tagged
# Порты к коммутаторам доступа (trunk)
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus2 \
  pvid=1 frame-types=admit-only-vlan-tagged
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus3 \
  pvid=1 frame-types=admit-only-vlan-tagged
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus4 \
  pvid=1 frame-types=admit-only-vlan-tagged

# VLAN таблица — пропускаем абонентские VLAN
/interface/bridge/vlan/add bridge=bridge vlan-ids=100-199 \
  tagged=sfp-sfpplus1,sfp-sfpplus2 comment="District 1 VLANs"
/interface/bridge/vlan/add bridge=bridge vlan-ids=200-299 \
  tagged=sfp-sfpplus1,sfp-sfpplus3 comment="District 2 VLANs"
/interface/bridge/vlan/add bridge=bridge vlan-ids=300-399 \
  tagged=sfp-sfpplus1,sfp-sfpplus4 comment="District 3 VLANs"
/interface/bridge/vlan/add bridge=bridge vlan-ids=900 \
  tagged=sfp-sfpplus1,sfp-sfpplus2,sfp-sfpplus3,sfp-sfpplus4 \
  comment="Management VLAN"

# Управление через VLAN 900
/interface/vlan/add name=vlan900-mgmt vlan-id=900 interface=bridge
/ip/address/add address=172.16.0.2/24 interface=vlan900-mgmt
/ip/route/add dst-address=0.0.0.0/0 gateway=172.16.0.1
# ============================================
# Доступ: CSS326 (дом)
# VLAN 105 — абоненты этого дома
# ============================================

/system/identity/set name="ACC-HOUSE-105"

/interface/bridge/add name=bridge vlan-filtering=yes

# Порт uplink к агрегации (trunk)
/interface/bridge/port/add bridge=bridge interface=sfp-sfpplus1 \
  pvid=1 frame-types=admit-only-vlan-tagged

# Порты абонентов (access, VLAN 105)
/interface/bridge/port/add bridge=bridge interface=ether1 pvid=105
/interface/bridge/port/add bridge=bridge interface=ether2 pvid=105
/interface/bridge/port/add bridge=bridge interface=ether3 pvid=105
# ... до ether24

# VLAN таблица
/interface/bridge/vlan/add bridge=bridge vlan-ids=105 \
  tagged=sfp-sfpplus1 \
  untagged=ether1,ether2,ether3,ether4,ether5,ether6,ether7,ether8,\
  ether9,ether10,ether11,ether12,ether13,ether14,ether15,ether16,\
  ether17,ether18,ether19,ether20,ether21,ether22,ether23,ether24

# Management VLAN
/interface/bridge/vlan/add bridge=bridge vlan-ids=900 tagged=sfp-sfpplus1,bridge
/interface/vlan/add name=vlan900-mgmt vlan-id=900 interface=bridge
/ip/address/add address=172.16.0.105/24 interface=vlan900-mgmt
/ip/route/add dst-address=0.0.0.0/0 gateway=172.16.0.1
[Upstream 1]     [Upstream 2]     [IX MSK-IX]
     \                |               /
  [CCR2116 #1]===MPLS/OSPF===[CCR2116 #2]  — Core routers
        \                        /
     [CRS518]====MPLS====[CRS518]           — Distribution
      / | \                / | \
   [CRS326] [CRS326]   [CRS326] [CRS326]  — Aggregation
    /|\      /|\          /|\      /|\
  [CSS] ... [CSS]       [CSS] ... [CSS]     — Access
# ============================================
# Крупный ISP: Core router (CCR2116 #1)
# OSPF + BGP + MPLS
# ============================================

# --- OSPF (внутренняя маршрутизация) ---
/routing/ospf/instance/add name=ospf-isp router-id=10.255.0.1
/routing/ospf/area/add name=backbone instance=ospf-isp area-id=0.0.0.0

/routing/ospf/interface-template/add area=backbone interfaces=sfp-sfpplus1 \
  type=ptp comment="To Core router #2"
/routing/ospf/interface-template/add area=backbone interfaces=sfp-sfpplus2 \
  type=ptp comment="To Distribution SW #1"
/routing/ospf/interface-template/add area=backbone interfaces=sfp-sfpplus3 \
  type=ptp comment="To Distribution SW #2"
/routing/ospf/interface-template/add area=backbone interfaces=lo \
  type=ptp comment="Loopback"

# --- BGP (upstream-провайдеры) ---
/routing/bgp/connection/add name=upstream-1 as=65001 \
  remote.address=198.51.100.1 remote.as=12345 \
  local.role=customer \
  address-families=ip \
  routing-table=main \
  output.default-originate=never \
  comment="Upstream ISP #1"

/routing/bgp/connection/add name=upstream-2 as=65001 \
  remote.address=198.51.100.5 remote.as=67890 \
  local.role=customer \
  address-families=ip \
  routing-table=main \
  comment="Upstream ISP #2"

# --- MPLS ---
/mpls/ldp/add lsr-id=10.255.0.1 transport-addresses=10.255.0.1
/mpls/ldp/interface/add interface=sfp-sfpplus1 comment="LDP to Core #2"
/mpls/ldp/interface/add interface=sfp-sfpplus2 comment="LDP to Dist #1"
/mpls/ldp/interface/add interface=sfp-sfpplus3 comment="LDP to Dist #2"
# Атрибуты, которые RADIUS отправляет MikroTik:
Mikrotik-Rate-Limit = "50M/100M"       # Скорость upload/download
Framed-IP-Address = 10.10.5.25         # Статический IP (если нужен)
Framed-Pool = "pool-main"              # Пул адресов
Mikrotik-Group = "tariff-100M"         # PPP Profile
Session-Timeout = 86400                 # Максимальное время сессии (сек)
Acct-Interim-Interval = 300             # Интервал промежуточного учёта (сек)
# /etc/freeradius/3.0/clients.conf
client mikrotik-bras-01 {
    ipaddr = 172.16.0.1
    secret = RadiusSecret123!
    shortname = bras-01
    nastype = mikrotik
}
# --- SNMP для мониторинга (Zabbix) ---
/snmp/set enabled=yes contact="noc@isp.ru" location="Moscow, DC-1"
/snmp/community/set [find default=yes] name=ISP-SNMP-ro read-access=yes \
  addresses=172.16.99.0/24

# --- Traffic Flow для анализа трафика ---
/ip/traffic-flow/set enabled=yes interfaces=all cache-entries=256k
/ip/traffic-flow/target/add dst-address=172.16.99.5:2055 version=9 \
  comment="NetFlow collector (ntopng)"

# --- Graphing (встроенные графики) ---
/tool/graphing/interface/add interface=sfp-sfpplus1 comment="Upstream"
/tool/graphing/interface/add interface=sfp-sfpplus2 comment="Subscribers"
/tool/graphing/resource/add
# --- Ограничение доступа к управлению ---
# Разрешаем управление только из management-сети
/ip/firewall/filter/add chain=input src-address=172.16.0.0/24 action=accept \
  comment="Allow management network"
/ip/firewall/filter/add chain=input protocol=icmp action=accept
/ip/firewall/filter/add chain=input connection-state=established,related action=accept

# Защита от абонентов: блокируем доступ к сервисам
/ip/firewall/filter/add chain=input in-interface=br-subscribers protocol=tcp \
  dst-port=22,23,80,443,8291,8728,8729 action=drop \
  comment="Block management from subscribers"

/ip/firewall/filter/add chain=input action=drop comment="Drop all other"

# --- Отключение ненужных сервисов ---
/ip/service/set telnet disabled=yes
/ip/service/set ftp disabled=yes
/ip/service/set www disabled=yes
/ip/service/set api disabled=yes
/ip/service/set api-ssl disabled=yes
/ip/service/set ssh address=172.16.0.0/24
/ip/service/set winbox address=172.16.0.0/24

# --- Защита от DNS amplification ---
/ip/dns/set allow-remote-requests=no

# --- Connection Tracking tuning для BRAS ---
/ip/firewall/connection/tracking/set tcp-established-timeout=1h \
  udp-timeout=30s generic-timeout=30s \
  tcp-close-timeout=10s tcp-close-wait-timeout=10s

# --- Ограничение PPPoE-подключений ---
/interface/pppoe-server/server/set [find] one-session-per-host=yes
# Количество активных PPPoE-сессий
/ppp/active/print count-only

# Список активных сессий
/ppp/active/print

# Подробная информация по абоненту
/ppp/active/print where name="subscriber-login"

# Статистика PPPoE-сервера
/interface/pppoe-server/server/print stats
# Статистика RADIUS
/radius/print stats

# Проверка связи с RADIUS-сервером
/ping address=172.16.0.10 count=5

# Мониторинг RADIUS-запросов (в логах)
/log/print where topics~"radius"
# Статус BGP-сессий
/routing/bgp/session/print

# Количество полученных маршрутов
/routing/bgp/session/print detail

# Таблица маршрутизации — количество записей
/ip/route/print count-only
# LDP-соседи
/mpls/ldp/neighbor/print

# MPLS forwarding table
/mpls/forwarding-table/print

# Проверка MPLS-пути
/tool/traceroute address=10.255.0.2 protocol=icmp
# CPU и память
/system/resource/print

# Нагрузка на интерфейсы
/interface/print stats

# Top потребители полосы
/tool/torch interface=sfp-sfpplus2 src-address=10.10.0.0/16
# Неправильно
/ip/firewall/nat/add chain=srcnat action=masquerade

# Правильно
/ip/firewall/nat/add chain=srcnat src-address=10.0.0.0/8 \
  out-interface=sfp-sfpplus1 action=src-nat to-addresses=203.0.113.0/28
Для провайдеров / Сети провайдеров на MikroTik — архитектура