Перечитал я трезвым взглядом свой предыдущий пост и понял, что новичкам через все эти нагромождения апдейтов и обсуждений в комментариях (которые местами были даже полезнее, чем сам пост) продираться будет затруднительно.
Поэтому здесь я приведу сжатую пошаговую инструкцию, как обходить блокировки, если у вас есть:
- линукс-машина (ubuntu) вне поля блокировок;
- роутер Mikrotik, на который вы уже подняли VPN-туннель до этой линукс-машины;
- настроенный NAT на этом туннеле, позволяющий вам работать через него;
- желание.
Если у вас нет чего-то из этого или у вас есть что-то другое или вы хотите узнать, почему так, а не иначе — добро пожаловать в предыдущий пост, где это всё описано более-менее подробно. Имейте в виду, что схемы включения и настройки в этом посте немного отличаются для упрощения решения.
Те, кто уже всё сделал по мотивам предыдущего поста, в этом полезной информации не почерпнут.
TL;DR
Автоматизируем доступ к ресурсам через существующий у вас туннель, используя готовые списки IP-адресов, базирующиеся на реестре РКН, и протокол BGP. Цель — убрать весь трафик, адресованный заблокированным ресурсам, в туннель.
Исходные данные

IP-адреса внутри туннеля 172.30.1.1 — Linux, 172.30.1.2 — Mikrotik.
Интерфейс VPN-туннеля со стороны Linux-машины называется tun0.
В этой редакции поста жестко подразумевается, что туннель и bgp-сервер работают на одной и той же Linux-машине.
Настройки на Linux выполняем от root (т.е. перед началом настройки выполняем команду sudo su -).
Исходные списки IP-адресов будем получать с нового сервиса antifilter.download.
Кратко — логика решения
- Устанавливаем и настраиваем сервис маршрутизации
- Получаем и регулярно обновляем списки IP-адресов, создаем на их основании настройки сервиса маршрутизации
- Подключаем роутер к сервису и настраиваем отправку всего трафика через туннель.
Решение
Установка и настройка сервиса маршрутизации
На linux-машине добавляем в систему официальный PPA разработчиков ПО и устанавливаем bird.
add-apt-repository ppa:cz.nic-labs/bird apt update apt install bird
Отключаем bird для IPv6 и останавливаем пока bird для IPv4.
systemctl stop bird6 systemctl disable bird6 systemctl stop bird
Сохраняем файл /etc/bird/bird.conf со следующим содержимым:
log syslog all; router id 172.30.1.1; protocol kernel { scan time 60; import none; export none; } protocol device { scan time 60; } protocol static static_bgp { include "subnet.txt"; include "ipsum.txt"; } protocol bgp OurRouter { description "Our Router"; neighbor 172.30.1.2 as 64999; import none; export where proto = "static_bgp"; next hop self; local as 64999; source address 172.30.1.1; passive off; }
Получаем и компилируем списки IP-адресов
Создаем папку /root/blacklist и подпапку list в ней
mkdir -p /root/blacklist/list cd /root/blacklist
Создаем файл /root/blacklist/chklist со следующим содержимым:
#!/bin/bash cd /root/blacklist/list wget -N https://antifilter.download/list/ipsum.lst https://antifilter.download/list/subnet.lst old=$(cat /root/blacklist/md5.txt); new=$(cat /root/blacklist/list/*.lst | md5sum | head -c 32); if [ "$old" != "$new" ] then cat /root/blacklist/list/ipsum.lst | sed 's_.*_route & reject;_' > /etc/bird/ipsum.txt cat /root/blacklist/list/subnet.lst | sed 's_.*_route & reject;_' > /etc/bird/subnet.txt /usr/sbin/birdc configure; logger "RKN list reconfigured"; echo $new > /root/blacklist/md5.txt; fi
Делаем файл выполняемым и запускаем один раз для проверки, после этого в папке /etc/bird появятся нужные файлы и можно будет запустить bird.
chmod +x /root/blacklist/chklist /root/blacklist/chklist systemctl start bird
Добавляем через crontab -e выполнение файла раз в полчаса
*/30 * * * * bash /root/blacklist/chklist
После этого сервис маршрутизации работает и по команде birdc show route показывает длинный набор маршрутов на запрещенные ресурсы.
Настраиваем Mikrotik из командной строки
Выполняем на устройстве в окне терминала следующие команды (помните, что прямая копипаста может не сработать, поскольку отработает автодополнение):
/routing bgp instance set default as=64999 ignore-as-path-len=yes router-id=172.30.1.2 /routing bgp peer add name=VPS remote-address=172.30.1.1 remote-as=64999 ttl=default
Через несколько секунд после выполнения этих команд в ваш роутер Mikrotik прилетит чуть более 13 тысяч маршрутов, указывающих на некстхоп внутри туннеля. И всё заработает.
Заключение
Надеюсь, что получилось коротко и понятно.
Если ваша задача не укладывается в эту простую схему — возможно, вам лучше прочитать предыдущий пост с комментариями и, скорее всего, вы найдете там какие-то подсказки.
