Я бы выбрал фильтр на основе DNS или iptables, решения с Squid блокируют трафик только для HTTP и при этом больше нагружают ресурсы (например, если вы заходите на YouTube, то большинство рекламы сейчас идёт по HTTPS, и поэтому squidguard или любое решение на Squid без HTTPS-прокси бесполезны. Кстати, HTTPS-прокси на Squid — очень сложные и ресурсозатратные решения, которые не подойдут для ваших устройств ER/USG). Моё мнение. На этих форумах есть пример скрипта для dnsmasq, который блокирует рекламу и вредоносные сайты через dnsmasq. Следующий шаг — заставить DNS-трафик проходить через правила dest nat. Вот мои советы, чтобы всё запустить:
Залогиньтесь на ваш роутер edgeos через SSH и станьте root (sudo bash или sudo -i):
Создайте файл с помощью vim /config/user-data/block-ads.sh со следующим содержимым:
#!/bin/bash
if grep -q adblock /var/spool/cron/cron-tabs/root
then
echo "Cron OK"
else
echo "0 3 * * 0 /config/user-data/update-adblock-dnsmasq.sh" >> /var/spool/cron/crontabs/root
fi
ad_file="/etc/dnsmasq.d/dnsmasq.adlist.conf"
temp_ad_file="/etc/dnsmasq.d/dnsmasq.adlist.conf.tmp"
# забираем два hosts файла с адресом 127.0.0.1, отбираем только списки блокировки рекламы и записываем в временный файл
curl -s "http://hosts-file.net/ad_servers.txt" "http://www.malwaredomainlist.com/hostslist/hosts.txt" | grep -w ^127.0.0.1$'(\t| )' | sed 's/^127.0.0.1\s\{1,\}//' > $temp_ad_file
# забираем ещё два hosts файла с адресом 0.0.0.0, отбираем списки рекламы, убираем пробелы в конце некоторых строк и добавляем в временный файл
curl -s "http://winhelp2002.mvps.org/hosts.txt" "http://someonewhocares.org/hosts/zero/hosts" | grep -w ^0.0.0.0 | cut -c 9- | sed 's/\s\{1,\}.*//' >> $temp_ad_file
# удаляем символы возврата каретки в конце каждой строки и преобразуем формат в формат Dnsmasq
sed -i -e 's/\r$//; s:.*:address=/&/0\.0\.0\.0:' $temp_ad_file
# загружаем ещё один hosts файл в формате Dnsmasq и добавляем содержимое в временный файл
curl -s "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=dnsmasq&showintro=0&mimetype=plaintext&useip=0.0.0.0" >> $temp_ad_file
if [ -ф "$temp_ad_file" ]
then
# сортируем список рекламы во временном файле и удаляем дубли строк
sort -o $temp_ad_file -t '/' -uk2 $temp_ad_file
# раскомментируйте и измените строку ниже, если хотите исключить любимые сайты из списка блокировки
sed -i -e '/spclient\.wg\.spotify\.com/d' $temp_ad_file
mv $temp_ad_file $ad_file
else
echo "Ошибка при формировании списка рекламы, попробуйте снова."
exit
fi
#
## добавим несколько специфических хостов
#
echo 'address=/aa.i-stream.pl/0.0.0.0' >> $ad_file
#
## перезапускаем dnsmasq
/etc/init.d/dnsmasq force-reload
Далее: chmod +x /config/user-data/block-ads.sh; /config/user-data/block-ads.sh
Скрипт запущен и добавлен в cron.
Теперь заставим весь DNS-трафик из нашей LAN/Guest-LAN проходить через наш собственный dnsmasq:
rule 1 {
description "Force DNS"
destination {
port 53
}
inbound-interface eth0
inside-address {
address 192.168.1.1
port 53
}
log disable
protocol tcp_udp
source {
address 192.168.1.0/24
}
type destination
}
rule 2 {
description "Force DNS"
destination {
port 53
}
inbound-interface switch0
inside-address {
address 192.168.2.1
port 53
}
log disable
protocol tcp_udp
source {
address 192.168.2.0/24
}
type destination
}
Вы можете создать эту конфигурацию, зайдя через SSH и используя команду configure, потом:
set service nat rule 1
set service nat rule 1 description "Force DNS"
set service nat rule 1 destination port 53
set service nat rule 1 inbound-interface eth0
set service nat rule 1 inside-address address 192.168.1.1
set service nat rule 1 inside-address port 53
set service nat rule 1 log disable
set service nat rule 1 protocol tcp_udp
set service nat rule 1 source address 192.168.1.0/24
set service nat rule 1 type destination
commit
save
Для вашего свитч-бриджа или других интерфейсов можно сделать то же самое (возможно, потребуется изменить номер правила, интерфейс и подсеть под вашу конфигурацию).
Это блокирует много рекламы и вредоносных сайтов через dnsmasq.
Ещё я увеличиваю размер кэша dnsmasq по умолчанию с 150 записей примерно до 500:
set service dns forwarding cache-size 500
Обожаю кэшировать 99% запрашиваемых хостов — это немного ускоряет интернет 😀
Надеюсь, это поможет.