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

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

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

Долгое время использовал схему Настройка 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 с...