Pull to refresh

Comments 34

Пример второй. Сайт leroymerlin.ru

Без правки MSS история такая же. Потому что Леруа лежит тоже за Qrator Labs.

А вот что с леруа делать, если на работе никаких обходов нет, трафик идёт напрямую в провайдера, а картинок всё равно нет?

Дома обход есть, то на 178.248.232.0/22 трафик тоже идёт напрямую, и снова картинок нет (но тут RT через gpon с pppoe и mtu 1492, однако внутри их роутера есть в мангле

-A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m tcpmss --mss 1412:1500 -j TCPMSS --set-mss 1412 

-A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN,ACK -m tcpmss --mss 1412:1500 -j TCPMSS --set-mss 1412 

Из собственного опыта

  1. address-lists на таком кол-ве префисков - редкое извращение, даже без ресолвинга :) Не вижу вообще никакого смысла. Если не устраивают готовые списки от сторонних BGP - ничто не мешает поднять свой BGP-сервер на любой виртуалке, там формировать нужные списки, а на микроте получать их всё же по BGP. Я так и делаю, свой bird простым скриптом собирает списки от antifilter, вручную добавленные IP, домены, подсети и даже целые AS, базы GeoIP, объединяет (чтобы не было повторов и пересечений по разным критериям), раскладывает их по communities в зав-ти от того, через что надо куда ходить (у меня 3 точки выхода - Голландия, Турция и Россия) и раздаёт всем моим роутерам/серверам.

  2. Микротик RB3011 (1Gb RAM) уже совершенно без проблем вытягивает все префиксы без суммаризации. Но когда несколько лет назад в погоне за Телеграмом префиксов было в пике 1,3 млн. - у него память почти заканчивалась.

  3. В докере на Микроте неплохо поднимается и стабильно работает Amnezia-WG. Но на том же RB3011 упирается в 100% CPU на скорости ~30 Мбит/с, для меня неприемлемо мало. Cloak не удалось заставить работать, у него в issues на гитхабе уже 2 года висит проблема с неработоспособностью в контейнере. VLESS и пр. не пробовал, т.к. мне прокси не нужен, нужен полноценный VPN, а даже с плясками с бубном из VLESS его сделать не получается. Так что Raspberry Pi (не через USB, через Ethernet) и маршрутизация хитрых туннелей через неё - единственный разумный выход. Пачка Pi'шек едет с Али сейчас, буду прикручивать...

А можно более подробно статью про свой BGP-сервер и сборку фида из разных источников?

Там жуткие костыли из bash-скриптов, к тому же специфичные для моего случая. Раннюю версию (там ещё нет GeoIP и нескольких гейтвеев для выхода и наверняка есть мелкие косяки, которые поправлены потом) я выкладывал. Текущую даже не знаю как нормально оформить, чтобы было понятно и полезно кому-то кроме меня.

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

/etc/bird/bird.conf
log syslog all;

protocol device {
}

protocol kernel {
        ipv4 {
              import none;
        };
}

protocol kernel {
        ipv6 {
                import none;
        };
}

router id [REDACTED];

protocol bfd { };

protocol bgp {
        local [REDACTED] as 4294967294;
        neighbor [REDACTED] external;
        password "[REDACTED]";
        ipv4 {
                import none;
                export filter {
                        if proto = "noblock" then {
                                bgp_community.add((65530,255));
                                accept;
                        }
                        reject;
                };
        };
        ipv6 {
                import none;
                export filter {
                        if proto = "noblock" then {
                                bgp_community.add((65530,255));
                                accept;
                        }
                        reject;
                };
        };
        passive off;
        bfd off;
}       

protocol static noblock {
        ipv4 {
                import all;
        };
        include "/var/cache/bird/zinets";
}

/etc/cron.hourly/zinets-bird
#!/bin/sh

set -e

exec 3<$0
flock -n 3 || exit

rm -f /var/cache/bird/zinets.tmp
sudo -u bird -- /usr/local/bin/zinets bird > /var/cache/bird/zinets.tmp &&
mv /var/cache/bird/zinets.tmp /var/cache/bird/zinets &&
birdc configure
birdc show route count

/usr/local/bin/zinets
#!/bin/bash -r

if [ "${1}" != "bird" -a "${1}" != "ssacl" ]; then exit 1; fi

if [ $1 = "ssacl" ]; then echo -e '[bypass_all]\n\n[proxy_list]'; fi
curl -s https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv |
cut -d\; -f1 |
tail -n +2 |
sed 's/|/\n/g; s/[[:blank:]]//g; /^$/d;' |
sed -r '/\//!s/\.[0-9]+$/.0\/24/g;' |
sort -Vu |
aggregate -tq | {
  if [ $1 = "bird" ]; then sed 's/^.*$/route & reject;/g'; else cat; fi
}

Как hap ac2, так и hex s - спокойно используют address-lists из нескольких сотен адресов + сотни имён. Список адресов вообще пополняется сам при обнаружении отбоя от провайдера в ответ на запрос к нужному сайту. Соответственно, браузер при этом сам обновит страницу по таймауту и всё будет работать. Последующие заходы в течении месяца обновления уже не будут требовать.

Такая конфигурация будет полезна еще и для блокировок с той стороны. Я куда чаще натыкаюсь на сайты блокирующие меня по IP, нежели на что-то "роскомнадзорнутое".

Важная деталь в том, сколько этих сотен. Если это сотня или даже две, то проблем, скорее всего, не будет. А вот где-то с 300 начинаются.

Попробовал ваш список на 537 записей. Мой hex s по этому поводу особо не беспокоится, никаких лагов интерфейса или проблем с трафиком. Куча записей с низким TTL из-за чего счётчик внизу постоянно меняется - но это ни на что не влияет. Маршрутизирую в vpn через mangle и routing-mark.

Скриншот винбокса со списком и потреблением ресурсов

По своему опыту скажу, потребление ресурсов такие себе попугаи в теме адреслистов в цепочках.

У меня тоже, когда микротик был, при наполнении ничего не грузит в моменте, но по факту появилась значительная разница в задержках, появились потери, хоть и незначительные, даже если ресурс не в списках.

Копать я особо не стал тогда, переехал с ac2, потому что гигабит не вывозит даже внутри локалки по проводу без цепочек, да и wifi, понятное дело, слабое звено.

потому что гигабит не вывозит даже внутри локалки по проводу без цепочек

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

Увы и ах, я и сбрасывал его под ноль - ничего не дало, и такой же ac2 у коллеги брал - аналогичная ситуация. 500-700 на чистую держит, а дальше не хочет. В лучшем случае кратковременно пикует до 850-900, но не держит. Но при этом проц и не был нагружен хоть как-то. Я пытался разные провода юзать, тыкался по настройкам, даже с бубном танцевал, но безуспешно.

Другой роутер взял - все замечательно, честный гигабит без напряга. Ну так и не возвращался к микроту.

А на что переехали, если не секрет?

Я на кинетик гига переехал. Но сразу скажу, про кастомизации и хитрые обходы блокировок, как у микрота, можно забыть на нем. В лучшем случае wireguard в коробке. Но у меня в приоритете нормальная скорость в локалке и хороший wifi AX как минимум ( что особенно больно на микроте )

Поделитесь пожалуйста скриптом обнаружения отбоя от провайдера и добавлением адреса в adress-list?

Здесь всё будет зависеть исключительно от вашего провайдера. Запускайте wireshark, заходите на какой-нибудь запрещённый сайт и смотрите, что вам приходит в ответ. Будет пакет с tcp флагами rst и ack и каким-то размером. Ещё может отличаться TTL от честных ответов. Главное - сравните его с честным завершением соединений, чтобы не добавлялись в список адреса, доступные без vpn. Правило добавлять в mangle, в качестве action - add src to address list.

При загрузке ~8500 подсетей в список адресов стали наблюдаться проблемы в веб интерфейсе ROS7 - адреса непрерывно листаются в списке. Загрузились на CHR быстро, удалились с поиском по имени листа за секунду. Вообще, для таких экспериментов с Микротиком обзавёлся сервером x86 и лицензией, совсем другие впечатления от производительности. Только автоматизировать ничего не стал, вручную выбираю канал сети, предпочитаю видеть, к кому зашёл - включишься в обсуждение технических аспектов, начнёшь с пацанами знакомиться, а уже потом выяснится, что тебя там не ждали.

Десять тысяч подсетей в address-list нормально себя чувствуют +\-. Тут дело именно в доменах, попробуйте на CHR команду из статьи, там около 550 доменов. И потом пустите трафик через этот роутер.

Закачал список доменов на свой центральный роутер, включил mangle, только не с маркировкой, а action route на шлюз vpn, не думаю, что есть принципиальная разница для производительности. Загрузка процессора как была 0%, так и осталась. x86 - вещь. А вот список адресов в файрволле так же пляшет, даже с таким небольшим количеством в ~600 (плюс мои) адресов. Только теперь он пляшет забавно - появляются строки ip-адресов с комментариями из этих загруженных доменов, быстро листаются, сменяются загруженными доменами и снова по кругу.

PS Подключился сын к активным тестам, проц стал прыгать с 0% до 1% и иногда даже до 2%

PPS Похоже, приживётся у меня этот список, жрать не просит, сын доволен, оставлю мангл для домочадцев.

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

В пользу версии, что динамические адреса постоянно перезаписываются, ещё говорит тот факт, что удаление листа с этими адресами происходит не с первого раза, надо ловить момент без блокировки.

Записи создаются и удаляются, но они динамические - на диск не записываются. Можно проверить по /system/resources в пункте Sector writes since reboot. Ну или отключить интернет, перезагрузиться и увидеть, что этих записей нет. И не будет до тех пор, пока не появится интернет и возможность обратиться к dns серверу для определения адресов.

Да, количество секторов не меняется. При наличии этого списка адресов операционка потребляет, примерно, на 2Мб оперативы больше. Теперь мне стало интересно загрузить список в несколько десятков тысяч доменных имён)

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

Проблема в том, что у множества этих адресов стоит TTL в минуту. В итоге - каждую секунду срок жизни каких-то записей заканчивается, они убираются, роутер запрашивает новый адрес для этого имени, добавляет запись. Бонусом - глючит именно веб-интерфейс в этом месте из-за записей с несколькими адресами одновременно. Если надо именно веб-интерфейс - сортируйте его по колонке Address, дёргаться, в основном, перестанет. Но удобнее всего - воспользоваться winbox. Там этот список приносит меньше проблем, плюс можно настроить фильтр для скрытия динамических записей (чтобы остались только имена) - тогда не будет дёргаться совсем.

Спасибо! Буду пробовать, от экспериментов останавливало непонимание как именно функционируют динамические адреса, всё боялся за диск.

Добавлю, неактивированная ROS работает намного хуже, чем ожидаешь от заявленных лимитов, что CHR, что локальная - в этом причина низкой производительности у вас на CHR, сеть там еле работает, на опрос хостов скорости не хватает. На hAP ac2, думаю, всё больше упирается в скорость записи динамических адресов на флэш, она там не производительная, а адресов много.

Еще нужен сервис ресурсов, которые сами себя заблокировали для пользователей из РФ. Хотя в последнее время уже проще определить небольшой перечень ресурсов в РФ, к которым нужно ходить с российских IP, а все остальное отправить в туннель.

по моему в последних событиях массовой блокировки VPN протоколов это как раз было признаком использования VPN: когда почти весь трафик идет в один адрес. Могу, правда, ошибаться, а заново вычитывать все комментарии под теми новостями не готов )

Если я правильно понимаю, community-списки как раз эту задачу и пытаются решить

По поводу sing-box в контейнере - он работает. Правда есть проблемы со стабильностью, контейнер нужен скрипт который будет передергивать контейнер. И второй момент - сделать маршрутизацию через контейнер красиво, через mangle rule с исключениями и по портам не получится - в текущем релизе опция route в mangle сломана.

Во втором примере, где вы указывали подсети для Хабра и Леруа, у вас опечатка. Два раза одна и та же сеть указана.

На L009UiGS список РКН из 24500 хостов выгрузился довольно шустро, нагрузка на процессор 1-2%. Спасибо за статью.

за статью по микроту спасибо. а в остальном уже как год наверно сменил схему "всë без vpn, кроме по списку" на "всë через vpn, кроме по списку". на мой взгляд так намного комфортней для души и тела. список сайтов трафик к которым надо пустить без vpn намного короче чем список "через vpn". если надо то заносишь нужный сайт в список, а когда не особо надо так и шлëш лесом тех кто решил отгородиться от всего мира.

Простите мне мою нескромность.) А ещё лучше добавить в input.filters (Route Filters) несколько правил на bogon сети и свои тоже исключить. А то поймались умники с мухлежом.

Sign up to leave a comment.

Articles