У всех пользователей интернета есть мечта сделать его безопаснее и быстрее. Одним из действительно хороших инструментов для этого является сервис AdBlockPlus. Этот сервис предоставляет правила фильтрации по регулярным выражениям для вредоносного контента, например, https://easylist-downloads.adblockplus.org/malwaredomains_full.txt. Можно ли применить правила фильтрации AdBlockPlus на основе регулярных выражений в качестве базового фильтра трафика в RouterOS? Если бы такая функция появилась, мечта всех домашних пользователей роутеров наконец бы сбылась. Я бы даже за это заплатил. Дома у меня MikroTik RB951G-2HnD с RouterOS 5.26.
https://github.com/aziraphale/routeros-dns-adblock На всякий случай, если кто-то ещё наткнётся на это через поиск в Google, как и я. Как всегда, не забудьте прочитать «ReadMe», но у меня на RB450G всё отлично работает.
Да, у меня есть. Я использовал этот репозиторий, чтобы создать список почти из 52 тысяч записей. Он отлично справляется со своей задачей. Но учти, что реализация в виде статических DNS-записей жрёт кучу оперативки (около 200 МБ), поэтому на роутерах Mikrotik с малым объёмом памяти это не подходит. К тому же, после перезагрузки загрузка занимает около 10 минут, и в этот период DNS-сервис не отвечает. Из-за этого я также сделал реализацию в виде списка адресов для firewall. Она требует гораздо меньше памяти (около 50 МБ, работает на Mikrotik с 128 МБ RAM) и загрузка при перезагрузке не блокирует систему. adblock-dns.rsc adblock-addrlist.rsc
Этот список совсем не обновляется, автор называет его «списком бессмертных сайтов с вредоносным ПО/рекламой». Если хотите актуальный список с действующими на данный момент вредоносными программами и рекламоносителями, пользуйтесь этим:
Я реализовал всё, как описано в GitHub https://github.com/aziraphale/routeros-dns-adblock. Использую RB3011 и у меня 140 тысяч записей статического DNS. /ip dns print servers: 8.8.8.8 dynamic-servers: allow-remote-requests: yes max-udp-packet-size: 4096 query-server-timeout: 2s query-total-timeout: 10s cache-size: 2048KiB cache-max-ttl: 1w cache-used: 2048KiB
Статические записи выглядят примерно так (просто пример). Ниже также правило файрвола. add address=240.0.0.2 name=001soft.cn comment=adblock.prime ... (140k записей)
К сожалению, это не работает ;-( Пытаюсь понять, почему у меня всё ещё показывается реклама? Чудно, что я вообще не вижу никакого трафика по этому правилу файрвола. Помогите, пожалуйста, где я ошибся?
Возможно, стоит проверить размер вашего DNS-кеша. Я не делал точных прикидок, чтобы сказать, какой именно размер кеша нужен для почти 150 тысяч записей, но, думаю, можно попробовать увеличить его до 200 МБ для начала, а если он всё равно будет переполняться — увеличить ещё больше. На плате, которую вы используете, достаточно памяти. Кстати, считаю, что загружать простой DNS-сервис MikroTik сотнями тысяч статичных записей — ужасная идея, но поддерживаю ваш эксперимент и с удовольствием бы узнал результаты. Люди для таких задач обычно используют специализированные устройства вроде PiHole — хотя и это часто оказывается ненадёжным решением. Что касается правила файрвола, у вас неправильно указан входящий интерфейс — это должен быть интерфейс вашей локальной сети (или мастер-порт, если вы используете функцию аппаратного свича, либо бридж-интерфейс, если работаете с программным свитчингом), а не шлюзовый интерфейс.
Кто-нибудь может объяснить, как это использовать? Я хочу воспользоваться версией с автоматическим обновлением. Вижу PHP-файл, но как это внедрить в Mikrotik роутер?
Я сделал изменение, теперь у меня есть интерфейс bridge-local, но я по-прежнему не вижу заблокированный трафик по этому правилу отклонения и всё ещё вижу рекламу.
Вы увеличили размер DNS-кэша? Стандартные 2 МБ явно недостаточно для того, чего вы хотите добиться. Если вы этого не сделали, скорее всего вы не видите попаданий, потому что ваш DNS-кэш вообще не работает. Если же вы увеличили размер кэша, то другая правило файрвола мешает вашему правилу — в этом случае экспортируйте правила файрвола и вставьте их здесь в тегах.
Да, это то значение, которое нужно изменить. Проблему показывает вот это значение: cache-used: 2048KiB — это значит, что кэш заполнен и не справляется с дополнительными запросами. Можно добавить два нуля и сделать его примерно таким: cache-size: 204800KiB (то есть около 200МиБ). После изменения размера кэша следи за значением «cache-used», если оно останется таким же или увеличится совсем немного, скорее всего, придётся перезагрузить роутер.