Главная » Хабрахабр » Настройка BGP для обхода блокировок, версия 2, «не думать»

Настройка BGP для обхода блокировок, версия 2, «не думать»

Перечитал я трезвым взглядом свой предыдущий пост и понял, что новичкам через все эти нагромождения апдейтов и обсуждений в комментариях (которые местами были даже полезнее, чем сам пост) продираться будет затруднительно.

Поэтому здесь я приведу сжатую пошаговую инструкцию, как обходить блокировки, если у вас есть:

  • линукс-машина (ubuntu) вне поля блокировок;
  • роутер Mikrotik, на который вы уже подняли VPN-туннель до этой линукс-машины;
  • настроенный NAT на этом туннеле, позволяющий вам работать через него;
  • желание.

Имейте в виду, что схемы включения и настройки в этом посте немного отличаются для упрощения решения. Если у вас нет чего-то из этого или у вас есть что-то другое или вы хотите узнать, почему так, а не иначе — добро пожаловать в предыдущий пост, где это всё описано более-менее подробно.

Те, кто уже всё сделал по мотивам предыдущего поста, в этом полезной информации не почерпнут.

TL;DR

Цель — убрать весь трафик, адресованный заблокированным ресурсам, в туннель. Автоматизируем доступ к ресурсам через существующий у вас туннель, используя готовые списки IP-адресов, базирующиеся на реестре РКН, и протокол BGP.

Исходные данные

30. IP-адреса внутри туннеля 172. 1 — Linux, 172. 1. 1. 30. перед началом настройки выполняем команду sudo su -).
Исходные списки IP-адресов будем получать с нового сервиса antifilter.download. 2 — Mikrotik.
Интерфейс VPN-туннеля со стороны Linux-машины называется tun0.
В этой редакции поста жестко подразумевается, что туннель и bgp-сервер работают на одной и той же Linux-машине.
Настройки на Linux выполняем от root (т.е.

Кратко — логика решения

  1. Устанавливаем и настраиваем сервис маршрутизации
  2. Получаем и регулярно обновляем списки IP-адресов, создаем на их основании настройки сервиса маршрутизации
  3. Подключаем роутер к сервису и настраиваем отправку всего трафика через туннель.

Решение

Установка и настройка сервиса маршрутизации

На 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 /root/blacklist /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 bird start

Добавляем через 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 тысяч маршрутов, указывающих на некстхоп внутри туннеля.

Заключение

Надеюсь, что получилось коротко и понятно.

Если ваша задача не укладывается в эту простую схему — возможно, вам лучше прочитать предыдущий пост с комментариями и, скорее всего, вы найдете там какие-то подсказки.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

«Тут всегда придётся развиваться»: интервью с Евгением Кувшиновым (ManyChat) о разработке в стартапе

А что происходит, если размеры компании стремительно меняются, и число сотрудников за пару лет увеличивается в десять раз? Все мы примерно представляем, как выглядит разработка в крупной компании и чем от неё может отличаться разработка в небольшой. Когда стартап бурно ...

[Из песочницы] Реалистичные тени для roguelike

Доброго времени, Хабр-сообщество. Тогда меня озадачила возможность создать интересные элементы для геймплея в roguelike (2). Много лет назад, натолкнулся на пост (1). Но более мне по душе ситуация, когда мы, путешествуя по коридорам подземелья, раскрываем особенности расположения объектов постепенно на ...