Внести DNS-имена в hosts-файл не достаточно, т.к. Windows такой трюк раскусывает в т.ч. с помощью механизма проверки работоспособности DNS-резолвинга. Ладно, разрешение DNS-имён оставим правильным, но заблокируем на маршрутизаторе транзитный трафик для разрешённых IP-адресов.
Для asuswrt-merlin решение будет состоять из двух, работающих независимо друг от друга частей:
- часть, входящая в прошивку — блокировка нежелательного трафика с помощью (изначально пустого) набора ipset и правила iptables.
- часть из Entware — сбор IP-адресов при разрешении DNS-имён средствами ipset-dns и занесение их в набор ipset.
Подразумевается, что у вас уже настроен внешний USB-носитель для работы Entware.
Владельцам роутеров с прошивкой Padavan'а снова повезло, у них функционал ipset-dns уже есть в составе dnsmasq и никаких внешних пакетов не требуется.
Поместите в /jffs/Win10tracking.txt список хостов, подлежащих блокировке. Список ниже я брал отсюда.
Код: Выделить всё
a.ads1.msn.com
a.ads2.msads.net
a.ads2.msn.com
a.rad.msn.com
a-0001.a-msedge.net
a-0002.a-msedge.net
a-0003.a-msedge.net
a-0004.a-msedge.net
a-0005.a-msedge.net
a-0006.a-msedge.net
a-0007.a-msedge.net
a-0008.a-msedge.net
a-0009.a-msedge.net
ac3.msn.com
ad.doubleclick.net
adnexus.net
adnxs.com
ads.msn.com
ads1.msads.net
ads1.msn.com
aidps.atdmt.com
aka-cdn-ns.adtech.de
a-msedge.net
apps.skype.com
az361816.vo.msecnd.net
az512334.vo.msecnd.net
b.ads1.msn.com
b.ads2.msads.net
b.rad.msn.com
bs.serving-sys.com
c.atdmt.com
c.msn.com
cdn.atdmt.com
cds26.ams9.msecn.net
choice.microsoft.com
choice.microsoft.com.nsatc.net
compatexchange.cloudapp.net
corp.sts.microsoft.com
corpext.msitadfs.glbdns2.microsoft.com
cs1.wpc.v0cdn.net
db3aqu.atdmt.com
df.telemetry.microsoft.com
diagnostics.support.microsoft.com
ec.atdmt.com
fe2.update.microsoft.com.akadns.net
feedback.microsoft-hohm.com
feedback.search.microsoft.com
feedback.windows.com
flex.msn.com
g.msn.com
h1.msn.com
i1.services.social.microsoft.com
i1.services.social.microsoft.com.nsatc.net
lb1.www.ms.akadns.net
live.rads.msn.com
m.adnxs.com
m.hotmail.com
msedge.net
msftncsi.com
msnbot-65-55-108-23.search.msn.com
msntest.serving-sys.com
oca.telemetry.microsoft.com
oca.telemetry.microsoft.com.nsatc.net
pre.footprintpredict.com
preview.msn.com
pricelist.skype.com
rad.live.com
rad.msn.com
redir.metaservices.microsoft.com
reports.wes.df.telemetry.microsoft.com
s.gateway.messenger.live.com
s0.2mdn.net
schemas.microsoft.akadns.net
secure.adnxs.com
secure.flashtalking.com
services.wes.df.telemetry.microsoft.com
settings-sandbox.data.microsoft.com
settings-win.data.microsoft.com
sls.update.microsoft.com.akadns.net
sqm.df.telemetry.microsoft.com
sqm.telemetry.microsoft.com
sqm.telemetry.microsoft.com.nsatc.net
static.2mdn.net
statsfe1.ws.microsoft.com
statsfe2.update.microsoft.com.akadns.net
statsfe2.ws.microsoft.com
survey.watson.microsoft.com
telecommand.telemetry.microsoft.com
telecommand.telemetry.microsoft.com.nsatc.net
telemetry.appex.bing.net
telemetry.microsoft.com
telemetry.urs.microsoft.com
view.atdmt.com
vortex.data.microsoft.com
vortex-bn2.metron.live.com.nsatc.net
vortex-cy2.metron.live.com.nsatc.net
vortex-sandbox.data.microsoft.com
vortex-win.data.microsoft.com
watson.live.com
watson.microsoft.com
watson.ppe.telemetry.microsoft.com
watson.telemetry.microsoft.com
watson.telemetry.microsoft.com.nsatc.net
wes.df.telemetry.microsoft.com
www.msftncsi.com
Для dnsmasq надо указать разрешать эти имена через наш отдельный резолвер. В /jffs/scripts/firewall-start внесите следующее содержимое:
Код: Выделить всё
#!/bin/sh
DNSMASQ_CFG=/jffs/configs/dnsmasq.conf.add
if [ ! -f $DNSMASQ_CFG ] || [ "$(grep Win10tracking $DNSMASQ_CFG)" = "" ];
then
rm -f $DNSMASQ_CFG
for i in `cat /jffs/Win10tracking.txt`;
do
echo "server=/$i/127.0.0.1#1919" >> >> $DNSMASQ_CFG
done
service restart_dnsmasq
fi
# Load ipset modules
lsmod | grep "ipt_set" > /dev/null 2>&1 || \
for module in ip_set ip_set_nethash ip_set_iphash ipt_set
do
insmod $module
done
# Create ip set
if [ "$(ipset --swap Win10tracking Win10tracking 2>&1 | grep 'Unknown set')" != "" ];
then
ipset -N Win10tracking iphash
fi
# Apply iptables rule
iptables-save | grep Win10tracking > /dev/null 2>&1 || \
iptables -I FORWARD -m set --set Win10tracking src,dst -j DROP
И создайте для его автоматического запуска скрипт /opt/etc/init.d/S01ipset-dns со следующим содержимым:
Код: Выделить всё
#!/bin/sh
ENABLED=yes
PROCS=ipset-dns
ARGS="Win10tracking Win10tracking 1919 8.8.8.8"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
. /opt/etc/init.d/rc.func
Не забудьте сделать созданные скрипты исполняемыми и перегрузите роутер:
Код: Выделить всё
chmod +x /jffs/scripts/firewall-start
chmod +x /opt/etc/init.d/S01ipset-dns
reboot
Проверить работоспособность решения можно следующим образом. Попытайтесь в браузере открыть один из перечисленных сайтов, например view.atdmt.com, затем проверьте, что набор ipset наполняется содержимым, у меня на текущий момент:
Код: Выделить всё
# ipset --list Win10tracking
Name: Win10tracking
Type: iphash
References: 1
Header: hashsize: 1024 probes: 8 resize: 50
Members:
37.29.19.96
65.55.252.92
37.29.19.89
131.107.255.255
37.29.19.73
191.232.139.253
191.232.139.254