Обход блокировок с помощью BGP имея VPN на VPS

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Приветствую Хабравчане!

Долгое время использовал схему Настройка BGP для обхода блокировок, версия 2, «не думать». Но были моменты не устраивающие меня.

За основу используемого мною скрипта был использован скрипт@Furriest, за что ему огромное человеческое спасибо!

Настройку VPS/VPN можно смело брать из материнской темы, здесь выложу только скрипт.

"Почему не внесу нужные мне изменения на роутере?" - спросите вы. "Потому что у меня их на текущий момент четыре и, править на каждом лень". А лень как вы знаете - двигатель прогресса.

#!/bin/bash

pushd list
wget -N https://antifilter.download/list/subnet.lst
wget -N https://antifilter.download/list/ip.lst
#wget -N https://antifilter.download/list/ipresolve.lst
wget -N https://community.antifilter.download/list/community.lst
wget -N https://raw.githubusercontent.com/SecOps-Institute/FacebookIPLists/master/facebook_ipv4_cidr_blocks.lst

popd

old=$(cat md5.txt);
new=$(cat list/*.lst | md5sum | head -c 32);

if [ "$old" != "$new" ]
then

#main
    cat list/ip.lst | sed -r -e 's/^[0-9]+.[0-9]+.[0-9]+.[0-9]+$/&\/32/' -e 's/.*/route & reject;/' > /tmp/ip.txt
    cat list/subnet.lst | sed 's/.*/route & reject;/' >> /tmp/ip.txt
    cat list/facebook_ipv4_cidr_blocks.lst | sed 's/.*/route & reject;/' >> /tmp/ip.txt
#    cat list/ipresolve.lst | sed -r -e 's/^[0-9]+.[0-9]+.[0-9]+.[0-9]+$/&\/32/' -e 's/.*/route & reject;/' >> /tmp/ip.txt

#community
    cat list/community.lst | sed -r -e 's/^[0-9]+.[0-9]+.[0-9]+.[0-9]+$/&\/32/' -e 's/.*/route & reject;/' >> /tmp/ip.txt

#their
    cat list/their.lst | sed -r -e 's/^[0-9]+.[0-9]+.[0-9]+.[0-9]+$/&\/32/' -e 's/.*/route & reject;/' >> /tmp/ip.txt

#exclude
    for a in `cat exclude.txt`; do sed -i -e "/$a/d" /tmp/ip.txt; done
#unique
    sort -u /tmp/ip.txt > /etc/bird/ip.txt

    /usr/sbin/birdc configure;
    logger "RKN list reconfigured";

    echo $new > md5.txt;
fi

19, 25 и 28 строки: В списке ip.lst мы имеем IP адреса без указания префикса. Такой формат bird не кушает. Аналогично если будем использовать свой список. Проверяем есть ли префикс, если нету - дописываем /32

31 строка: удаляем из финального скрипта адреса, которые мы не хотим получать. Я использую для удаления 1.1.1.1 из community.lst, можно было сделать строкой по проще, но на будущее если понадобится исключить больше адресов/сетей сделал один раз. Просто дописываем их построчно в файл exclude.txt

Поиск производится по куску текста. Если вписать "1.1" в exclude.txt, то удалится и 1.1.1.1 и 1.179.201.18/32 и т.к. далее. Вписав 192.168. у нас удалится 192.168.0.0/16 и далее /17, /18, /19 и остальные префиксы вплоть до /32 если таковые будут в листах.

33 строка: удаляет дубли и копирует финальный список в каталог bird. Т.к. у нас используется несколько списков, вероятность получения одинаковых префиксов высока.

Далее мы создаем недостающие файлы/ссылки:

Создаем файл исключения и пишем туда 1.1.1.1 Или ничего не пишем.

nano /root/blacklist/exclude.txt

Создаем файл своих хотелок и пишем туда например 10.0.0.0./8

nano /root/blacklist/their.txt

Создаем символьную ссылку в каталог list. Она также будет участвовать в подсчете хэша для определения есть ли изменения в файлах.

ln -s /root/blacklist/their.txt /root/blacklist/list/their.lst

Ну и не забываем про cron

crontab -e
*/20 * * * * cd /root/blacklist && ./chklist

Источник: https://habr.com/ru/post/672604/


Интересные статьи

Интересные статьи

Прочитав заголовок данной статьи, вероятно, некоторые из вас сразу же закатывают глаза и, переполнившись противоречивыми чувствами, либо заставляют себя все же посмотреть, что за эко-пропаганду принес...
Большинство ЦОД имеют традиционную защиту, предполагающую вовлечение в оборонительный рубеж только оборудования по периметру. Однако в мультиоблачной инфраструктуре, на которой построена превалирующая...
Для многих крупных предприятий обход определенного маршрута для проверки и снятия показателей с оборудования является неотъемлемым рабочим процессом, однако зачастую для ...
В предыдущей статье мы узнали, как использовать модели ИИ для определения формы лиц. В этой статье мы используем ключевые ориентиры лица, чтобы получить больше информации...
Руководство по использованию mergeMap и forkJoin вместо простых подписок для множественных запросов к API. В этой статье я покажу два подхода к обработке множественных запросов в Angular с...