Jump to content

Обход блокировок с использованием bird4


Recommended Posts

Posted (edited)
7 часов назад, Дмитрий Медведев сказал:

правда эта команда не помогла

если версия скрипта 3.* то команда такая ip route list table 1001 | grep ...

так как в 1000 таблицу попадает только то, что указано в ручную. а в 1001 уже сам список с антифильтра

а по поводу ошибки - кажется не может срезолвить адрес. может днс не успевает или еще что-то

проверил командой

iprange /opt/root/Bird4Static/Install/double_vpn/user-vpn.list
45.154.73.71
82.221.104.145
104.21.41.93
172.67.146.101

а вот поменял rezka.ag на rezka.ag1 и получил такое

iprange /opt/root/Bird4Static/Install/double_vpn/user-vpn.list
iprange: DNS: 'rezka.ag1' failed permanently: Name or service not known
45.154.73.71
104.21.41.93
172.67.146.101

Можно так проверять любой список, просто выполнив команду iprange /путь_до_списка

Edited by DennoN
  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

Обновление!

v3.2

https://github.com/DennoN-RUS/Bird4Static

Добавлена возможность указыать в переменных не имя интерфейса, а шлюз.
Если у вас при заполнении файла user-isp.list перестают открываться ресурсы указанные в нем, то надо изменить переменную в скрипте add-bird4_routes.sh с ISP=eht3 (где eth3 - это интерфейс провайдера) на ISP=10.0.0.1 (где 10.0.0.1 - это шлюз провайдера).
Узнать шлюз можно командой ip route | grep default
ВНИМАНИЕ! Сам скрипт не отслеживает какой сейчас шлюз. Если вы указали один, а потом он изменился, то надо снова менять в файле значение переменной ISP и перезапускатть скрипт. Так что если у вас все работает и так, то ничего менять не надо!

git clone -b v3.2 https://github.com/DennoN-RUS/Bird4Static.git

Спасибо @Daniil413 за долгий и самостоятельный ресерч проблемы, теперь у тех, у кого были проблемы с перенаправлением ресурсов через провайдера должно все заработать. @mystique_man - обрати внимание, должно сработать

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

  • Thanks 4
  • Upvote 1
Link to comment
Share on other sites

18 часов назад, Рома Степанов сказал:

Прекрасно работает, но ни в какую не хочет пропускать через VPN трафик мобильного приложения Twitter. Есть какое-то решение?

 

Не все айпишники доменов, на которые отправляет запросы мобильный Твиттер, есть в выгрузке Antifilter. В частности, трафик пытается напрямую идти к этим трём доменам из 10+ при запуске приложения:

na.albtls.t.co

na.glbtls.t.co

api.twitter.com

----

Подозреваю, что основная проблема в последнем домене, но лучше отправить через VPN все 3. Внесите эти домены в Bird4Static/lists/user-vpn.list, запустите скрипт обновления Bird4Static/scripts/add-bird4_routes.sh и будет вам счастье. :)

А если есть время и желание помочь многим, то можете связаться с разработчиками Antifilter, попросив добавить в выгрузку отсутствующие айпишники доменов для моб.приложения Твиттера.

Edited by Daniil413
  • Thanks 2
Link to comment
Share on other sites

Подскажите пожалуйста. После установки скрипта - не отработала эта его часть:

# Organizing scripts into folders

ln -sf $SCRIPTS/bird-table.sh /opt/etc/init.d/S02bird-table 

Пытался вручную создать s02bird-table - не вышло.

Что можно предпринять?

 

UPD. Все-таки удалось принудительно создать ярлык S02bird-table с /opt/root/Bird4Static/scripts/bird-table.sh. Странно, что и без него все работало. Вообще в чем необходимость в  /opt/etc/init.d/S02bird-table ?

Edited by drfischer
Link to comment
Share on other sites

4 часа назад, drfischer сказал:

Подскажите пожалуйста. После установки скрипта - не отработала эта его часть:

# Organizing scripts into folders

ln -sf $SCRIPTS/bird-table.sh /opt/etc/init.d/S02bird-table 

Пытался вручную создать s02bird-table - не вышло.

Что можно предпринять?

 

UPD. Все-таки удалось принудительно создать ярлык S02bird-table с /opt/root/Bird4Static/scripts/bird-table.sh. Странно, что и без него все работало. Вообще в чем необходимость в  /opt/etc/init.d/S02bird-table ?

При перезагрузке Keenetic исполняются скрипты, которые лежат в init.d. В данном случае скрипт bird-table.sh, который проверяет наличие правил маршрутизации для таблиц 1000, 1001..2, т.е. тех, который как раз и заполняет айпишниками bird. Если правил нет, то он их создаёт, а при выключении роутера -- удаляет. В итоге у вас всегда есть правила для таблиц маршрутизации и включённая пользовательская маршрутизация -- за этим активно следит этот скрипт.
Уточните, а какую ошибку вы получали при установке, когда install.sh пытался создать символическую ссылку на bird-table.sh? И как вы её пофиксили?

Link to comment
Share on other sites

4 часа назад, Daniil413 сказал:

Уточните, а какую ошибку вы получали при установке, когда install.sh пытался создать символическую ссылку на bird-table.sh? И как вы её пофиксили?

Ошибок не получал. Просто обратил внимание,что раз в час файл antifilter.list никак не изменяется, т.е. ничего не обновляется,если принудительно скрипт add-bird4_routes.sh не запустить. Начал изучать папки - что где должно создаваться и увидел,что в init.d нет файла S02bird-table (точнее, это ярлык же на файл bird-table.sh, который у меня лежит по пути: /opt/root/Bird4Static/scripts.

Через WinScp сделал ярлык принудительно. Хотя не знаю помогло ли. )

Как не обновлялся antifilter.list сам - так и не обновляется похоже (сужу по размеру и времени создания файла).

Link to comment
Share on other sites

Posted (edited)

@drfischer выполни еще команду

ln -sf /opt/root/Bird4Static/scripts/add-bird4_routes.sh /opt/etc/cron.hourly/

и проверь что в папке /opt/etc/cron.hourly/ появился файл add-bird4_routes.sh

+ команда

/opt/etc/init.d/S10cron check

должна вывести что сервис alive

Edited by DennoN
Link to comment
Share on other sites

13 часа назад, DennoN сказал:

должна вывести что сервис alive

Так и есть. Alive! А в cron.hourly ярлык тот лежит. Он при установке скрипта еще появился.

но обновляться никак не хочет,почему-то.

Edited by drfischer
Link to comment
Share on other sites

Может у меня cron не работает нормально? Запустил команду "cron"  и получил это:

cron: can't lock /opt/var/run/cron.pid, otherpid may be 697: Resource temporarily unavailable                                                            

Link to comment
Share on other sites

@DennoN

Добрый день!

Настроил всё согласно мануалу на гитхабе.

Большинство сайтов открываются без проблем, но при внесении в user-vpn.list, например speedtest.net выдаёт мо айпи от провадера, netflix всё равно показывает что регион RU, хотя впн через сша.

 ip route list table 1000 показывает резолвед адреса, так как в файле писал fqdn

Вчера вообще себя странно вёл, когда я вписал в файл адрес в формате www.speedtest.net - ip определялся впн'а, а скорость измерялась как будто в обход впн, ну то есть на kn-1101 нельзя получить 500mbit/s по openvpn.

Почему так может быть?

Link to comment
Share on other sites

Posted (edited)

@Za1batsu по поводу изменения скоростей на спидтесте - смысл в том, что если заполнять файл user-vpn.list в виде

speedtest.net
www.speedtest.net

то траффик через впн будет идти только к этим сайтам. но если посмотреть куда сайт обращается при запуске теста (жмем в браузере кнопку F12 и смотрим сеть), то видно, что сами файлы для теста он скачивает с адресов https://speedtest.camstream.ru.prod.hosts.ooklaserver.net:8080/download?... например, могут быть и другие в зависимости от сервера, с которого идет проверка. И тут становится сразу понятно, что через впн идет только сайт спидтеста, а все остальное идет через провайдера. Так что это не баг и не странность, это особенность работы.

С некфликсом - так же. нужно искать в интернете сети, которые им принадлежат и прописывать их в файл. Надееться на то, что все заработает если указать просто www.netflix.com - не стоит, так как это покрывается только небольшую часть их громандой инфраструктуры. Там еще и cdn скорее всего есть.

@drfischer то что команда cron не выполняется это нормально. тут копать надо. логи крона вроде в морду кинетика в диганостика - журнал выводится. Я бы для теста положил файлик еще в  /opt/etc/cron.5mins/ и смотрел что выводится. У меня была похожа проблема, когда я накосячил в скриптах и у меня из консоли все выполнялось хорошо, а из крона нет, так как там были переменные, которые наполнялись значениями только если запускать в ручную. А в кроне они оставались пустыми и ничего не происходило. Но это было давно и я это поправил

Edited by DennoN
Link to comment
Share on other sites

1 час назад, DennoN сказал:

журнал выводится

У меня в журнале кинетика только такие всплыли пункты относительно Cron: 

Апр 15 19:04:29
 
cron[990]
(CRON) STARTUP (V5.0)
Апр 15 19:04:29
 
cron[990]
(*system*) BAD FILE MODE (/opt/etc/crontab)
 
и все. Файлик, как вы сказали - положил, но не реагирует на него Крон (
Link to comment
Share on other sites

Posted (edited)
6 минут назад, drfischer сказал:

(*system*) BAD FILE MODE (/opt/etc/crontab)

cat /opt/etc/crontab

что выводит?

Edited by DennoN
Link to comment
Share on other sites

11 минуту назад, DennoN сказал:

что выводит?

~ # cat /opt/etc/crontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
#*/1 * * * * root /opt/bin/run-parts /opt/etc/cron.1min
#*/5 * * * * root /opt/bin/run-parts /opt/etc/cron.5mins
#01 * * * * root /opt/bin/run-parts /opt/etc/cron.hourly
#02 4 * * * root /opt/bin/run-parts /opt/etc/cron.daily
#22 4 * * 0 root /opt/bin/run-parts /opt/etc/cron.weekly
#42 4 1 * * root /opt/bin/run-parts /opt/etc/cron.monthly
#* 08 * * * root /opt/bin/unblock_ipset.sh

Link to comment
Share on other sites

Posted (edited)

а че это у тебя все закоментировано?😀 и ипсет откуда-то появился?

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
*/1 * * * * root /opt/bin/run-parts /opt/etc/cron.1min
*/5 * * * * root /opt/bin/run-parts /opt/etc/cron.5mins
01 * * * * root /opt/bin/run-parts /opt/etc/cron.hourly
02 4 * * * root /opt/bin/run-parts /opt/etc/cron.daily
22 4 * * 0 root /opt/bin/run-parts /opt/etc/cron.weekly
42 4 1 * * root /opt/bin/run-parts /opt/etc/cron.monthly

вот как стандартный файл должен выглядеть до того, как его поломают)

внеси изменения и перезапусти cron

Edited by DennoN
Link to comment
Share on other sites

17 минут назад, DennoN сказал:

внеси изменения и перезапусти cron

Исправил. Теперь так выглядит так /opt/etc/crontab
 
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
*/1 * * * * root /opt/bin/run-parts /opt/etc/cron.1min
*/5 * * * * root /opt/bin/run-parts /opt/etc/cron.5mins
01 * * * * root /opt/bin/run-parts /opt/etc/cron.hourly
02 4 * * * root /opt/bin/run-parts /opt/etc/cron.daily
22 4 * * 0 root /opt/bin/run-parts /opt/etc/cron.weekly
42 4 1 * * root /opt/bin/run-parts /opt/etc/cron.monthly
 
 
Перегрузил роутер потому как не понял какой командой перегружать Cron.
Но чет не помогло. Ту же ошибку выдает:
 
Апр 15 19:53:31
 
cron[898]
(CRON) STARTUP (V5.0)
Апр 15 19:53:31
 
cron[898]
(*system*) BAD FILE MODE (/opt/etc/crontab)
Edited by drfischer
Link to comment
Share on other sites

10 минут назад, DennoN сказал:

теперь

ls -l /opt/etc/crontab

 ls -l /opt/etc/cron.*

~ # ls -l /opt/etc/crontab
-rwx-w--w-    1 root     root           529 Apr 15 20:21 /opt/etc/crontab
~ # ls -l /opt/etc/cron.*
/opt/etc/cron.1min:
lrwxrwxrwx    1 root     root            49 Apr 15 19:50 add-bird4_routes.sh -> /opt/root/Bird4Static/scripts/add-bird4_routes.sh

/opt/etc/cron.5mins:

/opt/etc/cron.d:

/opt/etc/cron.daily:

/opt/etc/cron.hourly:
lrwxrwxrwx    1 root     root            49 Apr 15 15:34 add-bird4_routes.sh -> /opt/root/Bird4Static/scripts/add-bird4_routes.sh

/opt/etc/cron.monthly:
-rwxrwxrwx    1 root     root           232 Apr 14 01:09 S02bird-table

/opt/etc/cron.weekly:
~ #
 

Link to comment
Share on other sites

Posted (edited)

да уж. кто-то хорошо поломал весь крон

rm /opt/etc/cron.monthly/S02bird-table

chmod 0600 /opt/etc/crontab - возможно не обязательно.

когда увидишь, что все заработает - не забудь удалить файл /opt/etc/cron.1min/add-bird4_routes.sh - 1 минута слишком часто, скрипт может выполнятся дольше + там идет нагрузка на цпу, когда он выполняется из-за того, что 1 - ищет различия между новыми файлами и старыми 2 - bird перечитывает таблицы.

Возможно где-то еще ошибки всплывут, так как реально тут много того, чего не должно быть

Edited by DennoN
Link to comment
Share on other sites

11 минуту назад, DennoN сказал:

rm /opt/etc/cron.monthly/S02bird-table

chmod 0600 /opt/etc/crontab

Урааа!!!! Заработалооо!!! Спасибо огромное! И за помощь оперативную и вообще за саму идею!!!!!

Link to comment
Share on other sites

Мучаюсь 2 дня, не могу понять куда копать. Работает отлично только какое-то время после перезапуска роутера или переустановки скрипта, потом ориентировочно через час перестает открывать некоторые заблокированные ресурсы. Например rutracker стабильно работает, 2ip.ru всегда стабильно показывает активное подключение к VPN (установлен вариант с 2 VPN), но instagram, tjournal открываться перестают.

Так же не очень понял логику работы с 2 VPN. Второй VPN не работает (yoip всегда показывает ip первого VPN). Если первый отключаем, оставляем только второй, то заблокированные ресурсы открываться перестают. 

ВПН подлючен по протоколу IKEv2, до этого пробовал с WG, тоже самое. Пробовал удалиять папку /opt/root/Bird4Static/ а так же файл /opt/etc/cron.hourly/add-bird4_routes.sh и ставить начисто, эффект тот же. В файл Bird4Static/lists/user-isp.list ip адреса впн вводил, шлюз провайдера в add-bird4_routes.sh тоже прописывал вместо eth3.

Edited by Рома Степанов
Link to comment
Share on other sites

работать с двумя впн должно так:

1) списки с антифильтра направляются через первый впн. если первый выключен, то через второй.

2) есть возможность задавать в ручную какие адреса направлять на тот или иной впн. если направление идет через конкретный впн, а он не досутпен, то пойдет через провайдера.

3) Если же указано без привязки к конкретному впну, то пойдет по логике как в первом пункте

нужно смотреть:

ip route list table 1000 - туда подгружаются ручные перенаправляения через определнный впн и провайдера

ip route list table 1001 - туда подгружаются список с антифильтра + свои перенаправление через впн без привязки к конкретному впн. траффик из этой таблицы идет через первый впн. если он отключен, то таблица должна быть пустой

ip route list table 1002 - тут так же как и в 1001, только траффик идет через второй впн (у нее приоритет меньше, поэтому срабатывает, только когда 1001 таблица пустая)

  • Thanks 1
Link to comment
Share on other sites

Вроде все просто. Схема с одним vpn, провайдер - статический IP (eth3), vpn - поднят через openvpn (ovpn_br0). DNS указан - яндекс 78.88.8.8. А работает как-то криво. Вот таблица:

~ # ip route list table 1000
45.154.73.71 dev ovpn_br0 scope link
88.198.177.100 dev eth3 scope link
104.16.154.36 dev ovpn_br0 scope link
104.16.155.36 dev ovpn_br0 scope link
104.18.216.232 dev ovpn_br0 scope link
104.18.217.232 dev ovpn_br0 scope link
167.233.6.242 dev eth3 scope link
167.233.7.36 dev eth3 scope link
213.167.39.27 dev ovpn_br0 scope link

~ # nslookup rutracker.org
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

Name:      rutracker.org
Address 1: 213.167.39.27
~ # nslookup whatismyipaddress.com
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

Name:      whatismyipaddress.com
Address 1: 104.16.154.36
Address 2: 104.16.155.36
~ #
оба сайта есть в файле 
Bird4Static/lists/user-vpn.list, при этом whatismyipadress корректно показывает, что он находится в европе, а вот rutracker вообще не открывается. Оба по идее должны идти через ovpn_br0, судя по таблице. Никакие заблокированные ресурсы кстати тоже не открываются (например facebook, instagram, meduza - я подозреваю, что они должны быть в таблице 1001 - там куча записей). Но мне было бы достаточно вручную указать список нужных мне ресурсов. Где ошибка ?

Edited by VladimirM
Link to comment
Share on other sites

Всем доброго!

@DennoN Спасибо большое за скрипт, все работает!

Есть пару моментов, я использовал список ip c antifilter.download ipresolve.lst + subnet.lst

В файл add-bird4_routes.sh внес изменения:

URL0=https://antifilter.download/list/ipresolve.lst
URL1=https://antifilter.download/list/subnet.lst

и

curl -sk $URL0 $URL1 | sort | diff -u $BLACKLIST - | patch $BLACKLIST -

И крон поставил раз в сутки обновлять.

Насколько это правильно?

Список ip адресов внушительный, 240 тыс. строк, первые несколько минут роутер был загружен на 50-60%, видать сканировал потом стало как обычно 1-6%.

В конце выдал:

 
Скрытый текст
Апр 25 01:54:20
 
bird4
I/O loop cycle took 517336 ms for 4 events
Апр 25 01:54:20
 
bird4
Kernel dropped some netlink messages, will resync on next scan.
 

Вроде все работает. Но хотел узнать, насколько целесообразно использовать полный список заблокированных ip адресов, будут ли какие-то задержки при открытии сайтов в браузере?

Еще заметил, в antifilter.list лежит полный список ip из ipresolve.lst + subnet.lst а это 370 тыс. строк, а в bird4-base-vpn1.list всего 240 тыс. строк, получается остальные 130 тыс. строк не просканировались?

Edited by Tiko
Link to comment
Share on other sites

Posted (edited)
12 часа назад, Tiko сказал:

Еще заметил, в antifilter.list лежит полный список ip из ipresolve.lst + subnet.lst а это 370 тыс. строк, а в bird4-base-vpn1.list всего 240 тыс. строк, получается остальные 130 тыс. строк не просканировались?

сравнил файлы. смысл в том, что адреса из antifilter.list грузятся не напрямую, а их обрабатывает утилита iprange, которая если видит, что 2 адреса стоят рядом - объединяет их в один с более большой маской. Например:

Скрытый текст

было:

1.32.249.30/32
1.32.249.31/32

103.224.212.202/32
103.224.212.203/32
103.224.212.204/32
103.224.212.205/32
103.224.212.206/32
103.224.212.207/32

стало:

1.32.249.30/31

103.224.212.202/31
103.224.212.204/30

 

12 часа назад, Tiko сказал:

Насколько это правильно?

ну скрипт может такое обрабатывать. я в свое время пытался использовать такую же схему, но мне не понравилось, что если остановить и запустить bird он висит минут 5, переваривает все адреса. Задержка открытия по идее не должна быть сильно больше, там поиск шустрый, но если заметишь, что что-то начинает тупить, то это первый кандидат на проверку)

 

Edited by DennoN
  • Thanks 1
Link to comment
Share on other sites

7 часов назад, DennoN сказал:

сравнил файлы. смысл в том, что адреса из antifilter.list грузятся не напрямую, а их обрабатывает утилита iprange, которая если видит, что 2 адреса стоят рядом - объединяет их в один с более большой маской. Например:

Спасибо за информацию, так даже лучше.

 

7 часов назад, DennoN сказал:

ну скрипт может такое обрабатывать. я в свое время пытался использовать такую же схему, но мне не понравилось, что если остановить и запустить bird он висит минут 5, переваривает все адреса. Задержка открытия по идее не должна быть сильно больше, там поиск шустрый, но если заметишь, что что-то начинает тупить, то это первый кандидат на проверку)

 

Если в первый раз сканирование адресов заняло 8 минут, то при ручном запуске командой ./Bird4Static/scripts/add-bird4_routes.sh сканирование заняло 1 час 35 минут, странные дела)

Ну пока все работает, трогать не буду, только крон поставлю раз в неделю.

Link to comment
Share on other sites

30 минут назад, patriot2101 сказал:

Подскажите пожалуйста откуда Вы скачиваете antifilter.list ?

Не смог найти...

https://antifilter.download/list/allyouneed.lst

Этот адрес прописан в скрипте Bird4Static/scripts/add-bird4_routes.sh, в переменной URL0

Link to comment
Share on other sites

В 25.04.2022 в 04:07, Tiko сказал:

Еще заметил, в antifilter.list лежит полный список ip из ipresolve.lst + subnet.lst а это 370 тыс. строк, а в bird4-base-vpn1.list всего 240 тыс. строк

я про другой спрашивал именно antifilter.list

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...