Comments 37
Пример второй. Сайт 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
Из собственного опыта
address-lists на таком кол-ве префисков - редкое извращение, даже без ресолвинга :) Не вижу вообще никакого смысла. Если не устраивают готовые списки от сторонних BGP - ничто не мешает поднять свой BGP-сервер на любой виртуалке, там формировать нужные списки, а на микроте получать их всё же по BGP. Я так и делаю, свой bird простым скриптом собирает списки от antifilter, вручную добавленные IP, домены, подсети и даже целые AS, базы GeoIP, объединяет (чтобы не было повторов и пересечений по разным критериям), раскладывает их по communities в зав-ти от того, через что надо куда ходить (у меня 3 точки выхода - Голландия, Турция и Россия) и раздаёт всем моим роутерам/серверам.
Микротик RB3011 (1Gb RAM) уже совершенно без проблем вытягивает все префиксы без суммаризации. Но когда несколько лет назад в погоне за Телеграмом префиксов было в пике 1,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, но не держит. Но при этом проц и не был нагружен хоть как-то. Я пытался разные провода юзать, тыкался по настройкам, даже с бубном танцевал, но безуспешно.
Другой роутер взял - все замечательно, честный гигабит без напряга. Ну так и не возвращался к микроту.
А на что переехали, если не секрет?
Поделитесь пожалуйста скриптом обнаружения отбоя от провайдера и добавлением адреса в 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-списки как раз эту задачу и пытаются решить
Списки уже давно есть и вовсю используются. В статье про них речь. https://community.antifilter.download/
https://github.com/itdoginfo/allow-domains/blob/main/Russia/inside-raw.lst
По поводу sing-box в контейнере - он работает. Правда есть проблемы со стабильностью, контейнер нужен скрипт который будет передергивать контейнер. И второй момент - сделать маршрутизацию через контейнер красиво, через mangle rule с исключениями и по портам не получится - в текущем релизе опция route в mangle сломана.
Во втором примере, где вы указывали подсети для Хабра и Леруа, у вас опечатка. Два раза одна и та же сеть указана.
На L009UiGS список РКН из 24500 хостов выгрузился довольно шустро, нагрузка на процессор 1-2%. Спасибо за статью.
за статью по микроту спасибо. а в остальном уже как год наверно сменил схему "всë без vpn, кроме по списку" на "всë через vpn, кроме по списку". на мой взгляд так намного комфортней для души и тела. список сайтов трафик к которым надо пустить без vpn намного короче чем список "через vpn". если надо то заносишь нужный сайт в список, а когда не особо надо так и шлëш лесом тех кто решил отгородиться от всего мира.
Простите мне мою нескромность.) А ещё лучше добавить в input.filters (Route Filters) несколько правил на bogon сети и свои тоже исключить. А то поймались умники с мухлежом.
В текущей бета версии ROS 7.16b3 завезли
*) dns - added support for DoH with static FWD entries;
и это работает!
Добавить можно даже и лучше DoH:
/ip/dns/static add address-list=to_vpn forward-to=https://1.0.0.1/dns-query match-subdomain=yes name=site.org type=FWD
Так же можно форвардить на localhost, если DoH уже настроен как основной.
Ответьте, кто может на нубский вопрос.. Настроил ROS по минимуму - никаких наворотов, только обычные правила по разрешению всего что нужно и отсечке всего остального. Подключение к провайдеру по dhcp. и вдруг доступа ни к одному сайту нет. И из микрота с терминала пинги по имени (гугла например) - нет! И так и говорит - не удалось получить адрес от днс сервера! А по ip пинги идут! В ip>dns отображаются dynamic servers провайдера... но не резолвят адреса.. И самое интересное, что если в dhcp client отключить use peer dns, а в ip>dns добавить вручную ip каких-нить dns гугла или клаудфлаера, то мгновенно всё резолвит и работает!!! А еще если там же вкючить какой-нить сервер DoH, то опять перестает резолвить! Переключаю кабель от провайдера на другой микротик (с такой же конфигурацией, но с версией ROS 6,49) - всё работает! Втыкаю назад в микрот с ROS 7.14 - не работает.. Что я делаю не так???
Точечная маршрутизация на Mikrotik: BGP и Address lists + Mangle. Реализация через домены