BGP + Mikrotik

Дисклеймер: Материал носит исключительно образовательный характер и рассчитан на системных администраторов. Автор не призывает нарушать законодательство РФ и не одобряет обход блокировок, установленных в отношении запрещённого контента. Статья описывает технические возможности BGP-маршрутизации через Bird и MikroTik — в первую очередь для восстановления доступа к ресурсам, которые сами ограничивают российских пользователей без правовых оснований.


Архитектура

Сервер   — 192.168.10.11
MikroTik — 192.168.0.35
[Скрипт загрузки]
  ↓ качает IP-листы (Google, Meta, Telegram...)
[BIRD /etc/bird/*.txt]
  ↓ static routes
[BGP → MikroTik 192.168.0.35]
  ↓ маршруты в таблице MikroTik
[Трафик к этим IP идёт через нужный интерфейс]

На сервере

Шаг 1 — Скачать скрипт и создать структуру

Скачать: bgp-blacklist.sh

cd /opt
mkdir blacklist
cd blacklist
mkdir list
touch chklist
chmod +x chklist
nano chklist

Шаг 2 — Установить bird2 и настроить конфиг

apt install bird2

Открыть конфиг:

nano /etc/bird/bird.conf

Удалить содержимое и вставить:

log syslog all;

router id 192.168.10.11;

protocol device {}

protocol kernel krt {
    ipv4 {
        import all;
        export none;
    };
    scan time 20;
}

protocol static static_bgp {
    ipv4;
    include "Google.txt";
    include "Meta.txt";
    # остальные листы по аналогии
}

protocol bgp mikrotik {
    local as 65001;
    neighbor 192.168.0.35 as 65002;
    source address 192.168.10.11;
    ipv4 {
        import none;
        export where proto = "static_bgp";
    };
    multihop;
}

Шаг 3 — Перезапустить Bird

systemctl restart bird.service

Проверить статус BGP-сессии:

birdc show protocols mikrotik

Пример вывода:


Управление

# Ручное обновление листов
/opt/blacklist/update.sh

# Статус BGP-сессии
birdc show protocols mikrotik
birdc show route

# Перечитать конфиг без перезапуска
birdc configure

# Статус сервиса
systemctl status bird

Автообновление (cron)

# Обновление раз в сутки в 3:00
0 3 * * * /opt/blacklist/update.sh >> /var/log/blacklist-update.log 2>&1

На MikroTik

Шаг 1 — Создать инстанс

Routing → BGP

  • Name — имя инстанса
  • Router ID — IP вашего MikroTik
  • AS — номер из конфига сервера, в примере 65002

Шаг 2 — Создать фильтр маршрута

Routing → Filters

  • Chain — имя фильтра
  • Ruleset gw 192.168.0.1; accept; — указывает, куда заворачивать трафик (в примере на шлюз)

Шаг 3 — Создать BGP-сессию с сервером

  • Instance — созданный на шаге 1
  • AS — номер AS вашего MikroTik
  • Router ID — IP MikroTik
  • Remote Address — IP сервера Bird
  • Remote AS — AS сервера (65001)
  • Local Roleebgp
  • Multihop — включить

Вкладка Extra

  • Routing Tablemain
  • No Client To Client — включить

Вкладка Filter

  • Input Filter — выбрать созданный фильтр
  • Output Networkbgp-networks

Проверка — вкладка Sessions

Сессия установлена. Новые маршруты в таблице маршрутизации:

Комментарии

Комментариев пока нет.