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 — имя фильтра
- Rule —
set 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 Role —
ebgp - Multihop — включить
Вкладка Extra
- Routing Table —
main - No Client To Client — включить
Вкладка Filter
- Input Filter — выбрать созданный фильтр
- Output Network —
bgp-networks
Проверка — вкладка Sessions
Сессия установлена. Новые маршруты в таблице маршрутизации: